Repository navigation
perf(shader): specialize direct image modes in registration modules - #11952
adriadam10 merged 2390 commits into
Conversation
|
This pull request is labeled |
|
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.
|
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed exact head 6edeae6. I traced the new path: only direct registration-module images with multiple runtime modes receive the selected mode specialization; table selection remains dynamic, and single-mode images use the existing single-mode path. The updated test checks that mode changes reuse the same artifact and validates the rendered results.
Local checks: the exact Release target built successfully (894 Ninja steps); conventions, diff check and current-main merge preview pass. The focused image-plane-bias test passed under QEMU Haswell with lavapipe (llvmpipe). A native CTest attempt is blocked by this host's CPU guard (Intel Xeon E5-1620 v2 lacks required guest instruction-set features); the emulated run is not a native CPU/GPU result. I manually checked the overlap scan's uncomparable shared files: the pairwise conflict with #10193 is in atomic-image metadata, outside this PR's mode-specialization hunk. Hosted Windows, Ubuntu relinker, ASan and policy checks pass; Linux product tests are skipped and the two macOS relinker jobs remain pending.
I am requesting changes because this PR is titled perf and currently carries the perf numbers missing label. The contribution rules require two valid APS5 summary lines from main and the change for the same title, scene and machine, with both traces attached. The body explicitly says no matched timed pair was accepted and includes no such summary lines or traces; instruction counts and native code-size measurements do not satisfy that required report. Please add the required capture report before approval. I found no code defect in the reviewed changes.
|
@MarcZX10 Added the requested baseline/PR summary lines and complete
All six accepted captures passed the scene, focus, resolution, loaded-library, warmed-cache and zero-drop audits. The common observation hooks and full run protocol are disclosed in the description. The The source head is unchanged from the one you reviewed. Thanks for the detailed code review. |
|
Supplementary data from another title and GPU: Astro Bot (PPSA21564), Aerial Garden, RX 9070 XT, RADV Mesa 26.2.5. This is an offline native-code comparison, not the In this scene five fragment programs account for 76 % of the GPU time registration form costs over specialized modules (serialized per-draw timing). I dumped their modules as built on
I haven't measured this PR's frame time on this scene. |
|
@MarcZX10 The remaining trace attachment is now published: all six original timing traces, summaries, full trace digests, paired comparisons and provenance. All 30 files and all six decoded trace hashes were verified after download; the description now links the bundle. The head remains @boykopovar Could you trigger full Linux/Windows CI for this head, or link an already queued run that identifies this PR and revision? The attached automatic run passes the relinker matrix/ASan, but skips Linux product tests; its successful Windows job only links host tests. I do not have upstream write permission. gh workflow run build.yml --repo boykopovar/AnyPS5 --ref main --field pr=11952 |
|
Note 🤖 Claude Opus 5.5 responding on behalf of JulesB40 On Windows + NVIDIA (Ada), head Setup: Windows 11 Home 10.0.26200, Intel Core i9-13900HX, NVIDIA GeForce RTX 4070 Laptop GPU ( Command, the same on both sides:
No title was run. |
|
Windows + NVIDIA run of head Setup: Windows 11 Home 26200, AMD Ryzen 9 5900X, NVIDIA GeForce RTX 3080, driver 610.88, Vulkan SDK 1.4.363 ( Command: the fixtures the Tested section names, as I mapped them to test names, 3 runs on each side, with
GPUs tested: NVIDIA GeForce RTX 3080, driver 610.88, Windows 11. AI-assisted: yes (Claude Code) |
|
Independent RX6650XT/RADV Linux focused result for exact head Composition: main Setup: Arch Linux7.2.9-arch1-1, Ryzen9 7950X, GCC16.2.1 20260810, Radeon RX6650XT, RADV Mesa26.2.4-arch1.1, Ninja Release, The three direct-image checks are:
They pass on both sides; the candidate volume-bias test includes this PR's cached volume/plane/numeric-mode transition assertions. The other19 depth/MSAA/graphics checks also pass. Baseline qualification is two runs on the same source (19 checks in its earlier build, then the three image checks in a fresh build); candidate22 ran together in a fresh independent full build. This does not claim coverage of the broader image-table fixture or a full-project suite. Exact composition/delta, selections and complete focused logs/results, SHA256 Native follow-up: Bendy PPSA27624 v01.000.003 loaded the same Office Hallway slot2 save with coherent rendering on the candidate and fresh unchanged baseline. Both closed normally180s with native0, restored ordinary/memory saves/config/kernel64 and no leftover process. The fresh baseline also passed all22 focused checks together,18 actualKHR insertions/zeroVUID/no skips. Same RX6650XT machine, GPL/normal pipeline/production registration budget, both disk caches disabled; static same-save camera, registered output3840×2160, X11 window1016×864. Native validation/profiling dumps disabled. Official130:5 traces,1M events/thread, no drops:
No clear/repeatable gain is established for this Bendy scene. The candidate median lies between the two baseline observations and the GPU difference is small. There is only one candidate capture; A0 predates the prospective B1/A2 plan, each timing window is5s, and backgroundCPU load is uncontrolled. These results do not contradict the author's other-title/GPU measurements. Direct X11 captures were reviewed and match the same hallway/camera; no long-play stability or fix for historical intermittent faults is claimed. All3 official traces/summary lines/digests, native receipts, reviewed images, focused results and source provenance, SHA256 AI-assisted: yes (Codex). |
|
@MarcZX10 your request on this exact head asked for the main/change |
imellag
left a comment
There was a problem hiding this comment.
macOS / MoltenVK data point. Apple M4 Pro, macOS 27.2, MoltenVK 1.4.2, x86_64 Release under Rosetta. main doesn't run titles on macOS yet, so the base is a support branch, not main: main 750cf6cf48 + only the macOS boot PRs #7631 #10552 #11249 #11447 #11554 #10669 #7804, + #12529 (the revert of #10337, which roughly doubles the GPU time on this GPU and would hide smaller changes). Change: that base + eight open shader performance PRs merged together (#12287 #11952 #12299 #12280 #11368 #11265 #8716 #8958, all clean merges). I did not measure each PR alone.
Two alternated runs per side, warm shader cache, APS5_TRACE_SUMMARY_EVERY=10:
| base | with the eight PRs | |
|---|---|---|
| God of War Sons of Sparta (PPSA28997), fps from 30 s | 51.5 / 51.8 | 51.6 / 51.8 |
| GoW GPU ms/present, gameplay before the fight / in the fight | 13.6 / 19.6 | 13.5 / 19.5 |
| Planet of Lana (PPSA19450), fps from 85 s | 32.2 / 32.7 | 32.5 / 32.6 |
Together they don't raise the GPU time on MoltenVK. I'm checking open shader performance PRs on this GPU because #10337 was measured on RADV and doubled it here.
Focused tests below ran with ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation on the same two trees; the layer was found and both logs have the same VUID- lines (12 VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605, 20 VUID-vkCreateDescriptorSetLayout-support-09582, from tests that fail the same way on the base).
This PR on MoltenVK: the fixture it extends, agc_driver_image_plane_bias_on_single_level_volume, fails on the base and with the change at the same point, before the new checks: guest sampler descriptor uses a min or max reduction which the device does not support (MoltenVK has no samplerFilterMinmax). So I can't confirm the shared-artifact checks on Apple's GPU. agc_driver_image_sample_unnormalized and agc_driver_prepared_shaders_indirect pass on both, and agc_driver_pixel_implicit_derivatives is skipped on both. No GPU regression in the group. I didn't count pipeline variants, so I can't say what the lost cross-mode reuse costs in compile time here; pipeline creation is slow on MoltenVK, so that is the one thing worth watching on macOS.
AI-assisted: yes (Claude Code ran the builds, runs and tests and drafted this review)
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed — changes requested
The paired traces and digests now address the earlier missing-report request, but the PR is still based on an older main, and its performance baseline is not the current main.
What I ran
Reviewed PR head 6edeae61a3317444fc6eefde2ca1fbd721a126db (PR base commit 75f3702aed32762d0efcde60e998e7edb93c8ae2) and preview-merged that head onto current main 3a2b91981651569163768854a1fcdc7193b6667b; the merge preview was clean. Environment: Linux x86-64, Git and GitHub CLI. I did not build or run tests locally.
git fetch https://github.com/boykopovar/AnyPS5.git main:refs/review/main-20261029 refs/pull/11952/head:refs/review/pr-11952-20261029
git merge-tree --write-tree refs/review/main-20261029 refs/review/pr-11952-20261029
gh api repos/boykopovar/AnyPS5/compare/75f3702aed32762d0efcde60e998e7edb93c8ae2...3a2b91981651569163768854a1fcdc7193b6667b --jq '.files[].filename'
gh api repos/boykopovar/AnyPS5/commits/6edeae61a3317444fc6eefde2ca1fbd721a126db/check-runs --jq '[.check_runs[]|{name:.name,status:.status,conclusion:.conclusion}]'Results
| Check | Result |
|---|---|
| Current-main merge preview | Pass; clean |
| Files changed on main since the PR base | No overlap with this PR's changed paths |
| Hosted PR checks | Windows, relinker matrix, ASan, conventions and policy checks pass; Linux product, register-context and write-watch jobs are skipped |
| Focused Vulkan tests and performance captures | Present in the PR description and author/reviewer reports; not independently rerun here |
| Local build/tests | Not run |
Command output
git merge-tree --write-tree: d0c921c1a3ab12d9eb402be916c16a79b08aff9d
exit=0
current main: 3a2b91981651569163768854a1fcdc7193b6667b
PR head: 6edeae61a3317444fc6eefde2ca1fbd721a126db
changed-path intersection: (empty)
The check-run query reports success for Windows, Linux/Windows/macOS relinker, relinker-asan, conventions, eligibility, labels and report; it reports skipped for Linux product, write-watch and register-context. These are hosted results, not local test output.
Negative control
| Assertion | Change to code under test | Outcome |
|---|---|---|
| PR-specific tests fail without the implementation change | None performed by me | Not independently exercised; the author/reviewer reports are not a negative-control run by me |
Findings
Blocking
- The PR's recorded base is
75f3702aed32, while currentmainis3a2b91981651. The repository requires branches to be based on, and kept up to date with, currentmain. Although the current-main merge preview is clean and no changed paths overlap, the branch does not satisfy that integration rule. - The performance comparison uses
75f3702aed32as its baseline. After rebasing, the report should compare the rebased change with currentmainusing the same title, scene, machine and session, as required by the performance report instructions.
Non-blocking
- The PR now includes summary lines, trace digests, linked captures, and detailed Linux/NVIDIA focused results. I found no new code defect in this re-check.
Sources
Not verified
- I did not independently build or run the Vulkan fixtures, capture gameplay, or run
tools/trace_digest.py. - I did not run on Linux product CI, a console, or another GPU. The PR's Linux/NVIDIA measurements are author/reviewer-provided evidence.
To get this to a good state
Rebase onto current main, then rerun the same-scene, same-machine baseline/change capture on that base and rebased head; include both aps5-summary.jsonl lines, the traces, and tools/trace_digest.py output. Rerun the focused Vulkan fixtures on the rebased head and record the exact head. I will re-check the new head and repeat the merge and focused validation available here.
|
Refreshed without rewriting history: exact head ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation ctest --test-dir build -R '^(agc_driver_image_plane_bias_on_single_level_volume|agc_driver_pixel_implicit_derivatives|agc_driver_image_sample_unnormalized|agc_driver_prepared_shaders_indirect|agc_driver_emulated_color_compare|agc_driver_image_table)$' -V --timeout 30Gameplay performance runs are postponed at the author's request during a call. The body now distinguishes completed historical captures from the pending comparison after main's later shader/pipeline merges. This is a correctness/branch update, not a new-head FPS claim or a request to dismiss outstanding performance requirements. I am holding the final re-review/full-CI follow-up until the corresponding author-owned prerequisites are complete. The completed earlier-base six-capture report remains pinned to AI-assisted: yes (Codex). |
adriadam10
left a comment
There was a problem hiding this comment.
Re-checked head 7e2c6d6422: the code diff is unchanged from the head we reviewed (DescriptorBindingBuilder.cpp:331 passes the resolved mode through the existing image specialization constant, SpirvImageEmitter.cpp:2010 reads it, the fixture checks shared artifact and pixels), and I found no defect in it. The rebase onto current main requested by @MarcZX10 is done.
One point is still open:
- The PR is labeled
perf, but the description now says "Performance refresh pending" and claims no FPS for this head. The 12.54 → 18.84 FPS pairs were taken on75f3702aed32before #12280 and other shader changes landed. Please add the same-scene, same-machinemainvs headaps5-summary.jsonllines, the traces and thetools/trace_digest.pyoutput on the refreshed base.
Once that is in the description this should be ready to merge.
…ted-queries feat(libSceRudp): answer flush, remote info and buffer status for unconnected contexts
…internal-9532 feat(libSceLibcInternal): declare 149 PS5 3.20 round four exports
…-exports feat(libSceAvSetting): declare 28 callable exports
…320-exports feat(libSceAppInstUtil): declare 26 callable exports
…0-exports feat(libSceUsbStorage): declare 23 callable exports
…20-exports feat(libmdbg_syscore): declare 23 callable exports
fix(libkernel): spin and yield when a condition variable wait relocks its mutex
…320-exports feat(libSceVnaWebsocket): declare 22 callable exports
…er-320-exports feat(libSceCdlgUtilServer): declare 32 callable exports
…e-utf8 fix(tests): decode export-cache Git paths as UTF-8
test(libSceNpCommon): cover event flag clear and cancel and condition wakeups
…lution fix(tools): match whole library filenames in host test selection
…lize-checks fix(libSceNpParty): check initialization first in the state, member and send calls
…web-export-names feat(libkernel_web): name 42 exports from their NIDs
…owing-file-offsets fix(relinker): reject overflowing ELF file offsets
…t-state-internal feat(libSceGnmDriverForNeoMode): answer the internal default context state from SDK 4.00
test(libkernel): run guest_timed_wait_cpu alone on Windows
…ncrel-signed-overflow test(relinker): pin EH sdata2 funcrel signed pointer overflow
…ing-docs-20261030 docs: clarify cache and trace wall-time summaries
…ault fix(libkernel): fail socketpair with EFAULT on an unusable result pointer
|
@adriadam10 @MarcZX10 Completed a new matched-main refresh for exact head The same nine required-Radeon/Khronos/no-cache fixtures give 8/9 passing on both sides, the same existing image-table descriptor-allocation failure (-1000069000), and no VUIDs, missing layers or skips. Eight actual Radeon selections and eight Khronos instance/device insertions per arm are verified. The final hook-free build matches all 51 frozen clean candidate libraries; conventions and whitespace checks pass. Four predeclared pairs AB/BA/BA/AB give mean run frame time 45.986243 → 45.634142 ms, mean paired reduction 0.766008%, two-sided 95% Student-t interval [0.431763%, 1.100254%], df=3. All four pairs improve; GPU work is lower in all four. All ten warm/timed attempts pass scene, focus, cache, input, library and drop audits; eight timed captures, no exclusions, replacements or added repetitions. All eight original traces, summaries, full digests, protocol and provenance are public; all31files were downloaded/byte-verified, including the eight decoded original compressed trace hashes. Every earlier favorable/unfavorable result remains in the description under historical reports and is not pooled here. No universal, cross-title or cold-compilation gain is claimed. Main advanced nine commits during this work to Please re-review the outstanding performance request on this exact head. If satisfactory, a collaborator can run the selected Linux/Windows CI and proceed with merge: gh workflow run build.yml --repo boykopovar/AnyPS5 --ref main --field pr=11952 --field select=trueMy account has no upstream merge or workflow-dispatch permission. AI-assisted: yes (Codex). |
|
Checked the interdiff since the approved head: the shader change is unchanged ( |
|
Additional integration evidence after merge, separate from the reviewed current-main 4K cohort. On frozen The candidate reaches the roughly 60 FPS ceiling in every run (p50 16.684 ms). This establishes the observed reduction on this demanding route; uncapped headroom is unknown. It is a distinct combined-stack/backend/1080p comparison, not another standalone 4K/RADV25 cohort, a fresh-main claim, or a sum of individual percentages. Both trace prefixes remain the frozen source prefix; isolated source-patch and loaded-library hashes identify the actual arms. The selected optimized bound fragment changes from 12,364 to 4,768 bytes, retaining 32 VGPR/108 SGPR/wave64/zero scratch. No milliseconds are inferred from code size. Six matched focused checks pass on each arm, including cached volume/plane/forced-sRGB mode cycling; five actual Khronos instance/device insertions per arm, no VUIDs, missing layers or skips. A separate camp rendering/native-bind/actual-target check passes on both arms. One initial camp screenshot acquisition timed out before readiness; it remains invalid, and one matched retry with loading-only grace passed. No camp FPS or full-game clean-validation claim. Three warm-ups per arm were needed: initial candidate pipeline-cache growth and later RADV built-in additions failed earlier gates. Final independent windows have stable payload/index content, no drops and zero pipeline/new-artifact creation scopes. First-use latency remains incompletely measured. Journal OFF, heap absent, ordinary GPL/optimized LTO and arithmetic mode matched; every GPU run used the lock and power-restoration wrapper. Audited timing summaries, trace digests, protocol, pair directions, provenance and limitations. Raw game-derived material remains private. This supports the existing merged implementation; no new implementation or duplicate PR is proposed. AI-assisted: yes (Codex). |
What
Registration modules currently dispatch each direct image operation across runtime image modes even though descriptor preparation already knows the selected mode. This keeps unused sampling paths and their control flow in native shaders.
This deliberately trades cross-mode prepared-module reuse for smaller native code. It complements #8716’s equivalent-switch-target deduplication and does not require that PR.
Tested
Fresh matched integration on 2026-10-31: exact head
19375d89c474e5dd8df739f6a9a76fc021afc618incorporates pinned mainc21eb9a4d0748c11d3061cf402737eda2a30d00fwith a history-preserving merge. No other open shader optimization is combined here. This head also removes the duplicate macOS write-watch fault-test registration loop (the same five-line CI correction verified in #12299); it changes no measured runtime behavior. Earlier standalone cohorts remain below with their original revisions and unfavorable results, and are not pooled with this comparison.At publication, live main had advanced nine commits to
f776fddcffd1cfece220ecdd894371988b164f6a. The actual pinned-main → live-main comparison changes HTTP2, WebRTC, NKWebKitRequirements, their tests/debt and job-manager reference tooling; none of this PR's shader/fixture paths changes. The live-main merge preview is clean. That does not establish whole-runtime equivalence: the measurements and hardware tests below remain pinned to the named baseline/head.On this main and exact head, the same nine focused fixtures run with required Vulkan, disabled shader cache,
VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, verbose CTest and the physical Radeon 760M:agc_shader_memory,agc_driver_depth_plane_sampling,agc_driver_image_address_dimension,agc_driver_image_plane_bias_on_single_level_volume,agc_driver_image_sample_unnormalized,agc_driver_image_table,agc_driver_pixel_implicit_derivatives,agc_driver_prepared_graphics,agc_driver_runtime_images. 8/9 pass on each side; the same existing image-table descriptor-allocation failure (-1000069000) remains. Eight actual Radeon selections and eight Khronos instance/device insertions per side; zero VUIDs, missing-layer messages or skips. The baseline receives only the corresponding volume-fixture assertions, without production changes. Release native libraries and focused targets build; conventions and whitespace checks pass. The final hook-free build matches all 51 frozen clean candidate libraries.Four predeclared warmed pairs: mean run frame time 45.986243 → 45.634142 ms, mean paired reduction 0.766008%, two-sided 95% Student-t interval [0.431763%, 1.100254%], df=3. Mean run FPS is separately 21.746382 → 21.914396; mean GPU work 42.619500 → 42.309000 ms/present. All four pairs improve for frame time and GPU work. This is a small observed effect for the measured title/scene/machine/session, not a universal or cold-compilation claim.
Main/candidate run ranges: 0.654885682/0.755680518 ms; sample standard deviations 0.312409494/0.353288536 ms. Individual frames are not independent repetitions. Fixed order: warm A, warm B, A1, B1, B2, A2, B3, A3, A4, B4. All ten attempts valid; eight timed captures; no exclusions, replacements or appended runs.
PPSA28997 v01.008.001 stationary saved camp after Continue; identical saves, 1920×1080 guest output, focused1152×648 Wayland client, mailbox. AMD Ryzen5 7640HS / Radeon760M integrated GPU with shared system memory, RADV Mesa25.0.7-2+deb13u1, Debian13.7 / Linux7.2.12-x64v3-xanmod1. Independent per-arm warmed caches cloned for each run; shader/driver manifests stay unchanged across each window. Every process verifies the actual RADV ICD, 51 unique native and nine unique guest libraries; native binary hashes differ only for AGC and VideoOut, whose build also embeds revision metadata. The implementation deliberately trades cross-mode prepared-module reuse for smaller specialized native shaders; cold compilation and the wider pipeline-variant tradeoff remain unmeasured.
Timing uses only
APS5_TRACE_SECONDS=30:12andAPS5_TRACE_DIR, default buffer, no validation or diagnostic profiling, game stdout/stderr on a PTY. Camp is checked twice with all input released before28s and after timing; no screenshots/input near the timed window. The identical uncommitted readiness hook supplies only the first-present clock and pre/post-window screenshot requests. Dirty=null reflects verified dependency symlinks, with exact source/patch/library provenance retained. No game files, saves, shaders, ISA, screenshots, native libraries, hardware captures or console logs are published.All eight original lossless traces, original summaries, complete trace digests, paired calculations, protocol, source/library hashes, dependencies and parsed validation audit are public. All31files were downloaded and byte-verified, including the SHA256 of all eight decoded original compressed traces. This report measures the two named revisions; it does not claim timing validation of later main revisions or other open-PR compositions. AI-assisted:yes(Codex).
Fresh original main/PR summary lines
A1:
{"commit":"c21eb9a4d074","dirty":null,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"30:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 30:12","first_present":696,"ms":12020.782},"presents":262,"frame_ms":{"p50":45.729,"p90":46.67,"p99":48.462,"max":48.883},"gpu_busy_ms_per_present":42.607,"worker_busy_pct":{"queue worker 0x0":78.378},"top_phases_ms_per_frame":{"Driver.Packet":35.816,"Driver.Packet.draw":33.208,"Driver.Draw":33.167,"Driver.Draw.draw_enqueued":29.27,"Recorder.Sync":27.986,"VideoOut.Flip":9.033,"Driver.Present":9.02,"VideoOut.Flip.present":8.994},"trace_dropped":false,"trace":"aps5-trace-c21eb9a4d074-583591.json.gz"}B1:
{"commit":"19375d89c474","dirty":null,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"30:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 30:12","first_present":660,"ms":12030.842},"presents":265,"frame_ms":{"p50":45.36,"p90":45.817,"p99":46.9,"max":47.127},"gpu_busy_ms_per_present":42.193,"worker_busy_pct":{"queue worker 0x0":78.15},"top_phases_ms_per_frame":{"Driver.Packet":35.36,"Driver.Packet.draw":32.911,"Driver.Draw":32.871,"Driver.Draw.draw_enqueued":29.416,"Recorder.Sync":28.392,"VideoOut.Flip":9.019,"Driver.Present":9.004,"VideoOut.Flip.present":8.978},"trace_dropped":false,"trace":"aps5-trace-19375d89c474-584443.json.gz"}B2:
{"commit":"19375d89c474","dirty":null,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"30:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 30:12","first_present":699,"ms":12046.477},"presents":261,"frame_ms":{"p50":46.049,"p90":46.781,"p99":48.119,"max":49.387},"gpu_busy_ms_per_present":42.428,"worker_busy_pct":{"queue worker 0x0":78.408},"top_phases_ms_per_frame":{"Driver.Packet":36.05,"Driver.Packet.draw":33.243,"Driver.Draw":33.198,"Driver.Draw.draw_enqueued":29.308,"Recorder.Sync":27.965,"VideoOut.Flip":8.984,"Driver.Present":8.965,"VideoOut.Flip.present":8.939},"trace_dropped":false,"trace":"aps5-trace-19375d89c474-585266.json.gz"}A2:
{"commit":"c21eb9a4d074","dirty":null,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"30:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 30:12","first_present":653,"ms":12030.999},"presents":259,"frame_ms":{"p50":46.385,"p90":47.001,"p99":47.635,"max":47.755},"gpu_busy_ms_per_present":42.714,"worker_busy_pct":{"queue worker 0x0":78.496},"top_phases_ms_per_frame":{"Driver.Packet":36.316,"Driver.Packet.draw":33.441,"Driver.Draw":33.396,"Driver.Draw.draw_enqueued":29.077,"Recorder.Sync":27.624,"VideoOut.Flip":9.04,"Driver.Present":9.023,"VideoOut.Flip.present":8.996},"trace_dropped":false,"trace":"aps5-trace-c21eb9a4d074-586048.json.gz"}B3:
{"commit":"19375d89c474","dirty":null,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"30:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 30:12","first_present":630,"ms":12025.252},"presents":264,"frame_ms":{"p50":45.434,"p90":46.055,"p99":48.653,"max":52.167},"gpu_busy_ms_per_present":42.286,"worker_busy_pct":{"queue worker 0x0":78.287},"top_phases_ms_per_frame":{"Driver.Packet":35.532,"Driver.Packet.draw":32.994,"Driver.Draw":32.953,"Driver.Draw.draw_enqueued":29.333,"Recorder.Sync":28.084,"VideoOut.Flip":8.983,"Driver.Present":8.968,"VideoOut.Flip.present":8.942},"trace_dropped":false,"trace":"aps5-trace-19375d89c474-586864.json.gz"}A3:
{"commit":"c21eb9a4d074","dirty":null,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"30:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 30:12","first_present":685,"ms":12003.672},"presents":262,"frame_ms":{"p50":45.778,"p90":46.276,"p99":47.426,"max":48.0},"gpu_busy_ms_per_present":42.616,"worker_busy_pct":{"queue worker 0x0":78.395},"top_phases_ms_per_frame":{"Driver.Packet":35.786,"Driver.Packet.draw":33.292,"Driver.Draw":33.254,"Driver.Draw.draw_enqueued":29.419,"Recorder.Sync":27.955,"VideoOut.Flip":9.087,"Driver.Present":9.071,"VideoOut.Flip.present":9.044},"trace_dropped":false,"trace":"aps5-trace-c21eb9a4d074-587725.json.gz"}A4:
{"commit":"c21eb9a4d074","dirty":null,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"30:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 30:12","first_present":616,"ms":12044.571},"presents":263,"frame_ms":{"p50":45.745,"p90":46.32,"p99":47.098,"max":48.074},"gpu_busy_ms_per_present":42.541,"worker_busy_pct":{"queue worker 0x0":78.316},"top_phases_ms_per_frame":{"Driver.Packet":35.737,"Driver.Packet.draw":33.267,"Driver.Draw":33.225,"Driver.Draw.draw_enqueued":29.34,"Recorder.Sync":28.29,"VideoOut.Flip":9.055,"Driver.Present":9.044,"VideoOut.Flip.present":9.017},"trace_dropped":false,"trace":"aps5-trace-c21eb9a4d074-588553.json.gz"}B4:
{"commit":"19375d89c474","dirty":null,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"30:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 30:12","first_present":689,"ms":12039.449},"presents":265,"frame_ms":{"p50":45.349,"p90":45.935,"p99":47.294,"max":47.99},"gpu_busy_ms_per_present":42.329,"worker_busy_pct":{"queue worker 0x0":78.255},"top_phases_ms_per_frame":{"Driver.Packet":35.43,"Driver.Packet.draw":32.985,"Driver.Draw":32.945,"Driver.Draw.draw_enqueued":29.359,"Recorder.Sync":28.224,"VideoOut.Flip":9.034,"Driver.Present":9.022,"VideoOut.Flip.present":8.996},"trace_dropped":false,"trace":"aps5-trace-19375d89c474-589375.json.gz"}Historical reports — original revisions and limitations retained
Integrated main
52f212ec053f917455f2f87674ddb708dcc545d8into head7e669ad577304d31e7de5659477ba5318af433b6. Main advanced fromc40cef843681during the performance batch; the traces below measure the earlier candidateea86e2fd6cee, not the newer head. The intervening delta includes AGC test changes, a libc time-name fix, exports and tests.On main
52f212ec053fand head7e669ad57730, the same 15 selected tests were run on AMD Radeon 760M, RADV Mesa 25.0.7-2+deb13u1, Debian 13, with required Vulkan, shader cache disabled and Khronos validation. Thirteen passed on each.agc_driver_image_tableandagc_driver_recorderboth failed on each withvkAllocateDescriptorSetsresult-1000069000; no VUIDs, missing layers or skips. The selection covers the prior six shader checks plus upstream recorder, indirect-draw, libc time and NP tests. The baseline uses its own volume fixture version. Local conventions and diff checks passed.Three predeclared warmed pairs compare main
c40cef843681with PRea86e2fd6ceein the same stationary PPSA28997 camp scene, machine and session. Mean FPS 19.92263 → 20.08934 (+0.837%); pair changes −0.258%, +1.905%, +0.874%. GPU work averages 46.814 → 46.349 ms/present. The FPS direction is mixed; these samples do not establish a consistently positive FPS change. All six captures passed the scene, focus, cache, loaded-library and trace-drop audits; no timed exclusions or added runs.Six lossless traces, summaries, digests, protocol and provenance were downloaded and hash-verified. The bundle is timing-only. Both measured arms use the same disclosed private observer, reflected in the dirty flags. The newer main delta was tested as described above; no gameplay measurement of
52f212or7e669ais claimed.A1
{"commit":"c40cef843681","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2389,"ms":12007.248},"presents":240,"frame_ms":{"p50":50.021,"p90":50.501,"p99":50.883,"max":51.191},"gpu_busy_ms_per_present":46.681,"worker_busy_pct":{"queue worker 0x0":77.710},"top_phases_ms_per_frame":{"Driver.Packet":38.710,"Driver.Packet.draw":35.485,"Driver.Draw":35.419,"Driver.Draw.draw_enqueued":31.028,"Recorder.Sync":29.592,"VideoOut.Flip":10.209,"Driver.Present":10.192,"VideoOut.Flip.present":10.161},"trace_dropped":false,"trace":"aps5-trace-c40cef843681-3138093.json.gz"}seconds 90:12 from present 2389: 240 presents, frame p50 50.0 / p90 50.5 / p99 50.9 / max 51.2 ms, GPU busy 46.7 ms per present
AMD Radeon 760M (RADV PHOENIX), radv Mesa 25.0.7-2+deb13u1, Linux 7.2.12-x64v3-xanmod1, 1920x1080, commit c40cef8 (dirty), dropped: no
{"commit":"c40cef843681","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2389,"ms":12007.248},"presents":240,"frame_ms":{"p50":50.021,"p90":50.501,"p99":50.883,"max":51.191},"gpu_busy_ms_per_present":46.681,"worker_busy_pct":{"queue worker 0x0":77.71},"top_phases_ms_per_frame":{"Driver.Packet":38.71,"Driver.Packet.draw":35.485,"Driver.Draw":35.419,"Driver.Draw.draw_enqueued":31.028,"Recorder.Sync":29.592,"VideoOut.Flip":10.209,"Driver.Present":10.192,"VideoOut.Flip.present":10.161},"trace_dropped":false,"trace":"aps5-trace-c40cef843681-3138093.json.gz"}Slowest frames (largest slices inside each, inclusive)
Threads (ms per frame)
Largest slices (ms per frame, inclusive, all threads): batch 46.6, Driver.Packet 36.6, Driver.Packet.draw 34.7, Driver.Draw 34.6, Driver.Draw.draw_enqueued 30.3, Recorder.Sync 29.6, Driver.WorkerWait 10.8, Driver.WorkerWait.idle_and_completion_poll 10.8, VideoOut.Flip 10.2, Driver.Present 10.2
Longest waits
Largest GPU batches (GPU ranges inside, and the CPU slices that recorded each, inclusive)
B1
{"commit":"ea86e2fd6cee","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2376,"ms":12038.292},"presents":240,"frame_ms":{"p50":50.100,"p90":51.077,"p99":52.573,"max":57.040},"gpu_busy_ms_per_present":46.518,"worker_busy_pct":{"queue worker 0x0":77.723},"top_phases_ms_per_frame":{"Driver.Packet":38.828,"Driver.Packet.draw":35.483,"Driver.Draw":35.412,"Driver.Draw.draw_enqueued":30.771,"Recorder.Sync":29.027,"VideoOut.Flip":10.107,"Driver.Present":10.078,"VideoOut.Flip.present":10.048},"trace_dropped":false,"trace":"aps5-trace-ea86e2fd6cee-3139725.json.gz"}seconds 90:12 from present 2376: 240 presents, frame p50 50.1 / p90 51.1 / p99 52.6 / max 57.0 ms, GPU busy 46.5 ms per present
AMD Radeon 760M (RADV PHOENIX), radv Mesa 25.0.7-2+deb13u1, Linux 7.2.12-x64v3-xanmod1, 1920x1080, commit ea86e2f (dirty), dropped: no
{"commit":"ea86e2fd6cee","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2376,"ms":12038.292},"presents":240,"frame_ms":{"p50":50.1,"p90":51.077,"p99":52.573,"max":57.04},"gpu_busy_ms_per_present":46.518,"worker_busy_pct":{"queue worker 0x0":77.723},"top_phases_ms_per_frame":{"Driver.Packet":38.828,"Driver.Packet.draw":35.483,"Driver.Draw":35.412,"Driver.Draw.draw_enqueued":30.771,"Recorder.Sync":29.027,"VideoOut.Flip":10.107,"Driver.Present":10.078,"VideoOut.Flip.present":10.048},"trace_dropped":false,"trace":"aps5-trace-ea86e2fd6cee-3139725.json.gz"}Slowest frames (largest slices inside each, inclusive)
Threads (ms per frame)
Largest slices (ms per frame, inclusive, all threads): batch 46.5, Driver.Packet 36.8, Driver.Packet.draw 34.8, Driver.Draw 34.7, Driver.Draw.draw_enqueued 30.0, Recorder.Sync 29.0, Driver.WorkerWait 10.8, Driver.WorkerWait.idle_and_completion_poll 10.8, VideoOut.Flip 10.1, Driver.Present 10.1
Longest waits
Largest GPU batches (GPU ranges inside, and the CPU slices that recorded each, inclusive)
B2
{"commit":"ea86e2fd6cee","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2379,"ms":12046.682},"presents":243,"frame_ms":{"p50":49.540,"p90":49.977,"p99":50.305,"max":51.906},"gpu_busy_ms_per_present":46.312,"worker_busy_pct":{"queue worker 0x0":77.501},"top_phases_ms_per_frame":{"Driver.Packet":38.264,"Driver.Packet.draw":35.034,"Driver.Draw":34.966,"Driver.Draw.draw_enqueued":30.803,"Recorder.Sync":29.402,"VideoOut.Flip":10.174,"Driver.Present":10.158,"VideoOut.Flip.present":10.127},"trace_dropped":false,"trace":"aps5-trace-ea86e2fd6cee-3141378.json.gz"}seconds 90:12 from present 2379: 243 presents, frame p50 49.5 / p90 50.0 / p99 50.3 / max 51.9 ms, GPU busy 46.3 ms per present
AMD Radeon 760M (RADV PHOENIX), radv Mesa 25.0.7-2+deb13u1, Linux 7.2.12-x64v3-xanmod1, 1920x1080, commit ea86e2f (dirty), dropped: no
{"commit":"ea86e2fd6cee","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2379,"ms":12046.682},"presents":243,"frame_ms":{"p50":49.54,"p90":49.977,"p99":50.305,"max":51.906},"gpu_busy_ms_per_present":46.312,"worker_busy_pct":{"queue worker 0x0":77.501},"top_phases_ms_per_frame":{"Driver.Packet":38.264,"Driver.Packet.draw":35.034,"Driver.Draw":34.966,"Driver.Draw.draw_enqueued":30.803,"Recorder.Sync":29.402,"VideoOut.Flip":10.174,"Driver.Present":10.158,"VideoOut.Flip.present":10.127},"trace_dropped":false,"trace":"aps5-trace-ea86e2fd6cee-3141378.json.gz"}Slowest frames (largest slices inside each, inclusive)
Threads (ms per frame)
Largest slices (ms per frame, inclusive, all threads): batch 46.3, Driver.Packet 36.1, Driver.Packet.draw 34.3, Driver.Draw 34.2, Driver.Draw.draw_enqueued 30.1, Recorder.Sync 29.4, Driver.WorkerWait 10.8, Driver.WorkerWait.idle_and_completion_poll 10.8, VideoOut.Flip 10.2, Driver.Present 10.2
Longest waits
Largest GPU batches (GPU ranges inside, and the CPU slices that recorded each, inclusive)
A2
{"commit":"c40cef843681","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2400,"ms":12023.566},"presents":238,"frame_ms":{"p50":50.478,"p90":50.971,"p99":51.862,"max":52.049},"gpu_busy_ms_per_present":47.095,"worker_busy_pct":{"queue worker 0x0":77.899},"top_phases_ms_per_frame":{"Driver.Packet":39.184,"Driver.Packet.draw":35.839,"Driver.Draw":35.772,"Driver.Draw.draw_enqueued":31.189,"Recorder.Sync":29.575,"VideoOut.Flip":10.203,"Driver.Present":10.176,"VideoOut.Flip.present":10.145},"trace_dropped":false,"trace":"aps5-trace-c40cef843681-3142850.json.gz"}seconds 90:12 from present 2400: 238 presents, frame p50 50.5 / p90 51.0 / p99 51.9 / max 52.0 ms, GPU busy 47.1 ms per present
AMD Radeon 760M (RADV PHOENIX), radv Mesa 25.0.7-2+deb13u1, Linux 7.2.12-x64v3-xanmod1, 1920x1080, commit c40cef8 (dirty), dropped: no
{"commit":"c40cef843681","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2400,"ms":12023.566},"presents":238,"frame_ms":{"p50":50.478,"p90":50.971,"p99":51.862,"max":52.049},"gpu_busy_ms_per_present":47.095,"worker_busy_pct":{"queue worker 0x0":77.899},"top_phases_ms_per_frame":{"Driver.Packet":39.184,"Driver.Packet.draw":35.839,"Driver.Draw":35.772,"Driver.Draw.draw_enqueued":31.189,"Recorder.Sync":29.575,"VideoOut.Flip":10.203,"Driver.Present":10.176,"VideoOut.Flip.present":10.145},"trace_dropped":false,"trace":"aps5-trace-c40cef843681-3142850.json.gz"}Slowest frames (largest slices inside each, inclusive)
Threads (ms per frame)
Largest slices (ms per frame, inclusive, all threads): batch 47.1, Driver.Packet 37.1, Driver.Packet.draw 35.1, Driver.Draw 35.1, Driver.Draw.draw_enqueued 30.4, Recorder.Sync 29.6, Driver.WorkerWait 10.8, Driver.WorkerWait.idle_and_completion_poll 10.8, VideoOut.Flip 10.2, Driver.Present 10.2
Longest waits
Largest GPU batches (GPU ranges inside, and the CPU slices that recorded each, inclusive)
A3
{"commit":"c40cef843681","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2415,"ms":12008.709},"presents":240,"frame_ms":{"p50":50.060,"p90":50.453,"p99":51.557,"max":52.448},"gpu_busy_ms_per_present":46.666,"worker_busy_pct":{"queue worker 0x0":77.755},"top_phases_ms_per_frame":{"Driver.Packet":38.739,"Driver.Packet.draw":35.542,"Driver.Draw":35.477,"Driver.Draw.draw_enqueued":30.805,"Recorder.Sync":29.433,"VideoOut.Flip":10.156,"Driver.Present":10.142,"VideoOut.Flip.present":10.108},"trace_dropped":false,"trace":"aps5-trace-c40cef843681-3144380.json.gz"}seconds 90:12 from present 2415: 240 presents, frame p50 50.1 / p90 50.5 / p99 51.6 / max 52.4 ms, GPU busy 46.7 ms per present
AMD Radeon 760M (RADV PHOENIX), radv Mesa 25.0.7-2+deb13u1, Linux 7.2.12-x64v3-xanmod1, 1920x1080, commit c40cef8 (dirty), dropped: no
{"commit":"c40cef843681","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2415,"ms":12008.709},"presents":240,"frame_ms":{"p50":50.06,"p90":50.453,"p99":51.557,"max":52.448},"gpu_busy_ms_per_present":46.666,"worker_busy_pct":{"queue worker 0x0":77.755},"top_phases_ms_per_frame":{"Driver.Packet":38.739,"Driver.Packet.draw":35.542,"Driver.Draw":35.477,"Driver.Draw.draw_enqueued":30.805,"Recorder.Sync":29.433,"VideoOut.Flip":10.156,"Driver.Present":10.142,"VideoOut.Flip.present":10.108},"trace_dropped":false,"trace":"aps5-trace-c40cef843681-3144380.json.gz"}Slowest frames (largest slices inside each, inclusive)
Threads (ms per frame)
Largest slices (ms per frame, inclusive, all threads): batch 46.6, Driver.Packet 36.7, Driver.Packet.draw 34.8, Driver.Draw 34.8, Driver.Draw.draw_enqueued 30.1, Recorder.Sync 29.4, Driver.WorkerWait 10.8, Driver.WorkerWait.idle_and_completion_poll 10.7, VideoOut.Flip 10.2, Driver.Present 10.1
Longest waits
Largest GPU batches (GPU ranges inside, and the CPU slices that recorded each, inclusive)
B3
{"commit":"ea86e2fd6cee","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2424,"ms":12003.896},"presents":242,"frame_ms":{"p50":49.535,"p90":50.083,"p99":51.241,"max":51.424},"gpu_busy_ms_per_present":46.218,"worker_busy_pct":{"queue worker 0x0":77.468},"top_phases_ms_per_frame":{"Driver.Packet":38.270,"Driver.Packet.draw":35.008,"Driver.Draw":34.939,"Driver.Draw.draw_enqueued":30.730,"Recorder.Sync":29.296,"VideoOut.Flip":10.153,"Driver.Present":10.134,"VideoOut.Flip.present":10.103},"trace_dropped":false,"trace":"aps5-trace-ea86e2fd6cee-3145923.json.gz"}seconds 90:12 from present 2424: 242 presents, frame p50 49.5 / p90 50.1 / p99 51.2 / max 51.4 ms, GPU busy 46.2 ms per present
AMD Radeon 760M (RADV PHOENIX), radv Mesa 25.0.7-2+deb13u1, Linux 7.2.12-x64v3-xanmod1, 1920x1080, commit ea86e2f (dirty), dropped: no
{"commit":"ea86e2fd6cee","dirty":true,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:12"},"gpu":"AMD Radeon 760M (RADV PHOENIX)","driver":"radv Mesa 25.0.7-2+deb13u1","os":"Linux 7.2.12-x64v3-xanmod1","cpu":"AMD Ryzen 5 7640HS w/ Radeon 760M Graphics","cpu_threads":12,"memory_mib":23820,"title_id":"PPSA28997","title":"God of War Sons of Sparta","content_version":"01.008.001","resolution":"1920x1080","window":{"spec":"seconds 90:12","first_present":2424,"ms":12003.896},"presents":242,"frame_ms":{"p50":49.535,"p90":50.083,"p99":51.241,"max":51.424},"gpu_busy_ms_per_present":46.218,"worker_busy_pct":{"queue worker 0x0":77.468},"top_phases_ms_per_frame":{"Driver.Packet":38.27,"Driver.Packet.draw":35.008,"Driver.Draw":34.939,"Driver.Draw.draw_enqueued":30.73,"Recorder.Sync":29.296,"VideoOut.Flip":10.153,"Driver.Present":10.134,"VideoOut.Flip.present":10.103},"trace_dropped":false,"trace":"aps5-trace-ea86e2fd6cee-3145923.json.gz"}Slowest frames (largest slices inside each, inclusive)
Threads (ms per frame)
Largest slices (ms per frame, inclusive, all threads): batch 46.2, Driver.Packet 36.1, Driver.Packet.draw 34.2, Driver.Draw 34.2, Driver.Draw.draw_enqueued 30.0, Recorder.Sync 29.3, Driver.WorkerWait 10.8, Driver.WorkerWait.idle_and_completion_poll 10.8, VideoOut.Flip 10.2, Driver.Present 10.1
Longest waits
Largest GPU batches (GPU ranges inside, and the CPU slices that recorded each, inclusive)
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)