Repository navigation
fix(shader): accept signed less-than in runtime SRT values - #3807
Merged
adriadam10 merged 1 commit intoOct 11, 2026
Merged
adriadam10 merged 1 commit into
adriadam10 merged 1 commit into
Conversation
#2072 taught the SRT evaluator SLessThan32, but IsRuntimeUniformOp still left it out, so the runtime validator rejected any descriptor dword computed through a signed comparison before the evaluator could compute it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
9 tasks done
Collaborator
|
Checked the build and |
9 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
#2072 taught the SRT evaluator (
SrtEvaluator.cpp) to computeSLessThan32, butIsRuntimeUniformOp(SrtInstructionPredicates.cpp) still leaves it out. So the runtime validator (SrtRuntimeValidator.cpp) rejects any descriptor dword computed through a signed comparison before the evaluator ever sees it.SLessThan32was the only op the evaluator handles that the validator neither lists nor handles itself. This adds it, the same way #2790 addedSMin32.Titles: EVO Player (PPSA99039), PS5VR (PPSA99177), Jelly5 (PPSA99505), Emby5 (PPSA99515) and Nuvio PS5 (PPSA99997) all stop here at their first draw, once #3496 gets them past
sceAgcCreatePrimState(where they stop onmaina11c8f7):With this change on top of #3496:
AGC graphics: guest 2D texture descriptor has a nonzero depth or base array. That's a linear T# with its pitch in DEPTH; I have a separate branch for it and will open it after this one.Tested
Windows 11 (26200), RTX 4070, WinLibs GCC 15.2.0 r7, Release, on
maina11c8f7:agc_shader_memory:verifySignedSrtComparisonnow also runs the validator on its threeSelectU32(SLessThan32(...))dwords. That check fails with the predicate change reverted (the runtime validator rejects a descriptor dword the evaluator computes) and passes with it.ctest -E "^agc_|video_out": 450/453. The 3 failures also fail onmainon Windows:windows_exceptions(Windows: windows_exceptions fails since #1423, unwinding through runtime DLL frames (std::call_once) no longer reaches the catch #3411),guest_kernel_sys(fix(libkernel_sys): create symlinks with CreateSymbolicLinkW on Windows #3510) andguest_filesystem(test(libkernel): don't require restoring the directory time on Windows #3518).VK_LOADER_DRIVERS_DISABLE=*dzn*, Windows: VideoOut crashes intermittently when the Dozen (Vulkan on D3D12) driver is installed, even though the native driver is selected #3255): 383/384. The failure,agc_driver_emulated_color_compare, also fails onmainwith NVIDIA (linux CI + NVIDIA:agc_driver_emulated_color_comparefails on main since #3438 (8-bit sRGB compare refused on the decode path) #3526).main+ fix(agc): preserve hand-built user VGPR offsets #3496, with and without this change.tools/check_conventions.pyandtools/pr_overlap.py: clean.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code