rsx: Track BX2 reads per-TIU to allow enabling/disabling hw remapping

This commit is contained in:
kd-11 2026-02-22 22:30:46 +03:00 committed by kd-11
parent 34380b1ee7
commit bf5056145e
3 changed files with 3 additions and 3 deletions

View file

@ -651,7 +651,7 @@ fragment_program_utils::fragment_program_metadata fragment_program_utils::analys
case RSX_FP_OPCODE_TXB:
case RSX_FP_OPCODE_TXL:
result.referenced_textures_mask |= (1 << d0.tex_num);
result.has_tex_bx2_conv |= !!d0.exp_tex;
result.bx2_texture_reads_mask |= ((d0.exp_tex ? 1u : 0u) << d0.tex_num);
break;
case RSX_FP_OPCODE_PK4:
case RSX_FP_OPCODE_UP4:

View file

@ -56,10 +56,10 @@ namespace program_hash_util
u32 program_ucode_length;
u32 program_constants_buffer_length;
u16 referenced_textures_mask;
u16 bx2_texture_reads_mask;
bool has_pack_instructions;
bool has_branch_instructions;
bool has_tex_bx2_conv;
bool is_nop_shader; // Does this affect Z-pass testing???
};

View file

@ -2326,7 +2326,7 @@ namespace rsx
texture_control |= format_ex.texel_remap_control;
texture_control |= format_ex.features << texture_control_bits::FORMAT_FEATURES_OFFSET;
if (current_fp_metadata.has_tex_bx2_conv)
if (current_fp_metadata.bx2_texture_reads_mask)
{
const u32 remap_hi = tex.decoded_remap().shuffle_mask_bits(0xFu);
current_fragment_program.texture_params[i].remap &= ~(0xFu << 16u);