Skip to content

feat(agc): add a detailed second page to the performance overlay - #10487

Open
EagleBearerYS wants to merge 4 commits into
boykopovar:mainfrom
EagleBearerYS:feat/agc-overlay-detail-page
Open

EagleBearerYS wants to merge 4 commits into
boykopovar:mainfrom
EagleBearerYS:feat/agc-overlay-detail-page

Conversation

@EagleBearerYS

@EagleBearerYS EagleBearerYS commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

What

F10 now cycles the performance overlay through three states: off, page 1 (unchanged), page 2 (new), then off again. ANYPS5_OVERLAY=2 starts on page 2, 1 on page 1, and 0 or unset leaves it off. Any other value is refused with ANYPS5_OVERLAY must be 0, 1 or 2. Each change of page resets the statistics.

Page 2 (46 columns, read once a second while it shows; a line or part whose source isn't available in the run is left out):

Line Source
FPS, FRAME page 1's statistics
BUSY % per queue worker the trace totals, as worker_busy_pct counts them
top 5 phases, ms/frame the trace totals, as top_phases_ms_per_frame aggregates them
Q0 WAIT MS/FRAME: MEM … LOCK … GPU … queue 0's packet memory and rendering waits, GPU-mutex waits, and recorder, serial and fence waits
RENDER PASSES/FRAME a count where a draw begins a pass
PIPELINES: COMPILING n NEW/S n the shader-preparation and prebuild backlog, and pipelines created
HIT %: DRAW CACHE … PIPELINES … draw-cache lookups and the pipeline store's hits
FLIPS/S, PRESENTS/S, DROPPED/S, REPEATED/S flips counted, presents, acquires dropped for want of a swapchain image, and presents of the same display buffer
COMMIT: used/limit GB FAULTS/S Windows K32GetPerformanceInfo and PageFaultCount; Linux /proc/meminfo and getrusage
HOST IMPORTS: n used/budget GB the host import counters and budget, when the device imports host memory
CPU COPIES: x MB/S CAP: y% a new per-thread counter of the bytes address-based builds copy, and their largest build against the copy cap
UNIMPLEMENTED: n/S n TOTAL, REFUSED SHADERS: n a new count in NotImplemented_nid_no_patch before it throws, and the refused-shader set under APS5_SKIP_REFUSED_DRAWS
TITLE: id PRESENT: mode the title ID and the present mode

Cost. Page 2 is meant to cost nothing unless it shows:

  • Hidden: the same work as main, plus a Recording() check per render pass begun, the copy counter in address-based builds that copy, one relaxed add on NotImplemented_nid_no_patch's throw path, and one 8-byte store per presented display buffer. Threads the trace names keep their name in a thread-local once, at start.
  • Page 1: as on main, plus two compares per present. Trace totals stay off.
  • Page 2: it turns the trace totals on for the driver's named threads (no slices are buffered), reads its sources once a second, and composes 46 columns per present. Leaving it turns all of that off again.
  • An APS5_TRACE_* run behaves as today: page 2 only reads the totals that trace already records.
  • Locks: the sampler runs on the presenter under the GPU mutex. It only tries the draw-cache, prepare-pool and trace-session locks and keeps its last figures when one is busy. It takes the imports and pipeline-store locks, which are documented to come after the GPU mutex.

Headless, 5 alternating runs each (Xeon 2.10 GHz VM, lavapipe), medians:

per … main this PR
present, hidden 2.6 ns 3.2 ns
timed scope with one stage, hidden 3.1 ns 3.7 ns
timed scope with one stage, page 1 3.5 ns 3.6 ns
present on page 1 11.0 µs 11.4 µs
present on page 2 at 60 fps, with its once-a-second sample 29.7 µs
timed scope with one stage, page 2 115 ns

Page 2's real cost is the last row: each timed scope on a driver thread reads the clock while it shows.

Left out: the upscaler mode (#10043 isn't merged), the shader disk-cache hit rate (its totals are fenced off from other sources in CMake, so I didn't wire them; reviewers can say whether page 2 may read them), and GPU-time lines (no GPU query is added; Q0 WAIT … GPU is the CPU's wait for the GPU).

Docs: docs/user/USAGE.md describes the cycle, every page-2 line with its source on Windows and Linux, and what runs in each state; docs/dev/ENVIRONMENT.md's ANYPS5_OVERLAY row lists page 2.

The commits:

  1. d9626d8: the panel's width comes from its content (a refactor; page 1 unchanged).
  2. 3c8a2bc: the second page and the three-state cycle.
  3. f979249: page 2's sources, the new counters and the trace totals.
  4. 1eabf23: the docs.

Tested

Screenshots, Planet of Lana (PPSA19450) on Windows with an RTX 3070, this PR's head 1eabf23, page 2 started with ANYPS5_OVERLAY=2:

Page 2 in play, and its panel at native size:

Page 2 over Planet of Lana in play

The page 2 panel at native size

Page 2 at the title menu:

Page 2 over Planet of Lana's title menu

The in-play spot above with the overlay off:

The same spot in play with the overlay off

  • Planet of Lana (PPSA19450), page 2 against the overlay off, on the same RTX 3070 Laptop GPU (clocks not held), this PR's head 1eabf23, 1920x1080 window: B A A B, 540 s per arm, from the title's boot. In play (+420 to +500 s), page 2 averaged 19.8 presents/s and 13.89 ms of GPU busy per present, against 20.15 and 13.56 ms with the overlay off. That's −1.7 % presents/s and +0.33 ms per present, inside the spread between arms (18.7-21.0 presents/s). The menu (+90 to +150 s) varied more between arms (33.7-41.8 presents/s), so it gives no reading of the cost. The second half of the run was faster in both conditions, and the B A A B order cancels that.

    Arm Play presents/s Play p50 (p90) Play GPU busy per present
    page 2 18.7 51.9 ms (62.1) 14.26 ms
    off 19.3 51.2 ms (61.0) 13.76 ms
    off 21.0 46.1 ms (53.1) 13.35 ms
    page 2 20.9 46.7 ms (52.8) 13.52 ms
  • The tests, in the existing overlay test executables:

    • agc_performance_overlay_statistics: parsing, the cycle (including past 2^64 presses), the page-2 composer and layout at four sizes, the trace deltas, hit rates, present-mode names, the OS reads, the copy counter across threads, the unimplemented count, the trace switch on and off;
    • agc_performance_overlay (Vulkan): page 2 drawn bit for bit at 1280x720, the F10 cycle with its resets, and the sampler end to end.
    • Page 1's full panel at 1920x1080 prints the same 12 lines on main and on this PR, apart from the live VRAM value.
  • GitHub's runners (run 40055350747, ×5, at this PR's head; main's tree doesn't build these tests, as they use the new API):

    • Linux: 7 run, 7 pass, 0 skip, 0 fail (agc_performance_overlay, _statistics, _device_selection, _device_selection_cpu, agc_performance_trace, agc_driver_present_mode, agc_driver_presentation_pass).
    • Windows: 7 run, 4 pass, 3 skip, 0 fail. The 3 device tests (agc_performance_overlay, _device_selection, agc_driver_presentation_pass) skip, since the runner has no Vulkan device.
    • The libc and libkernel suites pass on both, run with APS5_SKIP_TIMING_TESTS=1.
  • Linux, CI's configure flags (lavapipe, on a cloud machine): the overlay, trace and present tests --repeat until-fail:20, 8 tests, 20 of 20 each; CI's Linux job mirrored: 1,927 tests, of which 1,837 pass, 86 skip and 4 fail, the four being that machine's IPv6 tests. Each commit's own overlay tests pass at that commit.

  • Validation layer (Khronos 1.3.275, lavapipe), main ef0d8ae and this PR over agc_performance_overlay, _device_selection, _device_selection_cpu, agc_driver_present_mode, agc_driver_presentation_pass and agc_resident_present:

    • all 6 pass on both trees;
    • the layer loaded in each of the 4 that create an instance, and page 2 was drawn under it;
    • 0 validation messages on either tree;
    • a control test through the driver's own device (agc_driver_depth_plane_fill) reports the known VUID-VkDeviceCreateInfo-pNext-pNext on both, so the layer was reporting. No new VUID-.
  • Validation layer on an RTX 3070 Laptop GPU (Khronos layer from the LunarG SDK 1.4.363, NVIDIA 617.42, Windows 11, GPU at P0), this PR's head 1eabf23, VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation and ANYPS5_NO_SHADER_CACHE=1, over agc_performance_overlay, _device_selection and agc_driver_presentation_pass, twice:

    • 3 run, 3 pass, 0 skip, 0 fail, both times;
    • the loader inserted the layer in all 3 (VK_LOADER_DEBUG=layer);
    • no VUID- or other validation message in the output. No control test with a known message ran on this GPU, so this rests on the layer's default reporting; the lavapipe control above shows the layer reporting there.

Checklist

…ntent

The panel was fixed at OverlayMetrics::Columns, 27 columns, and always
kept rows for the frame-time graph. OverlayContent now carries its
column count and whether it has a graph, and the panel's width, height,
fit test and scale come from them. ComposeOverlay still fills 27
columns with a graph, so the existing panel is drawn as before, line
for line.

LayOutOverlay refuses a panel with no columns, a graph on a panel
narrower than its 120 frames, and frame times on a panel without a
graph.

The 5x7 font gains %, +, -, _, J, Q, Y and Z, from the same HD44780
character set as its other glyphs, and OverlayFontCharacters lists
every character it can draw.

Tests: every listed character has a glyph no wider than 5 pixels,
non-empty unless it is the space, and unlike any other; characters
outside the list are refused; a 48-column panel without a graph is
laid out and scaled at 1280x720, 1920x1080, 3840x2160 and 320x180; a
140-column panel at 3840x2160 shrinks from scale 5 to 4; a too-long
line, a 20-column graph and frame times without a graph are refused.
F10 now cycles through three states: off, the existing overlay (page 1)
and a detailed page (page 2), then off again. ANYPS5_OVERLAY=2 starts on
page 2; 1 and 0 or unset keep their meaning, and any other value still
throws, now naming 0, 1 and 2. OverlayPageAfter is the cycle, the
starting page plus the F10 presses modulo 3. Toggle stores the page it
gives under a mutex and PerformanceOverlay::Page loads it, so Visible,
which every present calls, stays one load as before. Each change of
page resets the statistics, as a toggle did.

Page 2 has its own composer, ComposeOverlayDetails, a pure function of
one OverlayDetailSample. It fills a 46-column panel without the graph.
Every value is optional, and a line whose sources are all missing is
left out; a line with some missing shows only the values it has. Each
line names its unit. Names from elsewhere (threads, trace phases, the
title, the present mode) go through OverlayText, which upper-cases
them and turns characters the font has no glyph for into spaces;
phase names are cut to fit the line. Page 1 is unchanged, line for
line.

On page 2, NotePresent keeps the frame statistics and fills the sample
with the frame rate, the last frame's time, presents per second and
the pipelines created in the last second. It reads nothing else, and
it skips page 1's memory reads and packet sums. The next commit adds
the driver and system counters. NotePresent latches the page, so
Record draws the page NotePresent sampled.

Tests: ANYPS5_OVERLAY 2 and 3, 02 and -1; the cycle from each starting
page through three presses and past 2^64 presses; page 2 of a full
sample, line for line, of an empty sample, and of a sample with
missing sources; every character either composer can emit has a
glyph; page 2 laid out at 1280x720, 1920x1080, 3840x2160 and 640x360,
every line drawn, no graph, and a 60-line page shrunk to scale 3 at
3840x2160. On lavapipe, under the Khronos validation layer with no
message: page 2 drawn at 1280x720 bit for bit, and F10 through a real
overlay: page 1, page 2 drawn from its own composer, then hidden, with
the statistics reset at each change.
Page 2 now samples its sources once a second, in NotePresent, while it
shows; nothing of it runs while the overlay is hidden or on page 1.

- Busy share per queue worker, the top 5 phases in ms per frame and queue
  0's waits (memory, lock, GPU) come from the trace's per-thread totals.
  Showing page 2 turns recording on with buffering off, so a timed scope
  only adds to its thread's totals; leaving it turns recording off again.
  Toggle switches it under a mutex, and ANYPS5_OVERLAY=2 switches it on at
  start. An APS5_TRACE_* run keeps its own recording untouched, and page 2
  then shows these lines only while that trace records. A driver thread
  names itself when it starts (BindThread without APS5_TRACE_* stores the
  name only) and binds on its first timed scope while page 2 shows;
  unnamed threads are not bound.
- Render passes per frame: the draw path counts a begun pass in the trace
  totals while page 2's totals are on (PerformanceTrace::Count).
- Flips/s and the draw cache's hit rate come from the driver through a
  source it registers at start (the draw cache's lock is only tried); the
  pipeline store's hit rate from PipelineStoreTotals; the compile backlog
  from the shader preparation and library prebuild pools (tried locks).
- Dropped frames per second are the presents that found no free swapchain
  image; repeated ones are presents of the display buffer shown just before.
  The device passes the buffer's address, its present mode and the drops.
- Commit charge against the commit limit: GetPerformanceInfo on Windows,
  Committed_AS and CommitLimit from /proc/meminfo on Linux; page faults per
  second from PageFaultCount or getrusage.
- Host imports: their count and bytes against the budget, on devices that
  import host memory.
- CPU copies: address-based builds count the bytes they copy in a
  per-thread counter (a relaxed load and store, folded once a second) with
  the largest build of each second against the address-copy cap.
- Unimplemented-function calls: libc counts NotImplemented_nid_no_patch
  calls; refused shaders are the APS5_SKIP_REFUSED_DRAWS set's size.
- Title ID (when the title has a param.json) and present mode.

The tests cover the trace deltas, hit rates, present-mode names, the
/proc/meminfo parser and the OS reads, the per-thread copy counter's fold,
the counted unimplemented call, the trace switch with page 2 and lazy
binding without buffering, and on lavapipe the sampler end to end with a
fake driver source, its reset when page 2 is left, and the cost of a
present hidden, on page 1 and on page 2.
USAGE.md's performance overlay section now gives F10's cycle (off, page
1, page 2, off) and ANYPS5_OVERLAY=2, a table with one row per line of
page 2 that names each source and the system it comes from, and what the
page costs: the trace totals it turns on while it shows, and the checks
and counters that run while the overlay is hidden or on page 1.
ENVIRONMENT.md's ANYPS5_OVERLAY row lists page 2.
@github-actions

github-actions Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
PR 10507 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp L3307, L3626-3628

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 1191 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 1368 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 1395 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 1896 docs/dev/ENVIRONMENT.md
PR 2434 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
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/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 4472 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 5021 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Lifecycle.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libc/src/General.cpp
docs/user/USAGE.md
PR 5115 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Shaders/ShaderRegistry.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
PR 5441 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.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/src/Draw.cpp
PR 5925 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Lifecycle.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/user/USAGE.md
PR 6171 docs/user/USAGE.md
PR 6186 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/ENVIRONMENT.md
PR 6188 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCacheStatistics.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Lifecycle.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 6197 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6202 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 6481 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6501 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
PR 6539 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 6544 core/libs/prx/libc/src/General.cpp
PR 6548 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6617 docs/dev/ENVIRONMENT.md
PR 6867 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Shaders/ShaderRegistry.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
PR 6918 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6924 docs/dev/ENVIRONMENT.md
docs/user/USAGE.md
PR 6960 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 6977 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 7201 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Diagnostics.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Diagnostics.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Lifecycle.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libc/src/General.cpp
PR 7256 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.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
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 7449 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
docs/dev/ENVIRONMENT.md
PR 7457 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/ENVIRONMENT.md
PR 7484 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
docs/dev/ENVIRONMENT.md
PR 7604 docs/dev/ENVIRONMENT.md
PR 7618 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7682 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
PR 7814 docs/dev/ENVIRONMENT.md
PR 7844 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7918 docs/user/USAGE.md
PR 7922 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
docs/dev/ENVIRONMENT.md
PR 7942 docs/user/USAGE.md
PR 8004 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
docs/dev/ENVIRONMENT.md
PR 8014 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 8077 docs/dev/ENVIRONMENT.md
PR 8140 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
PR 8223 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 8246 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/dev/ENVIRONMENT.md
PR 8484 docs/dev/ENVIRONMENT.md
PR 8542 docs/dev/ENVIRONMENT.md
PR 8592 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
PR 9348 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9356 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/dev/ENVIRONMENT.md
PR 9387 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/dev/ENVIRONMENT.md
PR 9400 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
docs/dev/ENVIRONMENT.md
PR 9431 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9432 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9447 core/libs/prx/libc/include/General.hpp
PR 9508 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/include/Driver/Shaders/ShaderRegistry.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/PerformanceOverlay.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/ENVIRONMENT.md
docs/user/USAGE.md
PR 9672 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9673 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9674 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9675 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9676 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
docs/dev/ENVIRONMENT.md
PR 9693 core/libs/prx/libc/include/General.hpp
core/libs/prx/libc/src/General.cpp
PR 9748 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9842 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9891 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9892 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9893 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9895 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
PR 9897 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9898 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/ENVIRONMENT.md
PR 9929 core/libs/prx/libc/include/General.hpp
PR 10193 core/libs/prx/libSceAgcDriver/Execution/include/Driver/Driver.hpp
core/libs/prx/libSceAgcDriver/Execution/include/Driver/Shaders/ShaderRegistry.hpp
core/libs/prx/libSceAgcDriver/Execution/src/Driver/Shaders/ShaderRegistry.cpp
core/libs/prx/libSceAgcDriver/Execution/src/PerformanceOverlay.cpp
core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/ENVIRONMENT.md
docs/user/USAGE.md
PR 10194 core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/ENVIRONMENT.md
PR 10231 docs/dev/ENVIRONMENT.md
PR 10244 docs/dev/ENVIRONMENT.md
PR 10254 docs/dev/ENVIRONMENT.md
PR 10264 docs/dev/ENVIRONMENT.md
PR 10272 docs/dev/ENVIRONMENT.md

@EagleBearerYS
EagleBearerYS marked this pull request as ready for review October 24, 2026 06:52
@adriadam10 adriadam10 self-assigned this Oct 24, 2026

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants