Skip to content

test(agc): read the depth bits of a SW_64KB_Z_X surface from guest memory - #7385

Merged
oneandonlydean merged 1 commit into
boykopovar:mainfrom
EagleBearerYS:test/agc-depth-bits-guest-memory
Oct 18, 2026
Merged

oneandonlydean merged 1 commit into
boykopovar:mainfrom
EagleBearerYS:test/agc-depth-bits-guest-memory

Conversation

@EagleBearerYS

Copy link
Copy Markdown
Contributor

What

This is the follow-up test that thuanquang suggested on #7346 (comment), which has since merged. It adds the 32_SINT, 16_UINT and registered-allocation cases that #7346 left for a separate PR.

The case it covers: NHL 26 (PPSA26785) stopped at start-up on main with frankea's line from #7304 (main 922dc89, RTX 4090):

compute shader 0x1150101000: AGC graphics: 32-bit integer read of the depth-layout texture 0x11c10f0000, which is no depth surface drawn with, is not implemented

#7346 reads such a T# over guest memory through a float view, and frankea's run with it reaches the legal screen. #7346's own case reads a 128x128 32_UINT texture.

The test: agc_driver_depth_bits_guest_memory, in tests/execution/DepthBitsGuestMemory.cpp, the only file this PR adds:

  • The surface: 256x192 in SW_64KB_Z_X, laid out with the driver's swizzle equations, with no depth surface drawn.
  • The reads: 32_UINT, 32_SINT and 16_UINT T#s, each from untracked memory and from a registered guest allocation. On lavapipe the guest allocation's later reads go through a storage image (the GPU detile), so both the snapshot path and the storage-image path run.
  • The check: every texel is compared bit for bit. The values include denormals (0x00000001, 0x007fffff, 0x80000001), quiet and signalling NaNs (0x7fc00000, 0x7f800001, 0x7fbfffff, 0xffffffff) and infinities.

Tested

Checklist

…mory

A compute shader loads every texel of a 256x192 32_UINT, 32_SINT and
16_UINT texture in SW_64KB_Z_X whose memory holds a known pattern and no
depth surface, from untracked memory and from a guest allocation, and
stores what it read. Every texel must keep its stored bits, NaN, infinity
and denormal patterns included; without the 32-bit fix the 32_UINT read
throws.
@oneandonlydean
oneandonlydean merged commit 3de84fa into boykopovar:main Oct 18, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants