PixelShader : Repeat cleanup of useless writes and nops until no more modifications are done, so that cascading effects are handled too.

This commit is contained in:
PatrickvL 2018-04-09 18:55:40 +02:00
parent eb900b9713
commit 6e8248cd5c
1 changed files with 8 additions and 2 deletions

View File

@ -2164,8 +2164,11 @@ PSH_RECOMPILED_SHADER PSH_XBOX_SHADER::Decode(XTL::X_D3DPIXELSHADERDEF *pPSDef)
if (RemoveNops())
Log("RemoveNops");
while (RemoveUselessWrites())
while (RemoveUselessWrites()) {
Log("RemoveUselessWrites");
if (RemoveNops())
Log("RemoveNops");
}
if (ConvertConstantsToNative(pPSDef, /*Recompiled=*/&Result))
Log("ConvertConstantsToNative");
@ -2173,8 +2176,11 @@ PSH_RECOMPILED_SHADER PSH_XBOX_SHADER::Decode(XTL::X_D3DPIXELSHADERDEF *pPSDef)
ConvertXboxOpcodesToNative(pPSDef);
Log("ConvertXboxOpcodesToNative");
while (RemoveUselessWrites()) // again
while (RemoveUselessWrites()) { // again
Log("RemoveUselessWrites");
if (RemoveNops())
Log("RemoveNops");
}
// Resolve all differences :
if (FixupPixelShader())