More shader tweaks

This commit is contained in:
Luke Usher 2018-11-17 23:32:02 +00:00
parent 75a8b54e19
commit 21632e0eae
1 changed files with 5 additions and 3 deletions

View File

@ -1519,9 +1519,11 @@ static boolean VshConvertShader(VSH_XBOX_SHADER *pShader,
// The PC shader assembler doesn't like masks on scalar registers
VshSetOutputMask(&pIntermediate->Output, TRUE, TRUE, TRUE, TRUE);
// Fix when mad to a scaler input does not use a replicate swizzle
// Test case: Panzer Dragoon Orta
if (pIntermediate->InstructionType == IMD_MAC && pIntermediate->MAC == MAC_MAD) {
// Fix when mad or mov to a scaler input does not use a replicate swizzle
// MAD Test case: Panzer Dragoon Orta
// MOV Test case: DOA3
if ((pIntermediate->InstructionType == IMD_MAC && pIntermediate->MAC == MAC_MAD) ||
(pIntermediate->InstructionType == IMD_MAC && pIntermediate->MAC == MAC_MOV)) {
// Clear all but the first swizzle for each parameter
// TODO: Is this sufficient? Perhaps we need to be smart about which swizzle to select
for (int param = 0; param < 3; param++) {