RSX: Fix SAT and ABS order - #19326
Conversation
|
Fixes #19258 |
|
Doesn't effect #18452 |
kd-11
left a comment
There was a problem hiding this comment.
The hwtest provided is too narrow, it only proves the fix is correct for this one scenario. Instead of only having the visual confirmation mode, have the test output a data dump, multiple scenarios per input. This is an instruction ISA fix afterall so we have to check everything, not just abs and sat on one instruction.
Dump the output via TTY (see #19214 or #18171 for examples) and have it check all possibilities. From zeroes to infinity, -infinity, nan, etc and also covering multiple instructions (ideally most of them). That way when we commit it to automated testing, it will cover not only this game but every other game.
There are many questions here that need answering:
- Is the order of modifiers we apply correct for the other instructions? Most of that work was reversed by using game shaders and was never verified on real hardware either.
- Is it only divsq affected? What about other scalar instructions? Do they also have the same behavior?
- What happens when divsq is called with +inf,-inf, qnan? Are modifiers ignored?
fe70af0 to
6e089a3
Compare
|
Updated the hwtest covering the scalar instructions + all the other stuff. The tldr is basically: Real RSX does SAT before ABS/NEG. Some inputs just happen to give the same result either way. The other scalar instructions i tested also all behave the same way. DIVSQ LEFT -inf: MASTER FAIL | OLD PR PASS | UPDATED PR PASS |

Real RSX applies the SAT modifier before ABS
Fixes #19258
hwtest:
tm-source-modifiers.zip