Repository navigation
perf(agc): time compute pipeline creation - #6896
Open
milescoviello wants to merge 1 commit into
Open
milescoviello wants to merge 1 commit into
milescoviello wants to merge 1 commit into
Conversation
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
This was referenced Oct 16, 2026
VulkanDevice::createComputePipeline, used by dispatches and the pipeline journal's replay, had no PerformanceTimer, so a dispatch that compiles its pipeline showed up in traces and frame timing as Driver.Dispatch time with no slice under it. It is now Vulkan.ComputePipeline, as graphics pipeline builds already are Vulkan.GraphicsPipeline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
milescoviello
force-pushed
the
perf/compute-pipeline-timer
branch
from
October 17, 2026 18:56
4e5e507 to
1dd716e
Compare
Contributor
|
AMD on Windows run. Radeon 860M (RDNA 3.5, driver 32.0.13058.8001), Windows 11 26300, WinLibs GCC 15.2.0 r7, Release, The build is clean and AI-assisted |
This was referenced Oct 18, 2026
Contributor
Author
|
Thanks @LeandroLP23 for the AMD run on Windows. I added it to the description. AI-assisted: yes (Claude Code) |
This branch has not been deployed
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
Traces (
APS5_TRACE_SECONDS,APS5_TRACE_FRAMES) and frame timing name graphics pipeline builds (Vulkan.GraphicsPipeline,...Library,...Link,...Prebuild), but not compute pipeline builds.VulkanDevice::createComputePipeline, which dispatches and the pipeline journal's replay both use, had no timer. A dispatch that compiles its pipeline therefore showed up asDriver.Dispatchtime with nothing under it, andtools/trace_digest.pycould not say where it went.MXGP 26 (PPSA30839) is an example, on Linux/NVIDIA with the PRs it needs to get this far (#6814, #6094, #6160). In a 10 s window 120 s in, the title presented 2 frames.
Driver.Dispatchtook 8.9 s across the two queue workers, and 5.3 s of that was under no slice. Its longest dispatch took 2.9 s, of which recording took 1.1 ms. gdb samples during the stalls found the worker insidecreateComputePipeline, in NVIDIA's compiler.This adds
PerformanceTimer timing("Vulkan.ComputePipeline")at the top ofcreateComputePipeline, asPipeline's constructor has for graphics.Tested
Ubuntu 24.04, GCC 13.3, Release, RTX 4070 Ti (NVIDIA 595.99.02).
APS5_TRACE_SECONDS=120:10, pad input. Both runs usemain+ fix(agc): drain library prebuilds before device replacement #6814 + fix(shader): act on the containing dword for unaligned 32-bit buffer atomics #6094 + feat(agc): link calls through the AGC FS table #6160; the second also has this change and a cold cache:Driver.Dispatchin the windowResources.Prepare1,930 msVulkan.ComputePipeline38,148 msThe summary line's
top_phases_ms_per_framenow listsVulkan.ComputePipeline(38,148 ms of a 40,912 ms frame).main66e290f: the 7 tests matchingjournal|performance_trace|compute_pipelinepass 3 of 3. The 501 tests matching^agc_driver_|^agc_vertex_barrier|recompiler|shader_cache|request_serializer|spirv|^agc_shader|bda|journalpass exceptagc_driver_store_over_untracked, which fails onmaintoo.When no trace or frame timing is active, the timer only checks whether one is, as the other timers do. A pipeline build costs milliseconds to seconds, so this is negligible.
@LeandroLP23 ran it on Windows 11 with an AMD Radeon 860M (RDNA 3.5, driver 32.0.13058.8001) (comment), in one build of
main6efb726 with this PR and six other pull requests: it builds cleanly andagc_driver_store_over_untrackedpasses 3 runs of 3.Not checked: macOS, Intel (the change is platform-independent).
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code