Repository navigation
fix(shader): fold texel offsets into base-level unnormalized samples - #7240
oneandonlydean merged 1 commit into
Conversation
An implicit-LOD or gradient sample with a texel offset through an unnormalized S# was refused at bind time with "unnormalized guest sampler is used by an implicit-LOD sample". PPSA01317 aborts on boot on such a pixel image_sample_o. The base-level path already samples these through OpImageSampleExplicitLod with LOD 0, which Vulkan allows for unnormalized samplers, but it dropped the offset. It now adds the offset to the coordinates in that branch, as the explicit-LOD offset fold does, so a sampler whose uses also include offsets takes the base-level path. A normalized S# keeps the offset operand. AI-assisted: yes
|
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.
|
|
Independent hardware run, head |
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
|
RTX 4090 data point on PPSA01317, continuing the chain from my #7243 and #7238 runs tonight, where the title stopped on Setup. Gran Turismo 7 PPSA01317 01.000.001 (base package), Windows 11 (26200), RTX 4090 (NVIDIA 616.92), AMD Ryzen 7 5800X, MinGW-w64 GCC 15.2.0 r7 (UCRT), Release Result. Run 1 recompiled the shader cache (1,785 shaders, 793 MiB; the recompiler source changed), runs 2 and 3 were warm. All three get past the sampler refusal: splash, then the black loading screen with the GT spinner (title-bar counter 48 to 60 FPS, 789 frames by the last capture of run 3), save data mounted, three That is the
stderr of run 3 (warm, box idle) from the second 10 s summary to the abort, the 388 per-shader
|
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
Integrate the remaining regression coverage from Gjonn PRs boykopovar#7238, boykopovar#7243 and boykopovar#7256 while retaining the larger storage heap, packed float blending and shared depth arrays. The offset folding from boykopovar#7240 is already covered. Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
What
An implicit-LOD or gradient sample with a texel offset through an unnormalized S# was refused at bind time with
unnormalized guest sampler is used by an implicit-LOD sample, which is not implemented.On PPSA01317 a pixel shader
image_sample_o(implicit LOD with an offset) through an unnormalized point S# hits this on boot and the title aborts with that message; with this change it gets past it onmain.The base-level path (
SamplesBaseLevelIfUnnormalized) already samples such a sampler throughOpImageSampleExplicitLodwith LOD 0, which Vulkan allows for unnormalized samplers, but it did not accept samplers whose uses include offsets because that branch dropped the offset. The branch now adds the offset to the coordinates (FoldedOffsetCoord, as the explicit-LOD offset fold does), andSamplerUseOffsetis accepted bySamplesBaseLevelIfUnnormalized. A normalized S# keeps the implicit-LOD sample with its offset operand.The new cases in
verifyUnnormalizedSamplers(agc_shader_memory) recompile a pixelimage_sample_othrough an unnormalized S#, check the offset is folded into the base-level coordinates, and check that the normalized variant stays an implicit-LOD sample with an offset operand. Onmainthe test fails with the bind-time refusal above; it passes with the change.Tested
Windows 11, MinGW GCC Release build with
BUILD_TESTING=ON.agc_shader_memoryfails onmain(with only the test applied) withunnormalized guest sampler is used by an implicit-LOD sampleand passes with the change.agc_shader_memory_tests,agc_shader_device_profile_testsandagc_driver_graphics_tests(22 tests), plusagc_driver_image_sample_unnormalized(Vulkan execution) andagc_shader_disk_cache, pass.python tools/check_conventions.py --base origin/mainpasses;tools/check_test_registration.pyreports no unregistered tests.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)