Skip to content

perf(agc): replace winpthreads locks and TLS on the draw path - #6292

Open
meh7an wants to merge 1 commit into
boykopovar:mainfrom
meh7an:perf/agc-draw-path-locks
Open

meh7an wants to merge 1 commit into
boykopovar:mainfrom
meh7an:perf/agc-draw-path-locks

Conversation

@meh7an

@meh7an meh7an commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

What

On Windows the driver is built with MinGW:

  • std::mutex locks and unlocks through winpthreads (pthread_mutex_lock, pthread_mutex_unlock);
  • thread_local is emulated: every access calls __emutls_get_address, which calls pthread_getspecific.

A draw takes a few dozen different mutexes, and every packet reads several thread-locals. On the S2 page of Sonic Origins Plus's main menu, the queue worker spent these samples per frame (APS5 sampler, 15 s): pthread_mutex_lock 1.22, pthread_mutex_unlock 0.82, __emutls_get_address 2.15 (1.80 of it in pthread_getspecific), and the device use gate 0.37. That is about 10% of its frame.

  • AgcDriver::Mutex (Execution/include/Mutex.hpp) is an inline mutex on one atomic word.
    • An uncontended lock or unlock is one atomic instruction. A contended lock waits on the word at once (std::atomic::wait, which spins 12 pauses and 4 yields itself before it sleeps). Like std::mutex, it is neither recursive nor fair.
    • The first version spun 100 pauses before waiting. @simonbronk's contention benchmark showed that this costs 3 to 7 times the CPU of std::mutex with 4 to 8 threads on one lock, and that waiting at once beats std::mutex at every thread count. Without the spin, main's agc_driver_multisample_fill_host_only failed most runs: waiters that sleep at once widen a race main already has (agc_driver_multisample_fill_host_only fails intermittently: the sentinel fill after an absorbed multisampled clear does not land #6512), a multisampled target's clear recorded on another device's recorder. fix(agc): record a multisampled target's commands on its own device #6522 fixes that race, so this PR depends on it. The game numbers below come from the spinning version; on that page the contended path takes no samples (0.00 per frame in three sampled runs of my fork's dev), so they hold.
    • It replaces 74 plain std::mutexes of the draw path. perf(agc): pipeline queue-0 draw commits behind the packet worker #1201 already made two more a SlimMutex (the pending storage writes and the unit shadows), and those stay as they are.
    • Seven stay std::mutex: the five a std::condition_variable waits with, and the sparse and settle queue mutexes, which the context hands out as std::mutex*.
  • DeviceUseGate keeps its user count and the replacement flag in one atomic word instead of a mutex and a condition variable. A packet enters and leaves with one atomic instruction each.
  • GpuMutex takes an AgcDriver::Mutex and counts its own recursion. Its owner token is the thread environment block's address (CurrentThreadToken) instead of a thread-local's.
  • HostThreadSlot (libc/include/HostThreadSlot.hpp) holds a per-thread value of up to 8 bytes.
    • On x64 Windows it is a TLS slot (TlsAlloc), read and written through the thread environment block in one or two instructions. Elsewhere it is a thread_local.
    • It holds the packet tag, the read site, the collect epoch, and the pointers to the thread's collect memo and deferred labels (still allocated with ThreadOwned).
  • Driver::timed reads no clock unless APS5_PROFILE_DRAW asks for its report. A wait packet reads it only for APS5_TRACE_GPU's slow-wait line (suggested by @simonbronk).
  • agc_driver_locks (tests/execution/Locks.cpp) checks:
    • the mutex under contention (short and long holds), its try_lock, and a sleeping waiter's wake;
    • the gate: no user inside during a replacement, one replacement at a time;
    • the GPU mutex's recursion across threads;
    • the thread slots: zero on a new thread, direct and expansion slots, and the packet tag and read site defaults.

With this change, per frame: pthread_mutex_lock 1.22 to 0.31, pthread_mutex_unlock 0.82 to 0.20, __emutls_get_address 2.15 to 1.48, and the device use gate 0.37 to 0.05. What remains is the mutexes kept or outside the draw path, and thread-locals this change does not touch.

Tested

Windows 11 (10.0.26300), WinLibs GCC 15.2.0 (UCRT), Release, NVIDIA GeForce RTX 2080 Ti, driver 617.14.

  • Rebased onto main 0bc3003.
    • Main's new AdoptLatestCollectEpoch and lastBumpedEpoch read the collect epoch through the HostThreadSlot.
    • The GPU mutex keeps main's handoff spin (LockSpinning) inside its recursion guard.
    • dumpRequest's new suffix and the descriptor pool's freeDescriptorSets stay, with AgcDriver::Mutex.
    • AcquireCache takes the AgcDriver::Mutex.
    • On that main, with this change, the full ctest suite passes 1522 of 1523. agc_driver_bda_device fails (vkWaitForFences graphics: Vulkan result -4) on plain main 0bc3003 as well, 0 of 4 runs alone.
  • Rebased onto main c842491. Next to drawCacheMutex, main added the draw relocation fields (perf(agc): find cached draws across moved user-data pointers #4943), and perf(agc): journal the pipelines of a run and build them ahead on the next one #5875 keyed the compute pipelines by ComputePipelineKey and dropped the pipeline store's scratchKey. drawCacheMutex, computePipelinesMutex and the pipeline store's mutex stay AgcDriver::Mutexes, and every lock of them is a std::lock_guard or std::unique_lock as before. The collect memo ring goes through its thread slot as before. perf(agc): pipeline queue-0 draw commits behind the packet worker #1201's per-epoch collect map next to it keeps its thread_local, like the other thread-locals main added since. tools/check_conventions.py passes: HostThreadSlot takes TlsAlloc and TlsSetValue from <processthreadsapi.h>, and the GPU mutex's unlock keeps main's comment where it was.
  • Sonic Origins Plus, main menu, S2 page (the 3D background), 1233x694 window.
    • A sampled pair (APS5 sampler, 15 s) took the profile numbers above. The FPS shown in the title went from 7.75 to 8.38 (median of six readings).
    • Captured with APS5_TRACE_SECONDS=200:15 on the same machine in one session, caches warm. Traces attached.
    • Baseline b8acbb0, this change 824084e (the summaries name the commits before them, see the note):
Metric Baseline This PR Change
frame_ms.p50 156.721 129.749 -17.2%
frame_ms.p90 163.045 139.339 -14.5%
mean_frame_ms 158.259 130.959 -17.3%
gpu_busy_ms_per_present 78.608 85.850 +9.2%
Driver.Packet (ms per frame) 155.677 128.738 -17.3%
Driver.Packet.draw (ms per frame) 118.731 117.440 -1.1%

This pair overstates the change. The baseline's window ran slow outside the draw path: Driver.Packet minus its draw part is 37.0 ms against 11.3 ms with this change. Its title FPS, 6.70, is also below every other run of that build (7.51 to 8.34). The sampled pair, 7.75 to 8.38 FPS (+8%), is the better estimate.

Note: measuring base. These numbers come from my fork's dev, on main 0a56aaa, the last main before #5596. On Windows, later mains compare direct imports on every use, which keeps this menu at 3-4 FPS and hides a change of this size.

Both carry these commits from my fork:

The comparison tool marks the window's first present (2260 vs 2475) as a configuration difference: the window opens 200 s into each run. Both summaries set trace_dropped, because the worker filled its event buffer at about 2,700 draws per frame. The phase totals above stay complete.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: fix(agc): record a multisampled target's commands on its own device #6522
  • Unblocks: none
  • GPUs tested: NVIDIA GeForce RTX 2080 Ti, driver 617.14, Windows 11
  • AI-assisted: yes

Traces and summary lines (baseline b8acbb0, this change 824084e):
locks-traces.zip

The two summary lines, with tools/trace_digest.py for each trace:

Baseline (summary commit a38ad5e)

seconds 200:15 from present 2260: 95 presents, frame p50 156.7 / p90 163.0 / p99 190.3 / max 190.3 ms, GPU busy 78.6 ms per present
NVIDIA GeForce RTX 2080 Ti, NVIDIA 617.14, Windows 10.0.26300, 3840x2160, commit a38ad5e (dirty), dropped: yes

{"commit":"a38ad5e9fc89","dirty":true,"env":{"APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"200:15"},"gpu":"NVIDIA GeForce RTX 2080 Ti","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"seconds 200:15","first_present":2260,"ms":15034.646},"presents":95,"frame_ms":{"p50":156.721,"p90":163.045,"p99":190.275,"max":190.275},"gpu_busy_ms_per_present":78.608,"worker_busy_pct":{"queue worker 0x0":98.389},"top_phases_ms_per_frame":{"Driver.Packet":155.677,"Driver.Packet.draw":118.731,"Driver.Draw":117.267,"Driver.Draw.draw_and_resource_release":54.084,"Graphics.Draw":52.74,"Driver.Draw.shader_compile_and_link":45.397,"Graphics.Draw.draw_and_resource_release":42.561,"Shader.DrawStage":38.974},"trace_dropped":true,"trace":"aps5-trace-a38ad5e9fc89-37256.json.gz"}

Slowest frames (largest slices inside each, inclusive)

  • present 2288: 190.3 ms at 4435 ms: batch (gpu) 81.7, Driver.Present (presenter) 26.2, Driver.Present.render_fence_wait (presenter) 25.9, Vulkan.Retire (presenter) 25.9
  • present 2270: 183.1 ms at 1586 ms: Driver.Packet (queue worker 0x0) 172.8, Driver.Packet.draw (queue worker 0x0) 144.6, Driver.Draw (queue worker 0x0) 143.1, batch (gpu) 80.2
  • present 2316: 180.7 ms at 8871 ms: batch (gpu) 76.3, Driver.Present (presenter) 23.3, Driver.Present.render_fence_wait (presenter) 22.8, Vulkan.Retire (presenter) 22.8
  • present 2342: 180.1 ms at 12960 ms: batch (gpu) 75.6, Driver.Present (presenter) 27.0, Driver.Present.render_fence_wait (presenter) 26.5, Vulkan.Retire (presenter) 26.5
  • present 2326: 178.7 ms at 10450 ms: batch (gpu) 76.4, Driver.Present (presenter) 23.4, Driver.Present.render_fence_wait (presenter) 23.0, Vulkan.Retire (presenter) 23.0

Threads (ms per frame)

thread busy wait untraced in slices < 20 us largest
queue worker 0x0 34.3 (22 %) 0.1 (0 %) 123.8 51.7 Driver.Packet 34.4, Driver.Draw 0.0
presenter 0.5 (0 %) 26.5 (17 %) 131.3 0.1 Driver.Present 27.0
gpu 78.5 (50 %) 0.0 (0 %) 79.8 0.0 batch 78.5

Largest slices (ms per frame, inclusive, all threads): batch 78.5, Driver.Packet 34.4, Driver.Packet.draw 27.8, Driver.Draw 27.5, Driver.Present 27.0, Driver.Present.render_fence_wait 26.4, Vulkan.Retire 26.4, Vulkan.Retire.wait 26.4, Driver.Draw.draw_and_resource_release 6.1, Graphics.Draw 6.0

Longest waits

  • Driver.Present.render_fence_wait (presenter) 31.6 ms at 4790 ms, present 2290
  • Driver.Present.render_fence_wait (presenter) 30.6 ms at 4626 ms, present 2289
  • Driver.Present.render_fence_wait (presenter) 29.7 ms at 1107 ms, present 2267
  • Driver.Present.render_fence_wait (presenter) 29.6 ms at 4121 ms, present 2286
  • Driver.Present.render_fence_wait (presenter) 29.5 ms at 1 ms, present 2260
  • Driver.Present.render_fence_wait (presenter) 29.4 ms at 1270 ms, present 2268
  • Driver.Present.render_fence_wait (presenter) 29.2 ms at 3009 ms, present 2279
  • Driver.Present.render_fence_wait (presenter) 29.2 ms at 4277 ms, present 2287
  • Driver.Present.render_fence_wait (presenter) 29.2 ms at 14237 ms, present 2350
  • Driver.Present.render_fence_wait (presenter) 29.1 ms at 7324 ms, present 2306
This change (summary commit b8acbb0)

seconds 200:15 from present 2475: 115 presents, frame p50 129.7 / p90 139.3 / p99 153.5 / max 153.5 ms, GPU busy 85.8 ms per present
NVIDIA GeForce RTX 2080 Ti, NVIDIA 617.14, Windows 10.0.26300, 3840x2160, commit b8acbb0 (dirty), dropped: yes

{"commit":"b8acbb0d65c3","dirty":true,"env":{"APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"200:15"},"gpu":"NVIDIA GeForce RTX 2080 Ti","driver":"NVIDIA 617.14","os":"Windows 10.0.26300","resolution":"3840x2160","window":{"spec":"seconds 200:15","first_present":2475,"ms":15060.273},"presents":115,"frame_ms":{"p50":129.749,"p90":139.339,"p99":153.497,"max":153.537},"gpu_busy_ms_per_present":85.85,"worker_busy_pct":{"queue worker 0x0":98.33},"top_phases_ms_per_frame":{"Driver.Packet":128.738,"Driver.Packet.draw":117.44,"Driver.Draw":116.398,"Driver.Draw.draw_and_resource_release":52.218,"Graphics.Draw":51.006,"Driver.Draw.shader_compile_and_link":45.265,"Graphics.Draw.draw_and_resource_release":41.533,"Shader.DrawStage":39.233},"trace_dropped":true,"trace":"aps5-trace-b8acbb0d65c3-37744.json.gz"}

Slowest frames (largest slices inside each, inclusive)

  • present 2580: 153.5 ms at 13736 ms: batch (gpu) 89.8, Driver.Present (presenter) 34.2, Driver.Present.render_fence_wait (presenter) 33.8, Vulkan.Retire (presenter) 33.8
  • present 2492: 153.5 ms at 2205 ms: Driver.Packet (queue worker 0x0) 144.4, Driver.Packet.draw (queue worker 0x0) 139.3, Driver.Draw (queue worker 0x0) 138.3, batch (gpu) 88.2
  • present 2573: 152.5 ms at 12812 ms: batch (gpu) 88.0, Driver.Present (presenter) 31.5, Driver.Present.render_fence_wait (presenter) 31.0, Vulkan.Retire (presenter) 31.0
  • present 2544: 150.9 ms at 8988 ms: batch (gpu) 85.6, Driver.Present (presenter) 32.0, Driver.Present.render_fence_wait (presenter) 31.5, Vulkan.Retire (presenter) 31.5
  • present 2521: 147.8 ms at 5947 ms: batch (gpu) 82.9, Driver.Present (presenter) 31.8, Driver.Present.render_fence_wait (presenter) 31.2, Vulkan.Retire (presenter) 31.2

Threads (ms per frame)

thread busy wait untraced in slices < 20 us largest
queue worker 0x0 23.5 (18 %) 0.1 (0 %) 107.4 42.1 Driver.Packet 23.6, Driver.Completion 0.0
presenter 0.5 (0 %) 31.5 (24 %) 99.0 0.1 Driver.Present 32.0
gpu 85.7 (65 %) 0.0 (0 %) 45.2 0.0 batch 85.7

Largest slices (ms per frame, inclusive, all threads): batch 85.7, Driver.Present 32.0, Driver.Present.render_fence_wait 31.4, Vulkan.Retire 31.4, Vulkan.Retire.wait 31.4, Driver.Packet 23.6, Driver.Packet.draw 22.7, Driver.Draw 22.5, Driver.Draw.draw_and_resource_release 4.9, Graphics.Draw 4.8

Longest waits

  • Driver.Present.render_fence_wait (presenter) 37.0 ms at 2359 ms, present 2493
  • Driver.Present.render_fence_wait (presenter) 36.6 ms at 2489 ms, present 2494
  • Driver.Present.render_fence_wait (presenter) 36.4 ms at 11618 ms, present 2564
  • Driver.Present.render_fence_wait (presenter) 36.0 ms at 14151 ms, present 2583
  • Driver.Present.render_fence_wait (presenter) 35.7 ms at 1282 ms, present 2485
  • Driver.Present.render_fence_wait (presenter) 35.7 ms at 10582 ms, present 2556
  • Driver.Present.render_fence_wait (presenter) 35.4 ms at 1022 ms, present 2483
  • Driver.Present.render_fence_wait (presenter) 35.3 ms at 12273 ms, present 2569
  • Driver.Present.render_fence_wait (presenter) 34.9 ms at 382 ms, present 2478
  • Driver.Present.render_fence_wait (presenter) 34.5 ms at 3151 ms, present 2499

@SoRadGaming

Copy link
Copy Markdown
Contributor

Windows / AMD results for this head, in a scene where queue worker 0 is the limit: ASTRO BOT (PPSA21564 01.007.000), -lvl hub_crashsite (the full Crash Site hub).

Host: Windows 11 Pro 26200, Ryzen 7 5800X3D, Radeon RX 9070 XT (AMD proprietary driver 32.0.23033.1002), 32 GB, WinLibs GCC 15.2.0 r7, Release.

Builds.

Method. No input, warm shader cache (1,904 hits, 0 misses), APS5_NO_SNAPSHOT_CHECK=1 APS5_RESOURCE_CACHE_ENTRIES=4096, no profiling switches. FPS is the window's present counter over 120 s, after a 120 s settle once the level has started. Runs alternate.

hub FPS 10 s samples after the settle
base 6.27 / 6.25 / 6.23 / 6.20 5.7-6.4
base + this PR 6.64 / 6.60 (+6.1 %) 6.1-6.8

Seven launches with this PR went through boot, loading and at least 3 minutes in the hub: the two measured above, and five more held 3 minutes each, at 6.62-6.67 FPS. None had a stop, a hang or an error in the log.

AI-assisted (Claude Code); the builds and runs are on my machine.

@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 862 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 1191 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 1324 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 1368 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 1395 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 2434 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 4040 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 4072 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 4448 core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 4449 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 4472 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/BufferPool.hpp
PR 4847 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 5021 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 5058 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Dispatch/IndirectDispatch.cpp
PR 5115 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
PR 5372 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 5404 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
PR 5431 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 5441 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 5481 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
PR 5499 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 5609 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 5925 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 6108 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6146 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6169 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 6177 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6182 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6185 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6186 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DccMetadata.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6187 core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6188 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6192 core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6194 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6197 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6202 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6209 core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DccMetadata.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6218 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6223 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6249 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6262 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6273 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 6280 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6290 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6300 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 6308 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 6340 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6412 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6436 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6481 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6498 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6501 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
PR 6539 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6548 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6612 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 6628 core/libs/prx/libSceAgcDriver/Graphics/src/BdaResources.cpp
PR 6636 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6639 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 6658 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6682 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6683 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6718 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6727 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 6741 core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 6759 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 6782 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6785 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/BdaResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6788 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6801 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 6804 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Sampler.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6808 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 6820 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6848 core/libs/prx/libSceAgcDriver/Graphics/src/DccMetadata.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6868 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 6887 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6913 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6918 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6921 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 6926 core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 6937 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6946 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6947 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Sampler.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/BdaResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6948 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6951 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6959 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 6960 core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6965 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6971 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6973 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6977 core/libs/prx/libSceAgcDriver/Eq/src/Event.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Memory/BufferFill.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6982 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 6987 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6989 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6995 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7002 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7048 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7082 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7085 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7154 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7201 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Memory/BufferFill.cpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/BdaResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 7233 core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/BdaResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7256 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7261 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7275 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 7292 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7307 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 7310 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7332 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7340 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7369 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 7371 core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/BdaResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7426 core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 7427 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7446 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Synchronization/DeferredLabels.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7449 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 7457 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7464 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Synchronization/DeferredLabels.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 7465 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7466 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7473 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7474 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7484 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7504 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 7505 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 7514 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7533 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7604 core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7618 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7622 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Execution/src/WorkerSampler.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 7629 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7642 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/include/GuestMemory.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Sampler.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/BdaResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7643 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7644 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
PR 7647 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7650 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7668 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 7683 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
PR 7689 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7705 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 7717 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7799 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7800 core/libs/prx/libSceAgcDriver/Graphics/include/BufferPool.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7803 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7827 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7833 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7844 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7849 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7862 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7869 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 7870 core/libs/prx/libSceAgcDriver/Graphics/include/BufferPool.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7883 core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 7888 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 7893 core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 7894 core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 7896 core/libs/prx/libSceAgcDriver/Graphics/src/DccMetadata.cpp
PR 7912 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7919 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7920 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7922 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7930 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 7948 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 7954 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7961 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7963 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
PR 7966 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7968 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Memory/BufferCopy.cpp
PR 7978 core/libs/prx/libSceAgcDriver/Eq/src/Event.cpp
core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
PR 7981 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 7984 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 8004 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8014 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8016 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 8026 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 8034 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
PR 8047 core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 8066 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Dispatch/IndirectDispatch.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/Recorder.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/ShaderResources.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 8075 core/libs/prx/libSceAgcDriver/Execution/src/WorkerSampler.cpp
PR 8083 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 8091 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 8104 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 8105 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 8108 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
PR 8109 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 8115 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 8117 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 8126 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 8134 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8139 core/libs/prx/libSceAgcDriver/Execution/src/GuestMemory.cpp
PR 8145 core/libs/prx/libSceAgcDriver/Graphics/src/Pipeline.cpp
PR 8160 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 8161 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 8180 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8206 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Packets/PacketExecution.cpp
PR 8212 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 8224 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/ShaderResources.cpp
PR 8246 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 8261 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 8263 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
PR 8267 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8278 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8336 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp

EagleBearerYS added a commit to EagleBearerYS/AnyPS5 that referenced this pull request Oct 15, 2026
… report

boykopovar#6292 moves the APS5_PROFILE_DRAW check in Driver::timed to the top and
rewrites the report's condition, the two lines this branch's driver-time
line sat between, so the two conflicted. The line now follows the
report. It reads the same flag and times, so it counts the same.
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 15, 2026
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 16, 2026
@meh7an
meh7an force-pushed the perf/agc-draw-path-locks branch 2 times, most recently from 7ffce1c to c14f4c4 Compare October 16, 2026 19:21
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 16, 2026
@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 17, 2026
@adriadam10 adriadam10 self-assigned this Oct 18, 2026
@github-actions github-actions Bot added perf Performance change perf numbers missing perf pull request without a before and after summary line labels Oct 18, 2026
@meh7an
meh7an force-pushed the perf/agc-draw-path-locks branch from c14f4c4 to 562e4c8 Compare October 18, 2026 22:06
@github-actions github-actions Bot added needs rebase Conflicts with main, rebase needed and removed perf numbers missing perf pull request without a before and after summary line needs rebase Conflicts with main, rebase needed labels Oct 18, 2026
@moong15

moong15 commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Evidence from Stellar Blade on Windows (MinGW build): I measured this change as part of #6615's stack, which includes it. Ported onto a downstream perf branch on origin/main 4ffb0cd (RX 9070 XT, 4K, warm cache, two base/port pairs, 49-150 s of gameplay, whole traces), the stack gave +4.5% and +9.5% presents (about +7%). p50 dropped 9-13% and p99 16-22%. Peak commit was 0.75-1.2 GB higher. I couldn't isolate #6292 on its own. Full table and trace_digest output: #6615 (comment).

moong15 added a commit to moong15/AnyPS5 that referenced this pull request Oct 19, 2026
Ports boykopovar#6292 and boykopovar#6615 (boykopovar#6522 is already present). Draw-path mutexes and
the GPU-lock gate become atomic locks with explicit recursion, and
per-draw thread-locals move to native TLS slots (TEB slots on Windows)
instead of emutls. The same conversion also covers the newer sb5 paths:
guest allocation registry, trace thread binding, own-stack checks,
collect counters, recorder sync attribution, held-read scratch, packet
profile, draw keys, supplied shader-memory blocks and the changed-block
scratch. There is no runtime switch; compare builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agc libSceAgc* libc needs rebase Conflicts with main, rebase needed perf Performance change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants