rsx: Track BX2 reads per-TIU to allow enabling/disabling hw remapping
This commit is contained in:
@@ -651,7 +651,7 @@ fragment_program_utils::fragment_program_metadata fragment_program_utils::analys
|
|||||||
case RSX_FP_OPCODE_TXB:
|
case RSX_FP_OPCODE_TXB:
|
||||||
case RSX_FP_OPCODE_TXL:
|
case RSX_FP_OPCODE_TXL:
|
||||||
result.referenced_textures_mask |= (1 << d0.tex_num);
|
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;
|
break;
|
||||||
case RSX_FP_OPCODE_PK4:
|
case RSX_FP_OPCODE_PK4:
|
||||||
case RSX_FP_OPCODE_UP4:
|
case RSX_FP_OPCODE_UP4:
|
||||||
|
|||||||
@@ -56,10 +56,10 @@ namespace program_hash_util
|
|||||||
u32 program_ucode_length;
|
u32 program_ucode_length;
|
||||||
u32 program_constants_buffer_length;
|
u32 program_constants_buffer_length;
|
||||||
u16 referenced_textures_mask;
|
u16 referenced_textures_mask;
|
||||||
|
u16 bx2_texture_reads_mask;
|
||||||
|
|
||||||
bool has_pack_instructions;
|
bool has_pack_instructions;
|
||||||
bool has_branch_instructions;
|
bool has_branch_instructions;
|
||||||
bool has_tex_bx2_conv;
|
|
||||||
bool is_nop_shader; // Does this affect Z-pass testing???
|
bool is_nop_shader; // Does this affect Z-pass testing???
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2326,7 +2326,7 @@ namespace rsx
|
|||||||
texture_control |= format_ex.texel_remap_control;
|
texture_control |= format_ex.texel_remap_control;
|
||||||
texture_control |= format_ex.features << texture_control_bits::FORMAT_FEATURES_OFFSET;
|
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);
|
const u32 remap_hi = tex.decoded_remap().shuffle_mask_bits(0xFu);
|
||||||
current_fragment_program.texture_params[i].remap &= ~(0xFu << 16u);
|
current_fragment_program.texture_params[i].remap &= ~(0xFu << 16u);
|
||||||
|
|||||||
Reference in New Issue
Block a user