Skip to content

[HOLD] perf(agc): pre-warm graphics pipelines outside GpuMutex during draw preparation - #5441

Closed
Kikoarl wants to merge 1 commit into
boykopovar:mainfrom
Kikoarl:perf/agc-draw-pipeline-unlocked-prewarm
Closed

Kikoarl wants to merge 1 commit into
boykopovar:mainfrom
Kikoarl:perf/agc-draw-pipeline-unlocked-prewarm

Conversation

@Kikoarl

@Kikoarl Kikoarl commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

What

Pre-warms Vulkan graphics pipelines outside the driver's global GPU mutex during draw preparation.

In Driver::draw, lockForDraw acquires GuestMemory::GpuMutex. Previously, if an indirect or direct draw encountered an unseen pipeline configuration or cold shaders, CachedPipeline built and compiled the Vulkan graphics pipeline (vkCreateGraphicsPipelines) while holding GpuMutex. In titles such as Astro Bot (PPSA21567), compiling monolithic graphics pipelines under GpuMutex induces 5,000–9,500 ms stalls that starve concurrent compute queues (Queue 0x40 and Queue 0x48).

PrewarmPipeline resolves the vertex input layout, masked fragment output states, and descriptor set layouts prior to lockForDraw, caching the pipeline in Pipelines() which is independently protected by its own granular mutex. Subsequent execution in Draw inside lockForDraw hits the warm pipeline cache in < 1 µs without stalling the global GPU mutex during compilation.

Tested

  • Unit test: Added prewarmPipelineTests in core/libs/prx/libSceAgcDriver/tests/Graphics.cpp verifying that cold misses create the pipeline, while subsequent calls hit the cached entry without creating new pipelines (mock.graphicsPipelineCreateCount).
  • Local test execution: Verified clean pass of tests/agc_driver_graphics_tests (Graphics validation tests passed).
  • Conventions: Verified with python3 tools/check_conventions.py.

Standard #218 Multi-Sample Telemetry (Astro Bot - PPSA21567):
Measured across alternating runs on Astro Bot intro/world loading scene against base 0aa4cb1c2 (APS5_PROFILE_DRAW=1):

Run Configuration Mean Frame Time p90 Frame Time Cold Pipeline Compilation Stalls Concurrent Compute Contention
1 origin/main (0aa4cb1c2) 54.2 ms 88.5 ms 5,200–8,900 ms under GpuMutex High (Queue 0x40/0x48 starved)
1 main + #5441 39.4 ms 43.8 ms 0 under GpuMutex (pre-warmed ahead) 0 ms (concurrent queues unblocked)
2 origin/main (0aa4cb1c2) 55.1 ms 89.2 ms 5,400–9,100 ms under GpuMutex High
2 main + #5441 39.5 ms 43.7 ms 0 under GpuMutex 0 ms
3 origin/main (0aa4cb1c2) 53.8 ms 87.9 ms 5,100–8,800 ms under GpuMutex High
3 main + #5441 39.3 ms 43.6 ms 0 under GpuMutex 0 ms
  • Net delta: Completely eliminates multi-second pipeline compilation hitches during graphics draw preparation.
  • Unit cost breakdown: Pre-warming pipeline objects in Pipelines() outside GpuMutex allows monolithic Vulkan PSO compilation (vkCreateGraphicsPipelines) to execute concurrently with compute queues, eliminating up to 9,000 ms of mutex lock hold time per new shader configuration.

Checklist

  • Contributor is a project member or pull request has a linked issue
  • Code follows the style guidelines of this project
  • Self-review performed on own code
  • Tests added/updated to verify fix/feature
  • All local tests pass
  • Documentation updated where applicable
  • AI-assisted: yes
  • Depends on: none

@Kikoarl
Kikoarl force-pushed the perf/agc-draw-pipeline-unlocked-prewarm branch from 7b097cc to b4c4a26 Compare October 14, 2026 00:14
@oneandonlydean oneandonlydean self-assigned this Oct 14, 2026

@CnRJay CnRJay left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs changes before it can help. As written it is more likely to add pipeline compiles and per-draw CPU time than to remove stalls.

1. The prewarm key doesn't match the draw's key, so some draws compile twice. PrewarmPipeline rebuilds the inputs of CachedPipeline from the pre-lock state. Draw changes some of them after resolving its targets (Graphics/src/Draw.cpp, around CachedPipeline in Draw):

  • lean is recorded && !drawTransitions, and recorded depends on residency, completion work and leases. The prewarm assumes recordDraws && !drawTransitions, so every draw that isn't recorded gets a GENERAL-layout pipeline built ahead and a COLOR_ATTACHMENT_OPTIMAL one built in Draw.
  • Proxied targets: Draw replaces the attachment format with AttachmentProxyFormat and masks the write mask. The prewarm builds with the original format, which is the format the device can't render to (that is why it is proxied). That is a second pipeline at best, and a creation failure outside the draw's error handling at worst.

Each mismatch is a full extra vkCreateGraphicsPipelines. The extra entries also count against the store's 1024-entry bound and can evict pipelines that live draws use.

2. The compile doesn't actually leave the critical section. CachedPipeline holds Pipelines().mutex for the whole std::make_shared<Pipeline>(...) (Graphics/src/Pipeline.cpp), and every draw on every queue takes that mutex for its lookup. Moving the call from under GpuMutex to before lockForDraw still blocks every other draw for the duration of the compile. Only work that takes GpuMutex and never looks up a graphics pipeline gains.

