mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-07 13:39:55 +00:00
A resource block behind v_cmpx_gt_u32 exec, s, v0 and s_cbranch_execz keeps its condition only if the compare can decide it, but UGreaterThan32 and ULessThan32 needed both operands and v0 is a lane value. When the uniform operand is 0 (or 0xffffffff on the other side) no lane can pass the compare, so the walk can skip the block without the lane value. UGreaterThan32 now yields false when its first operand is 0 or its second is 0xffffffff, and ULessThan32 when its first is 0xffffffff or its second is 0, in the SRT interpreter and in the SRT tape alike; MayDecide keeps such a condition when either operand is evaluable. Fully evaluable compares are unchanged. Destruction AllStars (PPSA02630) dispatches compute shader 0x200a220000 with a thread count of 0 and leaves the V# in the skipped block stale (one dispatch holds 00000000 00000000 00000000 ffffffff), which stopped it at about 40 s with "buffer descriptor uses an unsupported type". Co-Authored-By: Claude Opus 5.5 <[email protected]>