mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-12-24 10:23:01 -06:00
shader/texture: Add F16 support for TLDS
This commit is contained in:
parent
9e689a81f8
commit
d0966b9f7c
2 changed files with 9 additions and 2 deletions
|
@ -1278,6 +1278,7 @@ union Instruction {
|
||||||
union {
|
union {
|
||||||
BitField<49, 1, u64> nodep_flag;
|
BitField<49, 1, u64> nodep_flag;
|
||||||
BitField<53, 4, u64> texture_info;
|
BitField<53, 4, u64> texture_info;
|
||||||
|
BitField<59, 1, u64> fp32_flag;
|
||||||
|
|
||||||
TextureType GetTextureType() const {
|
TextureType GetTextureType() const {
|
||||||
// The TLDS instruction has a weird encoding for the texture type.
|
// The TLDS instruction has a weird encoding for the texture type.
|
||||||
|
@ -1760,7 +1761,7 @@ private:
|
||||||
INST("1101111101010---", Id::TXQ_B, Type::Texture, "TXQ_B"),
|
INST("1101111101010---", Id::TXQ_B, Type::Texture, "TXQ_B"),
|
||||||
INST("1101-00---------", Id::TEXS, Type::Texture, "TEXS"),
|
INST("1101-00---------", Id::TEXS, Type::Texture, "TEXS"),
|
||||||
INST("11011100--11----", Id::TLD, Type::Texture, "TLD"),
|
INST("11011100--11----", Id::TLD, Type::Texture, "TLD"),
|
||||||
INST("1101101---------", Id::TLDS, Type::Texture, "TLDS"),
|
INST("1101-01---------", Id::TLDS, Type::Texture, "TLDS"),
|
||||||
INST("110010----111---", Id::TLD4, Type::Texture, "TLD4"),
|
INST("110010----111---", Id::TLD4, Type::Texture, "TLD4"),
|
||||||
INST("1101111100------", Id::TLD4S, Type::Texture, "TLD4S"),
|
INST("1101111100------", Id::TLD4S, Type::Texture, "TLD4S"),
|
||||||
INST("110111110110----", Id::TMML_B, Type::Texture, "TMML_B"),
|
INST("110111110110----", Id::TMML_B, Type::Texture, "TMML_B"),
|
||||||
|
|
|
@ -269,7 +269,13 @@ u32 ShaderIR::DecodeTexture(NodeBlock& bb, u32 pc) {
|
||||||
LOG_WARNING(HW_GPU, "TLDS.NODEP implementation is incomplete");
|
LOG_WARNING(HW_GPU, "TLDS.NODEP implementation is incomplete");
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteTexsInstructionFloat(bb, instr, GetTldsCode(instr, texture_type, is_array));
|
const Node4 components = GetTldsCode(instr, texture_type, is_array);
|
||||||
|
|
||||||
|
if (instr.tlds.fp32_flag) {
|
||||||
|
WriteTexsInstructionFloat(bb, instr, components);
|
||||||
|
} else {
|
||||||
|
WriteTexsInstructionHalfFloat(bb, instr, components);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in a new issue