Repository navigation
fix(agc): build pipeline library shader parts for the draw's depth format - #4363
Conversation
|
The conventions checks fail for five findings: the PR template sections |
|
The current conventions check is failing on two removable source comments at |
…rmat The pre-rasterization and fragment shader libraries were created with an empty VkPipelineRenderingCreateInfo, so their depth and stencil formats were VK_FORMAT_UNDEFINED even when the output library had a depth target. On RADV (RX 7600, Mesa 25.2.8) a fast-linked pipeline built that way hangs the GPU at its first draw: Epic Mickey loses the device as soon as the level renders its translucency lighting volume, and with APS5_NO_PIPELINE_LTO=1 it hangs within seconds of boot. The shader parts now get the view mask and depth/stencil formats of the draw, and those formats join their cache key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
f740bee to
0b46084
Compare
|
Windows run on NVIDIA and Intel, since the description's run was on RADV. Setup: Windows 11 (26200), WinLibs GCC 15.2.0 r7, Release, CI configure flags, an RTX 4070 Laptop GPU and an Intel Raptor Lake-S iGPU, both with graphics pipeline libraries. The head 0b46084 merged into
Written with AI assistance. |
What
LinkPipelineFromLibrariesbuilt the pre-rasterization and fragment shader libraries with an emptyVkPipelineRenderingCreateInfo, so those parts hadVK_FORMAT_UNDEFINEDdepth and stencil even when the fragment output library and the draw had a depth target. On RADV a pipeline fast-linked from such parts hangs the GPU at its first draw (ring gfx_0.0.0 timeout, no page fault).The shader parts now get the draw's view mask and depth and stencil formats, and those three values join their cache key. Color formats stay out of it, so fragment shader parts are still shared across color target formats.
Rebased on #4152: the attachment key is combined with each part's own layout key. Shader parts that #4152 prebuilds at registration have no depth target, so a draw with a depth target builds its own.
Tested
Linux, RX 7600 (RADV NAVI33, Mesa 25.2.8).
agc_driver_recorder_tests --pipeline-library-onlygets a check that a depth target builds new pre-rasterization and fragment shader parts. It fails on main ("a depth target shared the shader libraries built with no depth format") and passes with this change. The fullagc_driver_recorder_testsrun and allagcctests (434) pass after the rebase one7c70a2df; the pipeline-library tests also pass withAPS5_NO_PIPELINE_LTO=1.RADV_DEBUG=syncshadersAPS5_NO_GPL=1APS5_NO_PIPELINE_LTO=1(fast-linked pipelines only)APS5_NO_PIPELINE_LTO=1+ this changeBisecting the fast-link-only run by shader hash found several independent culprits (depth-only shadow and G-buffer pipelines); all had a depth target.
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