mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-08 16:01:42 +12:00
rsx: Ignore FENCE instruction as it seems like its ignored on realhw
- This is likely a compiler hint for performance reasons and not a mandate
This commit is contained in:
parent
8b4836a12f
commit
3c9126d91f
1 changed files with 6 additions and 15 deletions
|
@ -735,21 +735,12 @@ std::string FragmentProgramDecompiler::Decompile()
|
||||||
if (SIP()) break;
|
if (SIP()) break;
|
||||||
if (handle_tex_srb(opcode)) break;
|
if (handle_tex_srb(opcode)) break;
|
||||||
|
|
||||||
if (forced_unit == FORCE_NONE)
|
//FENCT/FENCB do not actually reject instructions if they dont match the forced unit
|
||||||
{
|
//Tested with Dark Souls II where the repecting FENCX instruction will result in empty luminance averaging shaders
|
||||||
if (handle_sct(opcode)) break;
|
//TODO: More reasearch is needed to determine what real HW does
|
||||||
if (handle_scb(opcode)) break;
|
if (handle_sct(opcode)) break;
|
||||||
}
|
if (handle_scb(opcode)) break;
|
||||||
else if (forced_unit == FORCE_SCT)
|
forced_unit = FORCE_NONE;
|
||||||
{
|
|
||||||
forced_unit = FORCE_NONE;
|
|
||||||
if (handle_sct(opcode)) break;
|
|
||||||
}
|
|
||||||
else if (forced_unit == FORCE_SCB)
|
|
||||||
{
|
|
||||||
forced_unit = FORCE_NONE;
|
|
||||||
if (handle_scb(opcode)) break;
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG_ERROR(RSX, "Unknown/illegal instruction: 0x%x (forced unit %d)", opcode, prev_force_unit);
|
LOG_ERROR(RSX, "Unknown/illegal instruction: 0x%x (forced unit %d)", opcode, prev_force_unit);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue