Repository navigation
fix(shader): support measured 2D accesses to 1D images - #10
p3n1cillin wants to merge 7 commits into
Conversation
|
Integration validation: astrobot-local 4944a6a (the measured compatibility change plus integration cache format 22), full build / 116 runtime PRXs, CTest 518 passed / zero failed / one intentional skip of 519 in 25.89s with eight workers. A private ASTRO BOT v01.007.000 boot run passed the previous startup request and recorded its selected dispatch with groups 1,1,1 and 13271 SPIR-V words. It then failed at another DIM2D-to-1D sampled-image interface, source 3 / firstUsePc 760, before any completed presentation. The monitor stopped the aborted process and retained logs, request files, timings and hardware/thread telemetry. This establishes progress beyond the former stop; it does not establish the original dispatch's visual correctness, gameplay or FPS. All 20 preserved compute requests replay successfully with the current integration replay tool (format 22). The graphics request at the new failure was not preserved by the old draw-capture path. Follow-up diagnostic #11 retains partial memory and the failing graphics request. The new access form/format remains unknown until that capture is collected; the compatibility gate is not being broadened without measurement. The run had no frame interval samples, so no FPS comparison is available. Across 41 hardware samples / 204.74s, peak process working set was 23621.9 MiB, private memory 4714.0 MiB, and sampled NVIDIA device memory 2273 MiB. These are instrumented boot measurements, not gameplay/performance claims. No game data is included in this comment. |
…s-pr-task ci(prs): close prs from new contributors while intake is paused
…um-20 Ci/pr intake minimum 20
What
Ordinary DIM2D image loads/stores against a 1D T# currently fail with an incompatible static runtime image interface. Add a 1D interface only when every access uses full DMASK 0xf, 32-bit data/addresses, ordinary load/store without mip, sampling, gather, packed/BY access, R128 or atomics. Bind it only for non-array 1D R32_FLOAT/RGBA32_FLOAT descriptors with identity destination selectors and one level/layer. Other forms still throw.
Native gfx1036 measurements show these accesses use X and ignore Y, including negative/nonzero Y, with zero loads and no writes for X outside the width. Existing 1D coordinate emission implements this behavior. Native identity R32_FLOAT reads and point samples repeat R in all four channels; correct the 1D sampled view mapping accordingly.
Serialize the access eligibility flag and bump the disk-cache format. Add independent GPU execution coverage for the native results, matching DIM1D controls, storage writeback, unchanged padding, descriptor-independent shader caching and unsupported access rejection. Keep diagnostic fixture coverage for unsupported integer formats.
Depends on #8. The branch is based on current main d70b899 plus that diagnostic PR. Changes were written with AI assistance.
Semantics and native measurements
Windows 11; integrated AMD Radeon(TM) Graphics, gfx1036 RDNA2, AMD driver 32.0.21042.62; installed HIP 5.7/runtime 50732000 and COMGR API 2.5. Independent homebrew AMDGCN assembly used
tools/hw-oracle/template.swith wave64, IEEE=0, DX10_CLAMP=1, DENORM32=0, DENORM16=3, ROUND32/16=0 and FP16_OVERFLOW=0. An integer-add control passed first.16 groups / 144 cases checked formats 22 and 77, widths 1 and 8, DIM1D and DIM2D ordinary loads and single-lane stores, linear 1D descriptors, full DMASK and identity selectors. Loads checked X=(0,width-1,width,-1) and Y=(0,1,-1). Stores checked (0,0), (width-1,0), (width,0), (-1,0), (0,1), (0,-1), comparing the independent allocation after synchronization. Eight additional in-bounds 1D R32_FLOAT point samples confirmed the channel mapping. No gfx1013/PS5 or tiled native measurement is claimed. Existing texture layout handling is unchanged.
Reproduction instructions and selected results are recorded in issue #9. No game shader, game capture, AMD runtime DLL or proprietary data is included in this PR.
Tested
tools/check_conventions.py --base codex/image-interface-diagnosticspassed.Checklist