Repository navigation
fix(agc): preserve clip control during preparation - #2290
Closed
Sanjaysrinivas wants to merge 6 commits into
Closed
Sanjaysrinivas wants to merge 6 commits into
Sanjaysrinivas wants to merge 6 commits into
Conversation
PA_CL_VS_OUT_CNTL clip and cull distance enables (up to eight distances) are accepted. The vertex stage info carries the register, so the recompiled vertex stage writes ClipDistance/CullDistance, its cache key and the serialized request include it, the validator accepts those vertex outputs (f32[1..8]) and capabilities, and the device enables shaderClipDistance and shaderCullDistance. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
boykopovar#752 took version 7 for the pixel stage's conservative Z export, so a version 7 request written without this change has no PA_CL_VS_OUT_CNTL word: the field moves to version 8. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
main took version 8 for the pixel stage's target export mapping, which is the version this PR used. A version 8 request written by main has no PA_CL_VS_OUT_CNTL and would have been misread, so this PR writes version 9 and reads the field only from version 9 on.
…river; capabilities only where enabled agc_driver_vertex_clip_cull_distances draws with clip planes, a sparse CLIP_DIST_ENA (0x5) and cull enables; agc_driver_vertex_clip_cull_draw (and _no_key) submits the same through PM4. ShaderValidation accepts the ClipDistance/CullDistance capabilities only when the device enabled the features, and names PA_CL_VS_OUT_CNTL when it refuses. A version-12 vertex request reads paClVsOutCntl as 0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Carry PA_CL_VS_OUT_CNTL through registration and static graphics ABI preparation so draws reuse the matching vertex artifact. Reserve request version 14 for clip control; main uses version 13 for float modes. Exercise complete registered headers in both draw-key modes and preserve legacy version-13 float modes. Refs boykopovar#423
Sanjaysrinivas
marked this pull request as ready for review
October 9, 2026 14:59
9 tasks done
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
|
9 tasks done
Collaborator
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
Depends on: #423. This follow-up carries
PA_CL_VS_OUT_CNTLthrough registered shader preparation and static graphics ABI resolution. #423 passes the control at draw time; preparing an otherwise complete registered vertex shader without it produces a different artifact key, so the draw throwsprepared shader artifact is missing for the requested static ABI.Use complete shader headers in the driver regression and resolve the combined graphics ABI for each clip/cull control change. Both draw-key modes verify the rendered pixels. The fixture shuts the driver down explicitly.
Main already uses request version 13 for float modes. Reserve version 14 for the added vertex control instead of changing version 13's layout. The regression replays a version-13 vertex request with non-default float-mode fields and verifies that those fields survive while clip control defaults to zero.
Based on main
d70b89989473ba1f6ae13e44e079e67f1f8a44b0. The branch includes #423's five prerequisite commits, retaining Michon's authorship; merge conflicts were reconciled with main's multisampled-image capabilities, null-descriptor feature and test registration. The additional follow-up is commitc16aaec2e. This draft should wait for #423, then be rebased to remove the prerequisite commits.The existing position-export mapping and instruction semantics are reused. TechnicalDebt records the mapping's lack of PS5 hardware verification and the unsupported mesh/tessellation clip/cull paths.
Overlap audit, 9 October 2026, at main
f8c2f072: #2169 adds MSAA sample-location state alongside #423's clip-control state and tests. It does not carryPA_CL_VS_OUT_CNTLthrough registered preparation. Reconciliation must keep both sets of state fields, decoding and tests. #2327 removes the redundant decode/CFG/structurize pre-check beside this follow-up's vertex-control assignment inPrepareRegistered; keep the clip-control assignment while removing that redundant pass, with preparation still validating unsupported code. Virtual merges confirm conflicts in the state/test files andShaderRegistry.cpp; they do not establish combined behavior. Rebase and retest after either lands. The implementation dependency remains Depends on: #423.Tested
Windows, MinGW-w64 GCC 15.2.0, Release, NVIDIA GeForce RTX 4070 Laptop GPU, Vulkan required:
AI-assisted: yes.
Checklist
main; no other open PR implements this preparation follow-up