diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/engines/shader_bytecode.h | 3 | ||||
| -rw-r--r-- | src/video_core/shader/decode/texture.cpp | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h index c3055602b..4aaad2979 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h | |||
| @@ -1278,6 +1278,7 @@ union Instruction { | |||
| 1278 | union { | 1278 | union { |
| 1279 | BitField<49, 1, u64> nodep_flag; | 1279 | BitField<49, 1, u64> nodep_flag; |
| 1280 | BitField<53, 4, u64> texture_info; | 1280 | BitField<53, 4, u64> texture_info; |
| 1281 | BitField<59, 1, u64> fp32_flag; | ||
| 1281 | 1282 | ||
| 1282 | TextureType GetTextureType() const { | 1283 | TextureType GetTextureType() const { |
| 1283 | // The TLDS instruction has a weird encoding for the texture type. | 1284 | // The TLDS instruction has a weird encoding for the texture type. |
| @@ -1776,7 +1777,7 @@ private: | |||
| 1776 | INST("1101111101010---", Id::TXQ_B, Type::Texture, "TXQ_B"), | 1777 | INST("1101111101010---", Id::TXQ_B, Type::Texture, "TXQ_B"), |
| 1777 | INST("1101-00---------", Id::TEXS, Type::Texture, "TEXS"), | 1778 | INST("1101-00---------", Id::TEXS, Type::Texture, "TEXS"), |
| 1778 | INST("11011100--11----", Id::TLD, Type::Texture, "TLD"), | 1779 | INST("11011100--11----", Id::TLD, Type::Texture, "TLD"), |
| 1779 | INST("1101101---------", Id::TLDS, Type::Texture, "TLDS"), | 1780 | INST("1101-01---------", Id::TLDS, Type::Texture, "TLDS"), |
| 1780 | INST("110010----111---", Id::TLD4, Type::Texture, "TLD4"), | 1781 | INST("110010----111---", Id::TLD4, Type::Texture, "TLD4"), |
| 1781 | INST("1101111100------", Id::TLD4S, Type::Texture, "TLD4S"), | 1782 | INST("1101111100------", Id::TLD4S, Type::Texture, "TLD4S"), |
| 1782 | INST("110111110110----", Id::TMML_B, Type::Texture, "TMML_B"), | 1783 | INST("110111110110----", Id::TMML_B, Type::Texture, "TMML_B"), |
diff --git a/src/video_core/shader/decode/texture.cpp b/src/video_core/shader/decode/texture.cpp index cb480be9b..323be3f14 100644 --- a/src/video_core/shader/decode/texture.cpp +++ b/src/video_core/shader/decode/texture.cpp | |||
| @@ -269,7 +269,13 @@ u32 ShaderIR::DecodeTexture(NodeBlock& bb, u32 pc) { | |||
| 269 | LOG_WARNING(HW_GPU, "TLDS.NODEP implementation is incomplete"); | 269 | LOG_WARNING(HW_GPU, "TLDS.NODEP implementation is incomplete"); |
| 270 | } | 270 | } |
| 271 | 271 | ||
| 272 | WriteTexsInstructionFloat(bb, instr, GetTldsCode(instr, texture_type, is_array)); | 272 | const Node4 components = GetTldsCode(instr, texture_type, is_array); |
| 273 | |||
| 274 | if (instr.tlds.fp32_flag) { | ||
| 275 | WriteTexsInstructionFloat(bb, instr, components); | ||
| 276 | } else { | ||
| 277 | WriteTexsInstructionHalfFloat(bb, instr, components); | ||
| 278 | } | ||
| 273 | break; | 279 | break; |
| 274 | } | 280 | } |
| 275 | default: | 281 | default: |