Repository navigation
Conversation
Registration prepares the variants a shader's registered state predicts; a draw or dispatch whose state needs another one threw "prepared shader artifact is missing for the requested static ABI". Titles that link their own libSceAgc build that state themselves and never call the driver's static ABI resolution, so their draws differ from the registered prediction. The missing artifact is now prepared at use, logged, and kept with the snapshot like the deferred and null pixel cases. SourceHandleFor now checks that the request refers to the registered code, as InvocationFor already did. Uncharted: Legacy of Thieves Collection (PPSA05684) still misses on main 197ffac (after the fixed push slots of boykopovar#2661) for its own pixel shaders: "prepared shader artifact is missing for the requested static ABI: address=85899411712 stage=5 wave=64 pushOffset=128 pushCapacity=128".
|
Thank you for your interest in the project! We are sorry, but we cannot accept more PRs while we work through the existing backlog. This PR has been automatically closed and labeled "intake paused". This is not a judgment of the quality of your changes. |
Contributor
Author
|
Superseded by #2917 (rebased on main; a closed PR can't be reopened after a force-push). |
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
PPSA05684 misses for its own pixel shaders, also after the fixed push slots of #2661 (main 197ffac, the at-use path replaced by main's throw):
AGC driver: prepared shader artifact is missing for the requested static ABI: address=85899411712 stage=5 wave=64 pushOffset=128 pushCapacity=128Before #2661 the same shaders missed with
pushOffset=20 pushCapacity=108. With this branch the title prepares 6 such pixel shader variants at use in its first 7 minutes and goes on.It links libSceAgc statically, so it builds the static ABI state itself and never calls the driver's
sceAgcDriverResolve*Abi; registration cannot predict every state its draws use. This follows up the question in #1902 (comment).SourceHandleForandInvocationFornow prepare any missing variant at use, like #1836's deferred shaders and #1902's null pixel program: the artifact is logged once (Shader 0x... stage N has no artifact prepared at registration for the state of this draw or dispatch; preparing it at use) and kept with the snapshot.SourceHandleFornow also checks that the request refers to the registered code, asInvocationFordoes. ARCHITECTURE.md describes the at-use path.Tests:
agc_driver_prepared_shadersandagc_driver_prepared_graphicsnow require an unpredicted dispatch or draw state to be prepared once and reused, and a dispatch registration did not predict to run (Registration); invalid requests still fail (misaligned push constants, code that is not the registered code, an invalid program).Tested
BUILD_TESTING=ON.agc_driver_dcc_keys_first_write, fails the same way on plain main 57f96fd. Conventions check passed.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)