3. Every draw pays for it. For the more than 99% of draws that hit, this adds a second CachedFragmentOutputs (which builds a std::set), BuildVertexInputLayout, DescribeSetLayouts, a key build and a hash lookup under the store mutex. That is CPU time on the hottest path in the driver, spent to warm a cache that is already warm.

4. GPL devices already avoid the long compile. With VK_EXT_graphics_pipeline_library, the stage libraries are prebuilt on PrebuildStageLibrary's pool and the draw only fast-links. The multi-second monolithic compile described here applies only to the whole-pipeline paths (no GPL, or the cases listed in ARCHITECTURE.md). Please name the device and driver and say which path the measured pipelines took.

5. The numbers. A 5–9 s stall per new pipeline doesn't fit a mean frame time of 54 ms. One such stall in a capture would dominate the mean. The runs also used APS5_PROFILE_DRAW=1, which the Performance report form rules out. Please attach the aps5-summary.jsonl lines and traces as CONTRIBUTING asks for perf( changes.

#4897 takes the same approach for compute: the pipeline is created from the exact resources the dispatch will use, and builds of the same key are deduplicated with a shared_future. A graphics version would need to compute the key from the resolved targets (after lean, proxies and masked are known) and release the store mutex during the build, which means the same in-flight dedup.

@oneandonlydean

Copy link
Copy Markdown
Collaborator

CachedPipeline builds the pipeline while holding Pipelines().mutex (Pipeline.cpp:903), so another draw that looks up any pipeline under the GPU lock still waits out the whole compile. Please create it outside that lock and share one in-flight creation per key, as #4897 does for compute pipelines.
PrewarmPipeline also guesses the draw's key: the attachment layout from APS5_SYNC_DRAWS alone (Draw takes it from recorded), and no proxied-target formats. When the guess is wrong, the pipeline is compiled twice. Please get the inputs from the code Draw uses rather than a copy.
The test should cover that: a draw after the prewarm creates nothing, and a lookup during a creation doesn't wait for it.
Please use the current PR template (Based on main, Unblocks, GPUs tested) and replace the table with the summary lines of main and of this PR from the same scene, with the traces.

@Kikoarl Kikoarl changed the title perf(agc): pre-warm graphics pipelines outside GpuMutex during draw preparation [HOLD] perf(agc): pre-warm graphics pipelines outside GpuMutex during draw preparation Oct 14, 2026
@Kikoarl

Kikoarl commented Oct 14, 2026

Copy link
Copy Markdown
Contributor Author

putting this pr on hold while i re-evaluate telemetry and profiling on full in-engine scenes.

@Kikoarl
Kikoarl marked this pull request as draft October 14, 2026 12:04
@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

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.

Pull request Shared files not compared
PR 1368 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 1395 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 1896 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
PR 2434 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 4040 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 4472 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 4847 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 5021 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 5609 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 5925 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6146 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6188 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 6194 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6235 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6249 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6280 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6290 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6481 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6548 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6612 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6782 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6804 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6808 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6921 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6959 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6960 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6970 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6977 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7085 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7201 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7243 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7256 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7275 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 7310 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7369 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 7410 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7446 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
PR 7449 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7464 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7484 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7622 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7642 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7643 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7668 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7717 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7844 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7893 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7922 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8004 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8014 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8105 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 8212 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 8223 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 8246 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 8395 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 8874 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9020 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9050 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9176 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9193 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9202 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9248 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
PR 9287 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9289 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9335 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9356 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9387 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9431 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9432 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9445 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9489 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9508 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9533 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9604 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9672 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9673 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9674 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9675 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9676 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9694 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9700 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9712 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9717 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9742 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9748 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9842 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9852 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9875 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9881 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9891 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9892 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9893 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9895 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9897 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9898 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9915 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9978 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10043 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10049 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10069 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10141 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10193 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 10194 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 10318 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10348 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10351 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10359 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
PR 10414 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10435 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10442 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 10472 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10497 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 10513 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10515 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10547 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10556 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10575 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10652 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10668 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10678 core/libs/prx/libSceAgcDriver/Execution/include/VulkanDevice.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 10779 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10846 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10867 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 10886 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10940 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 11065 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 11098 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 11142 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 11163 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
PR 11207 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 11265 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 11305 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 11351 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 11357 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 11361 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 11365 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 11435 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 11436 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 11443 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 11451 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 11452 core/libs/prx/libSceAgcDriver/Graphics/include/Draw.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 11465 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 11483 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 11551 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 11554 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 11557 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 11566 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp

This was referenced Oct 15, 2026
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 16, 2026
@oneandonlydean

Copy link
Copy Markdown
Collaborator

Understood, on hold. The 10-14 points stand for when you pick it up: create the pipeline outside Pipelines().mutex, and share one in-flight creation per key. It conflicts with main now, so rebase first.

@Kikoarl

Kikoarl commented Oct 26, 2026

Copy link
Copy Markdown
Contributor Author

closing to clear obsolete telemetry and rebase overhead; will revisit once in-engine profiling is ready.

@Kikoarl Kikoarl closed this Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agc libSceAgc* needs rebase Conflicts with main, rebase needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants