Repository navigation
test(agc): verify graphics output after optimized pipeline binding - #3741
Merged
adriadam10 merged 1 commit intoOct 11, 2026
Merged
Conversation
9 tasks done
10 tasks done
9 tasks done
jweidenh
force-pushed
the
codex/optimized-pipeline-readback
branch
from
October 11, 2026 20:21
5f5e49c to
fcc40d4
Compare
Collaborator
|
Rebased onto current |
adriadam10
force-pushed
the
codex/optimized-pipeline-readback
branch
from
October 11, 2026 22:20
fcc40d4 to
2b8f151
Compare
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
The pipeline-library tests currently check that an optimized handle exists without drawing through it. This adds deterministic GPU readback coverage for the transition from the fast link to the optimized link, related to #2866.
A test-only Vulkan wrapper holds the background compilation until the first draw completes, waits for optimization without sleeps, and verifies that the next real draw binds the handle created with
VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT. It checks every color channel for masked wave32/wave64 output and D32/D16 depth acceptance/rejection, with separate LTO-disabled controls. The only production-header addition is a friend that lets the test copy the existing device context; pipeline behavior is unchanged.Registered tests honor the production driver policy, including NVIDIA's disabled LTO. The executable accepts an explicit
--force-ltodiagnostic override in its copied test context. For example:This supplies a repeatable diagnostic for #2866; it does not fix that issue or justify enabling LTO on NVIDIA generally.
Tested
Current head:
fcc40d42582e6790e9a10fc599ad984cbfb6410b, rebased onto0a8b1d32b12a6d6a3acd462787750b482bf78884. The only conflict was adjacent CMake test registration; both upstream sRGB cases and all eight readback cases were preserved. The C++ test and header changes are identical to the previously tested head. Release, SPIRV-Tools enabled, 30-second per-test limits.Rebase validation rebuilt the focused executable and patched libraries. Windows 11 / RTX 5090 / NVIDIA 617.42 passed all eight default/control cases without skips (7.84 s total, slowest 3.99 s), each recording the production no-LTO policy and two fast draws. Linux GCC 13.3 / lavapipe passed all four depth cases without skips (each below 0.063 s); default cases used the optimized handle, and controls used fast handles. Private self-hosted run. Unchanged explicit-LTO and mutation diagnostics were not repeated.
Original validation at
5f5e49cb61a7ff9643aec6e2574bf90be762c8f0:--force-ltocases also passed on the same GPU. Each recorded one fast draw, one draw using the completed optimized handle, and one optimized creation; every pixel matched. Each process took 0.234–0.266 seconds in this run.Pipeline::Continueto keep the fast handle made the D32 diagnostic fail withreadback draw did not bind an optimized pipeline. Restoring the source and rebuilding made it pass. The submitted tree contains no mutation.libsbuild plus all four D32/D16 default/control cases passed without skips, each below 0.064 seconds. Default cases proved optimized draws; controls proved fast draws. The masked wave cases were not selected on lavapipe because they require at least 32 subgroup lanes; they were exercised on the RTX 5090.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)