Repository navigation
Conversation
KROU4
force-pushed
the
perf/gpu-color-transfer
branch
from
October 14, 2026 00:33
f7f8015 to
88649c3
Compare
KROU4
force-pushed
the
perf/gpu-color-transfer
branch
from
October 14, 2026 01:07
88649c3 to
0ac5e41
Compare
KROU4
force-pushed
the
perf/gpu-color-transfer
branch
from
October 14, 2026 01:30
0ac5e41 to
1e187fb
Compare
11 tasks done
11 tasks done
8 tasks done
|
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.
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft status and title evidence
This remains a draft. The available real-title run does not demonstrate a
half-float title gain: PS5 DOOM v1.1.1 uses an RGBA8_SRGB tiled scanout. Three
clean 240-present traces completed at 1920x1080 on the RTX 3060 Ti, but that
workload exercises the unchanged 8-bit path. A title/scene using half-float
scanout is still required to satisfy the repository's performance-evidence
requirement. The compute benchmark below is supporting kernel evidence only;
it is not an FPS or end-to-end frame-time claim.
Upstream records tiled RGBA16F scanout for PPSA11386 in
AGC technical debt,
but its bring-up stops before
stable presented frames. The public homebrew candidates inspected did not
provide an original, working half-float scanout workload.
What
Replace four eight-step binary searches per half-float pixel in
ColorTransfer.compwith one packed LUT lookup per channel. The 63,492-bytetable is generated from the existing thresholds and uploaded once into
device-local memory. RGB/alpha rounding, negative values, infinities, NaNs,
channel order, the 8-bit path, and the CPU reference retain their existing
results.
Add exhaustive coverage of all 65,536 half patterns in each RGBA channel, both
red/blue orders, and both guest-memory and image-copy paths. Existing random
cases and assertions remain. Five files change; no dependency or
vendor-specific branch is added.
RTX 3060 Ti compute benchmark
On an RTX 3060 Ti, the full shader's median compute-stage GPU interval was:
Eight scenarios used 31 alternating pairs after warm-up (496 timestamp
samples). Readback and exhaustive per-channel comparisons passed. Both tables
were device-local. Timestamps exclude initialization, uploads, CPU work, waits,
and readback. The 4K baseline tails were variable: p95 was 3.636192 ms for
positive half data and 2.282512 ms for tiled positive half data, so the table
uses the predeclared median. The 8-bit controls were 0.050048 -> 0.050048 ms at
1080p and 0.193216 -> 0.192608 ms at 4K.
The measured prototype SPIR-V SHA-256 is
CEC55C0624653E42117E549715EF75472D59DE5D2E0046E31BBC296557252DF1.The build-generated production SPIR-V is byte-identical to the measured file.
The benchmark was recorded at change
725224be9f1d83786e3749e4c135031d32dce127on main
77b9f7270c25518d26052671311f43497328fdc7; the measured shader source isunchanged at the prepared revision.
The trade-off is one initialization update/fence wait per transfer object and a
64 KiB device-local pool slot. A new device-local pool size class can reserve a
minimum 2 MiB slab. The LUT is recorded with
vkCmdUpdateBuffer; compile-timechecks enforce its 64 KiB and four-byte size limits. This avoids a temporary host
staging buffer and its retained host-visible slab; command-buffer storage for
the update still has a driver-managed cost. Synchronization follows the
existing private
CommandBatchinitialization pattern and uses atransfer-write to compute-read barrier.
Tested
The latest full run passed on a combined integration tree, not on the
GPU-only PR. Tested tree
9e65300c03a3ac4137c6b8f3550aa97dd6c063ddis mainee9037d85154d0c840517c46c61087a736fe0641plus this GPU change1e187fb4d33791939b422b9c458760903ade8b16and the separatelegacy CRT log-stream fix.
That seven-file relinker patch stays outside this five-file GPU diff.
The original
windows_import_modulesfailure reproduces on clean maince5c8395333fbd4bfacdc35065f886333162caa5: MSVCRT stdout is absent from the GUIlog. The separate patch repairs missing FILE state and shares the original
native file handle/position, preserving inherited streams. Original and added
mixed UCRT/MSVCRT cases pass, including Unicode paths, changed CWD, exact
message counts and preservation of the native startup prefix. No assertion or
timeout was weakened. Independent source review found no remaining issue.
Windows 11 build 26200, Ryzen 5 5600, RTX 3060 Ti 8 GiB, NVIDIA 617.14,
Vulkan 1.4.351, WinLibs GCC 15.2 UCRT, Release.
agc_driver_stencil_ref_export(missing VK_EXT_shader_stencil_export);guest_video_out_wqhd_detection_no_vulkan(intentional missing-Vulkan-ICD fixture).agc_driver_graphics, including exhaustive half-float checks, passed in 7.75 s.conventions_function_bodiespassed in 51.04 s; no timeout was changed.88649c3a93abe685b715042ea4ed5b1597c4e0e6on mainfeddf7f4c654112663b7576c8a1bc3b87657396d: 1114 passed, 2 expected skips, 1 failed out of 1117. That original failed result remains in its attachment.BUILD_TESTING=ON,ANYPS5_ENABLE_SPIRV_TOOLS=ON,ANYPS5_REQUIRE_VULKAN=1,ANYPS5_GPU=NVIDIA GeForce RTX 3060 Ti, andANYPS5_VIDEO_OUT_TEST_DRIVER=windows.vkCmdUpdateBufferupload change is covered by this full integration run; earlier kernel timestamps exclude initialization.The standalone GPU PR still requires resolution of the upstream Windows
failure. The passing combined run does not replace the GPU-only result or
demonstrate a half-float title gain. The PR remains a draft. The relinker fix
is published as a separate fork branch; it is not merged upstream, and no
additional upstream PR was opened over the first-contributor limit.
Evidence attachments
Reproducible benchmark, shader sources and all 496 samples
Full-suite results, clean-main failure reproduction and nine title traces
Combined full-suite JUnit, clean-main failure, regression checks and separate relinker patch
Checklist
The title-performance requirement remains open as described above: a real
half-float title/scene before/after profile is still required. This draft
does not claim that the kernel benchmark satisfies that requirement.