3
0
Fork 0
forked from suyu/suyu

Merge pull request #3054 from FernandoS27/fix-tld4-2

shader_ir: Fix regression on TLD4
This commit is contained in:
Rodrigo Locatti 2019-10-31 01:56:29 +00:00 committed by GitHub
commit 11e39da02b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 5 deletions

View file

@ -119,7 +119,7 @@ u32 ShaderIR::DecodeTexture(NodeBlock& bb, u32 pc) {
: instr.tld4.UsesMiscMode(TextureMiscMode::AOFFI); : instr.tld4.UsesMiscMode(TextureMiscMode::AOFFI);
WriteTexInstructionFloat( WriteTexInstructionFloat(
bb, instr, bb, instr,
GetTld4Code(instr, texture_type, depth_compare, is_array, is_aoffi, is_bindless), true); GetTld4Code(instr, texture_type, depth_compare, is_array, is_aoffi, is_bindless));
break; break;
} }
case OpCode::Id::TLD4S: { case OpCode::Id::TLD4S: {
@ -366,11 +366,10 @@ const Sampler& ShaderIR::GetBindlessSampler(const Tegra::Shader::Register& reg,
return *used_samplers.emplace(entry).first; return *used_samplers.emplace(entry).first;
} }
void ShaderIR::WriteTexInstructionFloat(NodeBlock& bb, Instruction instr, const Node4& components, void ShaderIR::WriteTexInstructionFloat(NodeBlock& bb, Instruction instr, const Node4& components) {
bool is_tld4) {
u32 dest_elem = 0; u32 dest_elem = 0;
for (u32 elem = 0; elem < 4; ++elem) { for (u32 elem = 0; elem < 4; ++elem) {
if (!is_tld4 && !instr.tex.IsComponentEnabled(elem)) { if (!instr.tex.IsComponentEnabled(elem)) {
// Skip disabled components // Skip disabled components
continue; continue;
} }

View file

@ -326,7 +326,7 @@ private:
Node BitfieldInsert(Node base, Node insert, u32 offset, u32 bits); Node BitfieldInsert(Node base, Node insert, u32 offset, u32 bits);
void WriteTexInstructionFloat(NodeBlock& bb, Tegra::Shader::Instruction instr, void WriteTexInstructionFloat(NodeBlock& bb, Tegra::Shader::Instruction instr,
const Node4& components, bool is_tld4 = false); const Node4& components);
void WriteTexsInstructionFloat(NodeBlock& bb, Tegra::Shader::Instruction instr, void WriteTexsInstructionFloat(NodeBlock& bb, Tegra::Shader::Instruction instr,
const Node4& components, bool ignore_mask = false); const Node4& components, bool ignore_mask = false);