Repository navigation
perf(shader): skip log2 correction outside the near-one range - #10336
Conversation
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
Evaluate the existing accuracy correction only inside its established input range. Keep the native log2 result and all correction thresholds and arithmetic unchanged, and cover inputs adjacent to both range boundaries in the existing GPU test.
76da856 to
d7bb63b
Compare
|
Rebased onto main
Present-weighted mean GPU time: 33.5774 → 33.0701 ms/present, 0.5073 ms (1.51%) lower. Main repeat span is 0.083 ms; PR repeat span is 0.056 ms. Both PR captures are below both main captures. This is a small sample of the startup menu on one GPU; no gameplay, cross-title or title-loading speedup is claimed. Both runtime builds and all six paired correctness/GPU fixtures passed with Vulkan required, shader caching disabled and Khronos validation actually loaded. No skipped tests, missing-layer warnings or VUID errors. Same warmed menu scene, executable, save seed and settings; no dropped trace events. Non-display GPU activity was observed and retained in the evidence: A1: 9.973 GPU ms over the full 24-second capture (0.015438 ms/present), L1: 9.554 GPU ms over the full 24-second capture (0.014302 ms/present), L2: 9.737 GPU ms over the full 24-second capture (0.014664 ms/present), A2: 9.872 GPU ms over the full 24-second capture (0.015376 ms/present). This background activity limits attribution of small differences. The PR description contains the methodology and full summary lines. Download fresh traces, digests, validation logs and the exact tested patch. |
|
Manually checked the shared-file patches flagged by the overlap bot: #4072 adds packed-f16 FMA, #5021 changes lane shuffle and NaN handling, and #7410 adds half-wave exchange. None changes |
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed exact head d7bb63bb3b951df45294c34cc0c63028577736f9. EmitFPLog2 still computes the native log2 result and the same inclusive abs(x - 1) <= 1/8 gate; Log2SeriesNearOne, the four-ULP comparison and the selected results are unchanged, but series work is emitted only in the near branch. The four added boundary inputs cover the adjacent f32 values on both sides of the lower and upper cutoffs.
I manually checked the overlapping math-emitter hunks from #4072, #5021 and #7410; none changes EmitFPLog2 or the near-one correction. Conventions and git diff --check pass. The author reports all six paired Linux/RADV runtime fixtures passing with Khronos validation and provides four fresh traces. The report limits its 1.51% mean GPU result to the tested startup menu on one GPU and does not claim broad gameplay gains. Product jobs are skipped by policy, and I could not rerun the Vulkan test locally because this environment has no GPU device. I found no blocker.
MarcZX10
left a comment
There was a problem hiding this comment.
Follow-up to my earlier approval: after refreshing upstream/main, this branch's merge base is 11b175a6b956, with 7,168 current-main commits since it. CONTRIBUTING.md asks contributors to keep branches up to date with main. The GPU fixtures and performance comparison in the PR were run on that older base, while current hosted product tests are skipped. Please update to current main and rerun the focused log2 boundary/runtime tests with Khronos validation, then refresh the paired performance comparison on the same current base. The reported result is carefully scoped, but it does not validate the current integration. I will revisit approval after current-base evidence is available.
|
@MarcZX10 updated to main The full runtime-library builds and all six focused correctness fixtures pass independently on that unmodified main and this exact head: IR rewrite/differential, SPIR-V module, log-near-one, VOP1 floating-point unary, runtime buffer descriptors and scalar wide loads. Tests ran on AMD Radeon 760M / RADV Mesa 25.0.7 with Current-base correctness evidence includes verbose logs, build logs, result manifests, the exact patches and validation runner. The performance-comparison refresh is deferred at the author's request. No performance tests were run today; the description now explicitly labels the older figures and traces as historical and says they do not measure this updated head. The current-base integration/correctness portion is addressed; the performance portion remains pending. AI-assisted update and validation. |
|
@MarcZX10 the performance refresh is complete on the same current base used for the correctness checks: main
Present-weighted mean GPU time is 33.6322 → 33.0772 ms/present, 0.5550 ms (1.65%) lower. Both PR repeats are below both main controls. This does not establish an FPS or stutter improvement: frame-rate and p99 results were inconsistent, including the worse PR run retained above. Same warmed startup menu, executable, save seed, window and settings; main/PR/PR/main order. Runtime hashes and commit provenance match; no dirty build or dropped events. No hardware profiling locks or SQTT/RGP were used. All numeric captures are retained, including observed background GPU activity and temperature peaks in the audit. The menu was confirmed before every trace and afterward in six of seven; A2's post-capture image selected another active window and was discarded. Physical keys/mouse were ignored and scripted input ended before the trace window. This is a small sample on one Radeon 760M, with no broader gameplay or loading-time claim. Fresh traces, digests, summary lines, audit data and same-base correctness evidence. The PR description now contains these current results instead of the deferred/historical comparison. The current-base correctness checks remain green, and the requested performance evidence is now available for another look. AI-assisted validation and reporting. |
|
@Filip722 the refreshed tables retain worse frame-time tails: #10336 L1 p99 is 60.851 ms versus 42.058/48.405 ms controls, and #10337 S2 is 67.350 ms versus 48.405/43.595 ms controls. The lower mean GPU time is a separate result. Before we clear the performance/no-regression bar, please investigate whether these repeats reflect capture variance or a regression, or add matched repeats with confirmed scene/window focus. Keep the original traces and the discarded A2 post-capture screenshot qualification. This does not assume the PR caused the outliers or request a stutter claim. |
|
@oneandonlydean @MarcZX10 completed the requested matched repeats on unchanged head The earlier setup reached 99–101°C on the GPU and was thermally stressed; those conditions limited confidence in the old timing tails. The new valid cohort peaks at 81°C GPU / 80.875°C CPU package, with zero sampled thermal/PROCHOT flags. The old runs lacked firmware throttle flags, so I am not claiming their stalls were proven to be thermal throttling.
Present-weighted mean GPU time: 33.5922 → 33.1057 ms/present, 0.4865 ms (1.45%) lower. PR p99 range: 37.850–38.583 ms; main controls: 38.390–39.435 ms. No frame over 50 ms occurred in the valid trace intervals. The earlier 60.851/67.350 ms p99 outliers did not reproduce. All valid timed windows have continuous active-window/size confirmation, locally verified matching pre/post menu images, matching runtime hashes, clean summaries and no dropped trace events. Two attempts failed the strict focus rule: S2 (p99 37.586 ms) and A4 (p99 39.402 ms); they remain in the evidence, with labeled replacements S2r/A4r. No numeric outlier was silently removed. The original traces and discarded A2 post-capture image qualification remain preserved. Cooling, focus control and settling time changed together, so the old cause is still unproven. The requested tail-regression pattern did not reproduce in these matched runs; no production change was indicated. Same-head correctness and conventions checks remain passing. Download the cooled-repeat traces, digests, all included/excluded summaries, thermal/focus telemetry, original-outlier analysis, thermal preflight and same-head correctness evidence. No game files, saves, screenshots, binaries or shader caches are included. The PR description now contains the cooled repeat results and full exact-head summary lines. AI-assisted investigation, validation and reporting. |
|
Thanks @Filip722, the cooled matched repeats answer what I asked. On |
|
@MarcZX10, could you re-review unchanged head @oneandonlydean, could you trigger full Linux/Windows CI for this head, or link the run if it is already queued? The PR's visible product-build checks are skipped; Filip722 has read-only access upstream. Per CONTRIBUTING.md: gh workflow run build.yml --repo boykopovar/AnyPS5 --ref main --field pr=10336AI-assisted follow-up. |
What
The
log2lowering evaluates its eight-term near-one correction for every input, including inputs outside the range where that correction can be selected. This adds unnecessary shader work to the startup/menu rendering in God of War Sons of Sparta (PPSA28997).abs(x - 1) <= 1/8, reusing the structured conditional-emission helper.This is a small optimization and does not resolve the full reported 11 FPS problem. No system-library exports are added.
The former #8612 overlap is merged. The rebase retains its
ExactSub/ExactMulhelpers.Tested
Cooled matched repeats on 2026-10-25 UTC: main
2742004ed28fversus exact PR head5d0cddb50e2c. Four main controls and three independent PR repeats; code and original patch are unchanged. The other performance PR is not included.The earlier mini-PC setup was thermally stressed, reaching 99–101°C on the GPU, and the captures lacked continuous focus verification. Those thermal conditions limited confidence in the earlier comparison. After a cooling upgrade, a six-minute baseline preflight found no thermal/PROCHOT flags in 1,441 samples. The new valid repeat cohort peaks at GPU 81°C and CPU package Tctl 80.875°C, with zero sampled thermal flags and 2599 MHz GPU clock throughout its timed windows. The old captures did not record firmware throttle flags, so thermal throttling is not a proven cause of the old stalls.
Same PPSA28997 version 01.008.001 startup menu, converted executable, copied save seed and per-commit warmed shader/Mesa caches. Radeon 760M (RADV PHOENIX), Mesa 25.0.7-2+deb13u1, Debian 13 / Linux 7.2.10-x64v3-xanmod1, GCC 15.2.0. Wayland window 1152×648, guest 1920×1080. Each run starts with GPU/package ≤53°C for 10 seconds. Cross at 45 seconds; trace window
90:30lets startup activity settle. Existing GPU power modehighwas left unchanged. No SQTT/RGP, hardware profiling lock, extra profile/trace switch, validation or timing interception layer was used during measurement; output used a PTY.Window activation and geometry changes were monitored continuously. The ten valid captures remained active at 1152×648 throughout their measurement windows; all pre/post scene images were inspected locally and show the same menu. Two attempts failed the predeclared focus rule and remain disclosed: S2 p99 37.586 ms lost focus and was replaced by S2r; A4 p99 39.402 ms had a 123 ms focus interruption and was replaced by A4r. Both were excluded regardless of favorable timings. Fixed accepted order: A1, L1, S1, A2, S2r, L2, A3, L3, S3, A4r. All other captures were retained.
Thermal metrics were sampled every 250 ms with a 96°C process guard. Package/current-limit flags and background GPU activity are retained in the audit. Runtime-library hashes match the exact builds; every summary is clean with no dropped events; all owned processes exited.
2742004ed28f5d0cddb50e2c2742004ed28f5d0cddb50e2c2742004ed28f5d0cddb50e2c2742004ed28fPresent-weighted mean GPU time: 33.5922 → 33.1057 ms/present, 0.4865 ms (1.45%) lower. PR p99 range: 37.850–38.583 ms; main controls: 38.390–39.435 ms. No frame over 50 ms occurred in the valid trace intervals. The earlier 60.851/67.350 ms p99 outliers did not reproduce.
The earlier same-head runtime-library builds and all six focused correctness fixtures passed independently on main and each PR with Vulkan required, shader cache disabled and Khronos validation actually loaded: no missing-layer warnings, skips or VUID errors. Conventions and whitespace checks pass. No production change was indicated by the repeat investigation. These results cover this menu on one GPU; they do not establish broader gameplay, cross-title or console behavior. Cooling, focus control and settling time changed together, so the repeats do not isolate the historical stall's cause.
Original traces, digests and results remain unchanged. The old A2 post-capture image selected another active window, was discarded, and is not claimed as scene verification. The original L1/S2 slow frames show long CPU-side packet-processing wall spans; that locates the delay on the host side but does not distinguish descheduling, waits or another cause.
Download the cooled-repeat traces, digests, all included/excluded summaries, thermal/focus telemetry, original-outlier analysis, thermal preflight and same-head correctness evidence. No game files, saves, screenshots, binaries or shader caches are included.
Full current summary lines, in capture order:
{"commit":"2742004ed28f","dirty":false,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:30"},"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:30","first_present":3060,"ms":30029.635},"presents":808,"frame_ms":{"p50":37.169,"p90":37.724,"p99":38.39,"max":40.021},"gpu_busy_ms_per_present":33.566,"worker_busy_pct":{"queue worker 0x0":70.919},"top_phases_ms_per_frame":{"Driver.Packet":26.08,"Driver.Packet.draw":23.134,"Driver.Draw":23.101,"Driver.Draw.draw_enqueued":21.134,"Recorder.Sync":20.038,"VideoOut.Flip":9.956,"Driver.Present":9.909,"VideoOut.Flip.present":9.904},"trace_dropped":false,"trace":"aps5-trace-2742004ed28f-34884.json.gz"} {"commit":"5d0cddb50e2c","dirty":false,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:30"},"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:30","first_present":3090,"ms":30021.589},"presents":819,"frame_ms":{"p50":36.527,"p90":37.432,"p99":38.583,"max":39.506},"gpu_busy_ms_per_present":33.12,"worker_busy_pct":{"queue worker 0x0":72.435},"top_phases_ms_per_frame":{"Driver.Packet":26.282,"Driver.Packet.draw":23.302,"Driver.Draw":23.269,"Driver.Draw.draw_enqueued":21.221,"Recorder.Sync":20.09,"VideoOut.Flip":9.58,"Driver.Present":9.535,"VideoOut.Flip.present":9.53},"trace_dropped":false,"trace":"aps5-trace-5d0cddb50e2c-36155.json.gz"} {"commit":"2742004ed28f","dirty":false,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:30"},"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:30","first_present":3040,"ms":30018.879},"presents":802,"frame_ms":{"p50":37.367,"p90":38.125,"p99":39.162,"max":41.502},"gpu_busy_ms_per_present":33.592,"worker_busy_pct":{"queue worker 0x0":70.958},"top_phases_ms_per_frame":{"Driver.Packet":26.274,"Driver.Packet.draw":23.28,"Driver.Draw":23.246,"Driver.Draw.draw_enqueued":21.274,"Recorder.Sync":20.114,"VideoOut.Flip":10.02,"Driver.Present":9.972,"VideoOut.Flip.present":9.968},"trace_dropped":false,"trace":"aps5-trace-2742004ed28f-36998.json.gz"} {"commit":"5d0cddb50e2c","dirty":false,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:30"},"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:30","first_present":3089,"ms":30025.338},"presents":822,"frame_ms":{"p50":36.424,"p90":37.247,"p99":38.465,"max":38.912},"gpu_busy_ms_per_present":33.071,"worker_busy_pct":{"queue worker 0x0":72.544},"top_phases_ms_per_frame":{"Driver.Packet":26.214,"Driver.Packet.draw":23.219,"Driver.Draw":23.187,"Driver.Draw.draw_enqueued":21.216,"Recorder.Sync":19.981,"VideoOut.Flip":9.534,"Driver.Present":9.484,"VideoOut.Flip.present":9.48},"trace_dropped":false,"trace":"aps5-trace-5d0cddb50e2c-39033.json.gz"} {"commit":"2742004ed28f","dirty":false,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:30"},"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:30","first_present":3035,"ms":30037.407},"presents":803,"frame_ms":{"p50":37.357,"p90":38.052,"p99":39.055,"max":41.336},"gpu_busy_ms_per_present":33.603,"worker_busy_pct":{"queue worker 0x0":70.956},"top_phases_ms_per_frame":{"Driver.Packet":26.266,"Driver.Packet.draw":23.286,"Driver.Draw":23.252,"Driver.Draw.draw_enqueued":21.332,"Recorder.Sync":20.192,"VideoOut.Flip":9.992,"Driver.Present":9.947,"VideoOut.Flip.present":9.942},"trace_dropped":false,"trace":"aps5-trace-2742004ed28f-39498.json.gz"} {"commit":"5d0cddb50e2c","dirty":false,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:30"},"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:30","first_present":3092,"ms":30020.422},"presents":823,"frame_ms":{"p50":36.405,"p90":37.123,"p99":37.85,"max":39.979},"gpu_busy_ms_per_present":33.126,"worker_busy_pct":{"queue worker 0x0":72.498},"top_phases_ms_per_frame":{"Driver.Packet":26.162,"Driver.Packet.draw":23.185,"Driver.Draw":23.151,"Driver.Draw.draw_enqueued":21.195,"Recorder.Sync":20.004,"VideoOut.Flip":9.52,"Driver.Present":9.472,"VideoOut.Flip.present":9.467},"trace_dropped":false,"trace":"aps5-trace-5d0cddb50e2c-39937.json.gz"} {"commit":"2742004ed28f","dirty":false,"env":{"APS5_NO_PAD_INPUT":"1","APS5_PAD_INPUT_FILE":"<path>","APS5_TRACE_DIR":"<path>","APS5_TRACE_SECONDS":"90:30"},"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:30","first_present":3049,"ms":30023.519},"presents":800,"frame_ms":{"p50":37.451,"p90":38.285,"p99":39.435,"max":40.918},"gpu_busy_ms_per_present":33.608,"worker_busy_pct":{"queue worker 0x0":70.929},"top_phases_ms_per_frame":{"Driver.Packet":26.343,"Driver.Packet.draw":23.381,"Driver.Draw":23.348,"Driver.Draw.draw_enqueued":21.372,"Recorder.Sync":20.271,"VideoOut.Flip":10.057,"Driver.Present":10.013,"VideoOut.Flip.present":10.007},"trace_dropped":false,"trace":"aps5-trace-2742004ed28f-41776.json.gz"}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)