yuzu-emu
/
yuzu
Archived
1
0
Fork 0

Merge pull request #2692 from ReinUsesLisp/tlds-f16

shader/texture: Add F16 support for TLDS
This commit is contained in:
Fernando Sahmkow 2019-07-14 08:44:38 -04:00 committed by GitHub
commit 0ec9da2f9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 2 deletions

View File

@ -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.
@ -1776,7 +1777,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"),

View File

@ -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: