rsx/cfg/fp: Rewrite fragment program decompiler dependency tracking - #17837
Conversation
|
There's an issue with epilogue injection before loop and branch blocks to be fixed. |
|
I need to handle IF-ELSE successor to merge block with input dependency. |
This comment was marked as outdated.
This comment was marked as outdated.
|
Fixes #6229 indeed, both flickering surfaces and wierd shading |
|
Most of builds didn't compile |
Its just FreeBSD that failed.. click the X icon and you will see everything else succeeds |
|
This is now in a reasonable state. Feel free to check more games. |
|
I did test a couple with no real improvement than ones mentioned. Is there any behaviour i look out for having improved behaviour. Most games I've tested spu or buffer related so saw no improvement i go through my issues. If nothing to note, l will just comment tested games. great work as always kd👍 |
|
If no difference is observed that is also a win. The rewrite is very extensive so observing no change is a positive outcome. |
|
Briefly tested Dante's Inferno. Crashed once very early on but couldn't reproduce it again. |
This work does not interact with RSX's host subsystems in such a way. Only recompiled PS3 shaders are changed and those certainly do not care about things like memory streaming. Memory decoding shaders are separate and unaffected. |
… (ELSE). - In that case, find the node's END node and link to that instead. ELSE nodes are not reachable from children of the preceding IF. - ELSE nodes are special this way, all other types of nodes are reachable by adjacency.
…ed for a single instruction
- Reduces emitted barriers by like 99%
|
good. As a separate bug (present also on master), |
… index but different precision.
Blue text is fixed, it was a regression from one of the optimizations. As for the flickering - this game has a custom occlusion implementation that uses compute which on PS3 is indistinguishable from normal render passes. You can use resolution scale, but of course you just cannot upscale an occlusion pass output since it contains discrete data. You need to set the threshold to something like 256x256 to avoid touching it (the VRAM resource for the compute pass is 256x128 in size) |
|
ok, text is now fixed. There is some flickering (same place of screenshot) as in master. I'm using only RWCB. Tried Threshold 256x256 even without RS but that issue is still present. However it is also present on master (not a regression on this PR) |







Rewrites everything about how we determine aliasing register dependencies making use of the CFG. Everything is also unit tested for sanity reasons.
This should help close out graphics glitches that make no sense in some titles with the capacity left to diagnose more bugs in future easily and add custom passes to handle requirements.
Closes #6897
Closes #6229