Skip to content

fix(agc): order driver stores over a depth plane by record order - #15621

Open
Astronaut10 wants to merge 2 commits into
boykopovar:mainfrom
Astronaut10:fix/agc-depth-plane-aliased-store
Open

Astronaut10 wants to merge 2 commits into
boykopovar:mainfrom
Astronaut10:fix/agc-depth-plane-aliased-store

Conversation

@Astronaut10

Copy link
Copy Markdown
Contributor

What

#12238 reloads a sampled single-sample D32 Z64KBX depth plane from guest memory when the tracker says the guest wrote it after its bind. The tracker also stamps the driver's own stores, by when they are stamped rather than when their results were recorded. In Astro Bot (PPSA21564) Aerial Garden a colour image aliasing a 1920x1080 depth plane is stored once per frame by the bind's own mirror refresh, after the bind took its generation, with results recorded before the bind; at the sample all 135 units look guest-written and the drawn depth is replaced by colour bytes, so the cloud sea and haze render as teal water.

This keeps #12238's reload and orders driver stores against depth draws:

  • Each pending storage image layer records when its results were recorded; each depth unit records when its last draw was recorded (NextRecordOrder).
  • KeepNewerDepthUnits lets a driver store (storage image layer stores, the direct and copied-back branches of GuestBufferMemory::WriteBack) invalidate only units whose last draw was recorded before it, as StorageTexture::StampKeepingNewerResults already does for storage images.
  • SyncFromMemory first stores pending images inside the plane (not its own mirror), so stores its refresh would trigger fall inside the bind's generation.
  • CPU and record-time stamps keep today's rule, so a guest write after the draw (PPSA05684, GuestWriteAfterDrawCase) is still reloaded.
  • BDA completion stamps (markWrittenPages) carry no record order and are excluded from this fix; listed in docs/dev/debt/libSceAgcDriver.md.

New test AliasedStoreAfterDrawCase (image results pending over the plane, bind + draw, image stored, sample = drawn depth, plane store writes drawn depth to memory, plus the record-order guard called directly with a GPU write recorded before / after the draw; an imported-buffer completion is not exercised end to end). New ctest entry agc_driver_depth_plane_sampling_unimported (APS5_NO_HOST_IMPORT=1): with host imports on, the write-watch cases of this suite (#12238's GuestWriteAfterDrawCase and the new case) print "no write watch" and return without checking, while the rest of the suite runs; this entry runs them.

Related: #15551 (open) changes the line after the one this adds in GuestBufferMemory::MarkDirectWrites (the storage image write order taken under the tracker lock); the two order different things and compose, but whichever merges second needs a one-line rebase.

Tested

Linux (CachyOS, kernel 7.3.0-4-cachyos), AMD Radeon RX 9070 XT (RADV GFX1201), Mesa 26.2.5-arch3.1, Astro Bot PPSA21564 01.007.

On main 086c0686c8 (this branch, eab4ee3ac6):

  • ctest -R 'agc|guest_memory' with ANYPS5_REQUIRE_VULKAN=1: the same statuses as main plus the new entry (passed), 1,288 against 1,287. agc_driver_scattered_runs and agc_driver_tessellation (segfault) fail on main as well. agc_driver_depth_plane_sampling and _evicting print "no write watch" for the two write-watch cases; agc_driver_depth_plane_sampling_unimported runs them and passes.
  • Validation on the focused AGC set (ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, ctest -V), main and this branch: layer loaded in both (vulkaninfo reports it; no "was not found but was requested" line), 244 and 245 passed, the same six VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 lines (all from agc_driver_srgb8_color_target) and 20 WARNING-VkImageSubresourceRange-layerCount-compatibility lines in both; this branch adds no VUID-.
  • Aerial Garden frame dumps (APS5_DUMP_FRAMES=40, every 25th frame, one run per side): main has no cloud sea (bottom third 1-3 % white in all 11 in-level dumps; the first shows teal water where the clouds are), this branch has it (80, 71, 61, 50, 37, 21, 10, 6, 2 % in its 9 in-level dumps, falling as the camera leaves the clouds, the same course as on the earlier base). Frames available on request.

On the earlier base 3ab5a11d66 (the same change as 450bc82830, before the rebase; the cost numbers below were not repeated on current main):

  • The new test fails with the pre-sync store disabled ("D32 plane drawn after an aliasing image's results were recorded, sampled after those results were stored: texel 0 read 0x3f800000, expected 0x3e800000") or with the record-order keep disabled ("sampled after a GPU write recorded before its draw completed"), in variants of this branch with that part disabled (the test does not build on the base, it calls the new functions); GuestWriteAfterDrawCase (PPSA05684's regression case) passes; PPSA05684 itself was not run.
  • Frame dumps: Aerial Garden has its cloud sea back in every in-level frame (about 80 % of the bottom third white in the first in-level frame, against about 2 % on the base, the same as the base with fix(agc): reload a sampled depth plane the guest wrote since its surface was bound #12238's line removed); Crash Site: no obvious visual difference in inspected dumps compared at corresponding animation phases.
  • Aerial Garden 90 s clean runs, 4 per side: -1.8 % FPS against the base (95 % -3.3 to -0.4), GPU busy unchanged. Steady-state FPS / frame p50: base 3.53 / 281.8, 3.59 / 279.6, 3.54 / 280.9, 3.53 / 281.8 ms; this change 3.52 / 284.6, 3.50 / 286.4, 3.44 / 287.9, 3.48 / 287.0 ms. Against the base with only fix(agc): reload a sampled depth plane the guest wrote since its surface was bound #12238's line removed (same clouds, no new code), 2 per side: -0.1 % (95 % -3.8 to +3.6), consistent with the cost coming with the restored rendering. A draw profile (APS5_PROFILE_DRAW, 2 runs per side, against the base with the line removed) puts the new code's own cost at about 3 ms per frame of draw-thread time, mostly waiting for the store SyncFromMemory now makes at the depth bind; that thread was about 74 % busy and the frame did not get longer, so it did not show on the critical path there.
  • tools/trace_digest.py of the aps5-summary.jsonl of one adjacent pair (APS5_TRACE_SUMMARY_EVERY=10, the level starts at about 19 s, the measured window is 40 s after it); the summary files of all eight runs are available on request. No APS5_TRACE_FRAMES window trace was captured for these runs.
base 3ab5a11
**15 intervals**, 0.0 to 152.2 s, 799 presents
AMD Radeon RX 9070 XT (RADV GFX1201), radv Mesa 26.2.5-arch3.1, Linux 7.3.0-4-cachyos, 3840x2160, commit 3ab5a11d665e

| # | seconds | presents | p50 | p90 | p99 | max | GPU busy | busiest worker | largest phase |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0-10 | 252 | 28.5 | 30.6 | 628.8 | 1440.7 | 19.2 | 100 % | Driver.Packet 116.0 |
| 2 | 10-21 | 81 | 27.9 | 289.8 | 4524.1 | 4524.1 | 51.3 | 96 % | Driver.Packet 360.3 |
| 3 | 21-31 | 36 | 282.9 | 290.1 | 297.9 | 297.9 | 188.5 | 111 % | Driver.Packet 873.6 |
| 4 | 31-41 | 36 | 279.7 | 285.5 | 309.6 | 309.6 | 168.4 | 100 % | Driver.Packet 832.7 |
| 5 | 41-51 | 36 | 279.6 | 283.8 | 286.7 | 286.7 | 157.7 | 100 % | Driver.Packet 830.3 |
| 6 | 51-61 | 36 | 281.7 | 286.6 | 288.9 | 288.9 | 162.7 | 100 % | Driver.Packet 837.2 |
| 7 | 61-71 | 36 | 282.4 | 288.6 | 293.7 | 293.7 | 163.0 | 100 % | Driver.Packet 841.3 |
| 8 | 71-81 | 36 | 283.7 | 288.2 | 292.7 | 292.7 | 168.1 | 100 % | Driver.Packet 841.3 |
| 9 | 81-91 | 36 | 281.3 | 286.6 | 294.2 | 294.2 | 160.8 | 100 % | Driver.Packet 835.5 |
| 10 | 91-101 | 33 | 281.8 | 286.1 | 808.3 | 808.3 | 169.8 | 100 % | Driver.Packet 911.5 |
| 11 | 101-112 | 37 | 278.0 | 281.7 | 284.0 | 284.0 | 160.9 | 100 % | Driver.Packet 826.8 |
| 12 | 112-122 | 36 | 279.2 | 283.7 | 289.3 | 289.3 | 165.7 | 100 % | Driver.Packet 832.8 |
| 13 | 122-132 | 36 | 282.9 | 289.4 | 299.1 | 299.1 | 167.5 | 100 % | Driver.Packet 845.9 |
| 14 | 132-142 | 36 | 285.1 | 289.1 | 313.9 | 313.9 | 168.3 | 100 % | Driver.Packet 848.7 |
| 15 | 142-152 | 36 | 281.6 | 286.7 | 289.0 | 289.0 | 172.2 | 100 % | Driver.Packet 835.8 |

```
p99 ms  _@_______:_____  0-4524.1
gpu ms  _:@%%%%%%%%%%%%  0-188.5
```
this change (450bc82830 on 3ab5a11)
**15 intervals**, 0.0 to 152.4 s, 796 presents
AMD Radeon RX 9070 XT (RADV GFX1201), radv Mesa 26.2.5-arch3.1, Linux 7.3.0-4-cachyos, 3840x2160, commit 450bc82830ba

| # | seconds | presents | p50 | p90 | p99 | max | GPU busy | busiest worker | largest phase |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0-10 | 258 | 28.4 | 30.5 | 534.7 | 1400.4 | 19.0 | 100 % | Driver.Packet 113.0 |
| 2 | 10-20 | 72 | 28.1 | 278.5 | 4310.7 | 4310.7 | 72.5 | 96 % | Driver.Packet 396.1 |
| 3 | 20-30 | 36 | 279.8 | 289.1 | 294.9 | 294.9 | 162.3 | 100 % | Driver.Packet 834.8 |
| 4 | 30-40 | 36 | 282.6 | 306.5 | 327.9 | 327.9 | 165.3 | 100 % | Driver.Packet 849.4 |
| 5 | 40-51 | 36 | 284.5 | 288.3 | 292.7 | 292.7 | 162.5 | 100 % | Driver.Packet 844.3 |
| 6 | 51-61 | 36 | 284.9 | 295.2 | 311.0 | 311.0 | 163.6 | 100 % | Driver.Packet 849.9 |
| 7 | 61-71 | 36 | 285.8 | 292.6 | 318.3 | 318.3 | 164.1 | 100 % | Driver.Packet 851.1 |
| 8 | 71-81 | 36 | 285.0 | 291.8 | 293.0 | 293.0 | 168.3 | 100 % | Driver.Packet 845.3 |
| 9 | 81-92 | 36 | 286.1 | 290.2 | 295.1 | 295.1 | 161.2 | 100 % | Driver.Packet 850.7 |
| 10 | 92-102 | 33 | 287.3 | 294.3 | 746.0 | 746.0 | 164.8 | 100 % | Driver.Packet 920.0 |
| 11 | 102-112 | 36 | 284.3 | 289.2 | 295.6 | 295.6 | 170.3 | 100 % | Driver.Packet 843.7 |
| 12 | 112-122 | 37 | 277.1 | 285.8 | 288.4 | 288.4 | 161.2 | 100 % | Driver.Packet 829.5 |
| 13 | 122-132 | 36 | 282.1 | 288.9 | 294.4 | 294.4 | 167.1 | 100 % | Driver.Packet 838.8 |
| 14 | 132-142 | 36 | 284.6 | 290.8 | 303.6 | 303.6 | 172.9 | 100 % | Driver.Packet 847.6 |
| 15 | 142-152 | 36 | 279.4 | 288.3 | 289.9 | 289.9 | 162.9 | 100 % | Driver.Packet 833.9 |

```
p99 ms  _@_______:_____  0-4310.7
gpu ms  _=%@%@@@%@@%@@%  0-172.9
```

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: PPSA21564 Astro Bot (PPSA21564) #357
  • GPUs tested: AMD Radeon RX 9070 XT (RADV GFX1201), Mesa 26.2.5-arch3.1, Linux (CachyOS, kernel 7.3.0-4-cachyos)
  • AI-assisted: yes

🤖 Generated with Claude Code

https://claude.ai/code/session_015W3M6Kw7yNRginUW6VUeE2

@github-actions github-actions Bot added the unblocks title Names a title ID on the Unblocks line label Nov 3, 2026

@XairRrR XairRrR left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed — approved

The fix is now ordered by record order: storing a depth plane's pending aliasing images before SyncFromMemory takes its generation, and keeping units drawn after a driver store, restores the drawn depth. Each half is covered by a check in AliasedStoreAfterDrawCase that fails when that half is disabled.

What I ran

Head eab4ee3ac6013f9d82b969ddd775ab1ee8fb929d, main 1c8c0efc8c41314402e6966da5bef6ea3d639d10, merged tree 9dd4f135b3e899321d23e326c68162fadb65808f (Debian 13 VM, GCC 14.2.0, lavapipe Mesa 26.1.6 / LLVM 19, no GPU).

git diff --check 1c8c0efc8c41314402e6966da5bef6ea3d639d10...eab4ee3ac6013f9d82b969ddd775ab1ee8fb929d
python3 tools/check_conventions.py --base 1c8c0efc8c41314402e6966da5bef6ea3d639d10
env VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation ANYPS5_NO_SHADER_CACHE=1 ANYPS5_REQUIRE_VULKAN=1 VK_LOADER_DEBUG=error,warn,layer \
    ctest --test-dir build -V -R "depth_plane_sampling|image_gather_volume"
# main's six production files restored:
ninja -C build -j32 -l32 agc_driver_image_gather_volume_tests
env VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation ANYPS5_NO_SHADER_CACHE=1 ANYPS5_REQUIRE_VULKAN=1 VK_LOADER_DEBUG=error,warn,layer \
    ctest --test-dir build -V -R "^agc_driver_image_gather_volume$"
# variants A and B (see Negative control), each:
ninja -C build -j32 -l32 agc_driver_depth_plane_sampling_tests
env ANYPS5_REQUIRE_VULKAN=1 ctest --test-dir build --output-on-failure -R depth_plane_sampling
# merged files restored, rebuilt, rerun; git status --porcelain clean

Results

Check Result
git diff --check clean
check_conventions.py All conventions checks passed
Configure / build / libs (script) ok
Selected tests (script) 2243 ran, no new failures or timeouts. The 7 known failures also fail on main
agc_driver_depth_plane_sampling / _evicting passed (4.7 s / 8.5 s). Both print "no write watch" for the two write-watch cases, as the description says
agc_driver_depth_plane_sampling_unimported (new) passed (5.1 s), and runs the write-watch cases
Validation, depth suite (3 tests) layer loaded, no VUID- lines, no "was not found but was requested"
Validation, agc_driver_image_gather_volume 8 VkSamplerCreateInfo-addressMode* VUID lines with the PR, the same 8 with main's production files, so they come from main. The PR does not touch sampler code
VUID lines, image_gather_volume, merged tree and main production files (identical)
      2 VUID-VkSamplerCreateInfo-addressModeU-01079
      2 VUID-VkSamplerCreateInfo-addressModeU-parameter
      2 VUID-VkSamplerCreateInfo-addressModeV-parameter
      2 VUID-VkSamplerCreateInfo-addressModeW-parameter

Negative control

With main's production files fully restored, the new test cannot build, because it calls NextRecordOrder and KeepNewerDepthUnits. So I disabled each half of the fix separately in the merged tree:

  • A: the StorePendingImages(resource) call in SyncFromMemory (core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp:1367) removed. agc_driver_depth_plane_sampling_unimported fails:
    D32 plane drawn after an aliasing image's results were recorded, sampled after those results were stored: texel 0 read 0x3f800000, expected 0x3e800000
  • B: KeepNewerDepthUnits made to always return stamp() (DepthSurface.cpp:3206). agc_driver_depth_plane_sampling_unimported fails:
    D32 plane sampled after a GPU write recorded before its draw completed: texel 0 read 0x3e800000, expected 0x3ec00000

Both match the messages in the description. In both variants the two import-on entries still pass, because they skip these cases. Afterwards I restored the merged files, rebuilt, and reran the three entries (all passed). git status --porcelain was empty.

Findings

Blocking

None.

Non-blocking

  • The keep inside storage-image stores is not exercised end to end. In variant B, the aliased-image check (sample = drawn depth, plane store writes drawn depth) still passes. That check depends only on the pre-sync store. The record-order guard is proven only by the direct KeepNewerDepthUnits calls in the test (core/libs/prx/libSceAgcDriver/tests/execution/DepthPlaneSampling.cpp:410 and :414). Two paths have no test that fails without them: the wrapper in StorageTexture::writeBackLayers (core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp:6606-6626) and the two GuestBufferMemory::WriteBack stamps. The description already says the imported-buffer completion is not exercised. Suggestion for a follow-up: a case where an image's results are recorded before a depth draw over the same plane and stored only after it, outside any bind, so that only the writeBackLayers keep protects the drawn units.
  • I checked the locking and found no problem. KeepNewerDepthUnits takes GpuMutex and then surfacesMutex, the same order as the rest of DepthSurface.cpp; both mutexes are recursive. stamp() runs outside both locks. FlushPending gathers its list under pending.mutex after taking GpuMutex, so calling the keep from writeBackLayers adds no inverted lock order that I could find. The post-stamp re-check uses UnchangedSinceCollected, which ignores driver stamps, as StampKeepingNewerResults does.
  • The debt entry added to docs/dev/debt/libSceAgcDriver.md states the remaining gap (BDA completion stamps through markWrittenPages carry no record order). It links a file that exists (Graphics/src/BdaResources.cpp, which defines markWrittenPages) and is in the right debt file. No code comments were added.

Not verified

  • No run on real GPUs here. The only GPU named is AMD RX 9070 XT (RADV); this machine has only lavapipe.
  • I did not check the Astro Bot (PPSA21564) frame-dump results or the performance numbers (about -1.8 % FPS against the earlier base, about 3 ms of draw-thread time per frame); no title was run.
  • I did not check the PPSA05684 regression on the title; only GuestWriteAfterDrawCase passes (in the unimported entry).
  • I did not check the BDA (markWrittenPages) and imported-buffer completion paths end to end.

@oneandonlydean

Copy link
Copy Markdown
Collaborator

Hi Astronaut10,

Could the new agc_driver_depth_plane_sampling_unimported invocation require its write-watch coverage, or return skip code 77 when that prerequisite is unavailable? AliasedStoreAfterDrawCase currently prints a message and returns when either write-watch check fails, and GuestWriteAfterDrawCase does the same. The executable then reaches its success message and returns zero, so this targeted entry can pass without either regression case running.

A dedicated argument for this entry could keep the other suite invocations' partial coverage while requiring these two cases here. Please check both the unavailable-watch result and a watched run.

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head eab4ee3 merged onto main 1c8c0ef · tested 2026-11-04 04:23 UTC · 29 min

GPU NVIDIA RTX 2000 Ada Generation, driver 595.99.02, Vulkan 1.4.329
Host Ubuntu 26.04.1 LTS, kernel 7.0.0-38-generic, container ubuntu:24.04
Logs build and test logs for this run
Build ✅ passed (Release, -DANYPS5_ENABLE_SPIRV_TOOLS=ON)
Tests ✅ 2,784 passed · 6 failed (0 new, 3 also fail on main, 3 unstable on main) · 50 skipped (ANYPS5_REQUIRE_VULKAN=1)
Test setup CPU-only tests without a GPU; GPU tests (and any CPU-only test that failed or skipped without one) once on the GPU with VK_LAYER_KHRONOS_validation and ANYPS5_NO_SHADER_CACHE=1; main ran the same way
Test selection 2,840 of 3,842 tests run: the ones this change can reach, chosen by tools/select_tests.py from main's build graph
Vulkan validation ✅ no new validation IDs vs main (952 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_pipeline_journal 120.1 s
Unstable on main (3, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_pipeline_journal: failed in 4 of the last 10 main runs
agc_submit_progress: failed in 5 of the last 10 main runs
agc_submit_progress_no_timeline: failed in 4 of the last 10 main runs
Failing on main too (3, not counted against this PR)
agc_driver_image_table
guest_mmap_executable
guest_socket_options_multicast
Validation IDs already present on main (8 IDs in 532 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (532 tests): agc_driver, agc_driver_address_passes, agc_driver_alias_copy_label, agc_driver_alpha_to_coverage, agc_driver_array_layer_target, agc_driver_bc_block_copy, agc_driver_bda_anchor_reads, agc_driver_bda_span_reads, and 524 more
VUID-vkCmdCopyImage-srcImage-01548 (7 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_sampling, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-vkCmdCopyImage-srcImage-01551 (7 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_sampling, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (1 test): agc_driver_srgb8_color_target
VUID-VkSamplerCreateInfo-addressModeU-01079 (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeU-parameter (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeV-parameter (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeW-parameter (1 test): agc_driver_image_gather_volume
Skipped (50)
agc_driver_bda_reads_shadowed_results: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_bda_reads_shadowed_results_per_build: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_gcn_display_present: skipped, no display: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
agc_driver_sample_order_grid_reference: skipped, the device does not keep depth drawn at custom sample locations at those locations, even after a transition that names them: the composite of uniform renders holds the guest's depth in 0 of 3005 sloped samples, so no path can be compared with it bit for bit
agc_driver_scattered_runs: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_driver_sparse_dma_buf_import: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_driver_stencil_ref_export: skipped, the device lacks VK_EXT_shader_stencil_export
agc_driver_vertex_elected_atomic_max: skipped, the device runs vertex programs in subgroups, so they keep their cross-lane reductions
agc_host_import_sparse: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_import_settle_initial_dcc: skipped, the device has no deferred settle of host imports: imports under 1 MiB wait for one only on Windows
agc_unit_shadow_completion_store: skipped, the device reports watched host memory written when it imports or reads it
guest_http_uri_locale: 
guest_net_ctl: skipped, the host has no IPv4 address
guest_video_out_color_space: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_hdr: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_high_frame_rate: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_output_mode: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_resolution_status: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_wqhd_detection: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
video_out_flip_aftergpu: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_backtoback: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_controls: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_cpuflip: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_cpuflip_in_order: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_dcc: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_deferred: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_eop: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
vide
Reproduce
git fetch origin eab4ee3ac6013f9d82b969ddd775ab1ee8fb929d 1c8c0efc8c41314402e6966da5bef6ea3d639d10
git checkout 1c8c0efc8c41314402e6966da5bef6ea3d639d10 && git merge --no-ff eab4ee3ac6013f9d82b969ddd775ab1ee8fb929d
git submodule update --init --recursive
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DANYPS5_ENABLE_SPIRV_TOOLS=ON
cmake --build build && cmake --build build --target libs
VK_DRIVER_FILES=/nonexistent/icd.json ctest --test-dir build -E '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 32 --output-on-failure
ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation \
  ctest --test-dir build -R '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 4 --output-on-failure
# failures are then re-run alone: --timeout 360 --parallel 2; new validation IDs: the test alone, twice, --parallel 1

Automated build and test on a contributor's NVIDIA machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs.

@github-actions github-actions Bot added the review queue Next in the maintainer review queue: checks pass, no open change request, no conflict label Nov 4, 2026
@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ AMD GPU test: passed

PR head eab4ee3 merged onto main 1c8c0ef · tested 2026-11-04 05:02 UTC · 37 min

GPU AMD Radeon RX 6300 (RADV NAVI24), driver Mesa 25.2.8-0ubuntu0.24.04.4, Vulkan 1.4.318
Host Ubuntu 26.04.1 LTS, kernel 7.0.0-42-generic, container ubuntu:24.04
Logs build and test logs for this run
Build ✅ passed (Release, -DANYPS5_ENABLE_SPIRV_TOOLS=ON)
Tests ✅ 2,771 passed · 8 failed (0 new, 7 also fail on main, 1 unstable on main) · 61 skipped (ANYPS5_REQUIRE_VULKAN=1)
Test setup CPU-only tests without a GPU; GPU tests (and any CPU-only test that failed or skipped without one) once on the GPU with VK_LAYER_KHRONOS_validation and ANYPS5_NO_SHADER_CACHE=1; main ran the same way
Test selection 2,840 of 3,842 tests run: the ones this change can reach, chosen by tools/select_tests.py from main's build graph
Vulkan validation ✅ no new validation IDs vs main (952 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_pipeline_journal 120.4 s, ⚠️ agc_driver_image_sample_unnormalized 45.5 s, ⚠️ agc_driver_sample_multisample_target 42.0 s, ⚠️ agc_driver_lazy_resolved_abi 39.2 s, ⚠️ agc_shader_sampler_limits 36.1 s
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_pipeline_journal: failed in 8 of the last 10 main runs
Failing on main too (7, not counted against this PR)
agc_driver_image_table
agc_driver_native_depth_bda_clear
agc_driver_native_multisample_depth
agc_submit_progress
agc_submit_progress_no_timeline
guest_mmap_executable
guest_socket_options_multicast
Validation IDs already present on main (8 IDs in 532 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (532 tests): agc_driver, agc_driver_address_passes, agc_driver_alias_copy_label, agc_driver_alpha_to_coverage, agc_driver_array_layer_target, agc_driver_bc_block_copy, agc_driver_bda_anchor_reads, agc_driver_bda_span_reads, and 524 more
VUID-vkCmdCopyImage-srcImage-01548 (4 tests): agc_driver_depth_clear_hle, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-vkCmdCopyImage-srcImage-01551 (4 tests): agc_driver_depth_clear_hle, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (1 test): agc_driver_srgb8_color_target
VUID-VkSamplerCreateInfo-addressModeU-01079 (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeU-parameter (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeV-parameter (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeW-parameter (1 test): agc_driver_image_gather_volume
Skipped (61)
agc_driver_bda_reads_shadowed_results: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_bda_reads_shadowed_results_per_build: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_copied_writer_label_order: skipped, the device reports a minStorageBufferOffsetAlignment of 4, so the dispatch binds its record at +0x1004 in place and nothing is written back; the test needs an alignment above 4
agc_driver_float16_unused_nan_payloads: skipped, the device has no native f16 conversions with RTE rounding and kept f16 denormals
agc_driver_gcn_display_present: skipped, no display: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
agc_driver_image_table_vouched_lookups: skipped, the device reports 4 of 4 host-imported pages written after a GPU read, so a watched imported table cannot be vouched for
agc_driver_linear_target_direct_write_completion: skipped, the device does not keep host imports write-watched, so no completion stamp over the target is tracked
agc_driver_ngg_vertex_wave_reduction: skipped, s3 describes a 32-lane wave only on 32-lane subgroups, and the device has 64 lanes
agc_driver_scattered_runs: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_driver_sparse_dma_buf_import: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_driver_unit_shadow: skipped, the device does not import watched host memory for unit shadows
agc_driver_unit_shadow_budget: skipped, the device does not import watched host memory for unit shadows
agc_driver_vertex_elected_atomic_max: skipped, the device runs vertex programs in subgroups, so they keep their cross-lane reductions
agc_host_import_sparse: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_idle_publish_wait: skipped, the device reports 4 of 4 host-imported pages written after a GPU read, so a forced watch of the import reads its submissions as CPU stores
agc_import_settle_initial_dcc: skipped, the device has no deferred settle of host imports: imports under 1 MiB wait for one only on Windows
agc_shadowed_key_stores: skipped, the device imports no watched host memory under a unit shadow
agc_small_tiled_shadow_label: skipped, host imports are unavailable: the test block is not imported and watched
agc_storage_clear_hand_over: skipped, the device imports no watched host memory for the clear-key hand-over
agc_storage_pending_key_refresh: skipped, refreshes over a pending key store are not testable here
agc_unit_shadow: skipped, the device does not import watched host memory for unit shadows
agc_unit_shadow_completion_store: skipped, the device reports watched host memory written when it imports or reads it
guest_http_uri_locale: 
guest_net_ctl: skipped, the host has no IPv4 address
guest_video_out_color_space: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_hdr: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_high_frame_rate: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_output_mode: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_resolution_status: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_wqhd_detection: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
video_out_flip_aftergpu: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_backtoback: skipped, no display or Vulkan d
Reproduce
git fetch origin eab4ee3ac6013f9d82b969ddd775ab1ee8fb929d 1c8c0efc8c41314402e6966da5bef6ea3d639d10
git checkout 1c8c0efc8c41314402e6966da5bef6ea3d639d10 && git merge --no-ff eab4ee3ac6013f9d82b969ddd775ab1ee8fb929d
git submodule update --init --recursive
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DANYPS5_ENABLE_SPIRV_TOOLS=ON
cmake --build build && cmake --build build --target libs
VK_DRIVER_FILES=/nonexistent/icd.json ctest --test-dir build -E '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 12 --output-on-failure
ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation \
  ctest --test-dir build -R '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 16 --output-on-failure
# failures are then re-run alone: --timeout 360 --parallel 2; new validation IDs: the test alone, twice, --parallel 1

Automated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs.

…missing

The unimported entry exists to run the guest write and aliased store
cases after a draw. Without a write watch both cases returned early and
the entry still passed. It now passes --require-write-watch and returns
the skip code when either case could not run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Astronaut10

Copy link
Copy Markdown
Contributor Author

Done in db1f5844d8. The unimported entry now runs with --require-write-watch. With that flag, if either case could not run, the test prints a skipped, ... line and returns 77. The other two entries are unchanged.

Checked both ways on an RX 9070 XT (RADV), validation layer loaded, no VUID- lines:

  • With write watch: all three entries pass, and the unimported one runs both cases (no "not checked" lines).
  • With APS5_NO_WRITE_WATCH=1: the unimported entry is skipped. The other two pass and print the two "not checked" lines, as before.

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head db1f584 merged onto main 1c8c0ef · tested 2026-11-04 06:13 UTC · 32 min

GPU NVIDIA RTX 2000 Ada Generation, driver 595.99.02, Vulkan 1.4.329
Host Ubuntu 26.04.1 LTS, kernel 7.0.0-38-generic, container ubuntu:24.04
Logs build and test logs for this run
Build ✅ passed (Release, -DANYPS5_ENABLE_SPIRV_TOOLS=ON)
Tests ✅ 2,784 passed · 6 failed (0 new, 3 also fail on main, 3 unstable on main) · 50 skipped (ANYPS5_REQUIRE_VULKAN=1)
Test setup CPU-only tests without a GPU; GPU tests (and any CPU-only test that failed or skipped without one) once on the GPU with VK_LAYER_KHRONOS_validation and ANYPS5_NO_SHADER_CACHE=1; main ran the same way
Test selection 2,840 of 3,842 tests run: the ones this change can reach, chosen by tools/select_tests.py from main's build graph
Vulkan validation ✅ no new validation IDs vs main (952 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_pipeline_journal 120.3 s, ⚠️ agc_driver_lookup_log_fits_build 31.3 s
Unstable on main (3, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_pipeline_journal: failed in 4 of the last 10 main runs
agc_submit_progress: failed in 5 of the last 10 main runs
agc_submit_progress_no_timeline: failed in 4 of the last 10 main runs
Failing on main too (3, not counted against this PR)
agc_driver_image_table
guest_mmap_executable
guest_socket_options_multicast
Validation IDs already present on main (8 IDs in 532 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (532 tests): agc_driver, agc_driver_address_passes, agc_driver_alias_copy_label, agc_driver_alpha_to_coverage, agc_driver_array_layer_target, agc_driver_bc_block_copy, agc_driver_bda_anchor_reads, agc_driver_bda_span_reads, and 524 more
VUID-vkCmdCopyImage-srcImage-01548 (7 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_sampling, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-vkCmdCopyImage-srcImage-01551 (7 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_sampling, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (1 test): agc_driver_srgb8_color_target
VUID-VkSamplerCreateInfo-addressModeU-01079 (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeU-parameter (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeV-parameter (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeW-parameter (1 test): agc_driver_image_gather_volume
Skipped (50)
agc_driver_bda_reads_shadowed_results: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_bda_reads_shadowed_results_per_build: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_gcn_display_present: skipped, no display: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
agc_driver_sample_order_grid_reference: skipped, the device does not keep depth drawn at custom sample locations at those locations, even after a transition that names them: the composite of uniform renders holds the guest's depth in 0 of 3005 sloped samples, so no path can be compared with it bit for bit
agc_driver_scattered_runs: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_driver_sparse_dma_buf_import: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_driver_stencil_ref_export: skipped, the device lacks VK_EXT_shader_stencil_export
agc_driver_vertex_elected_atomic_max: skipped, the device runs vertex programs in subgroups, so they keep their cross-lane reductions
agc_host_import_sparse: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_import_settle_initial_dcc: skipped, the device has no deferred settle of host imports: imports under 1 MiB wait for one only on Windows
agc_unit_shadow_completion_store: skipped, the device reports watched host memory written when it imports or reads it
guest_http_uri_locale: 
guest_net_ctl: skipped, the host has no IPv4 address
guest_video_out_color_space: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_hdr: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_high_frame_rate: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_output_mode: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_resolution_status: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_wqhd_detection: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
video_out_flip_aftergpu: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_backtoback: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_controls: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_cpuflip: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_cpuflip_in_order: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_dcc: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_deferred: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_eop: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
vide
Reproduce
git fetch origin db1f5844d8f379ce0c0770e82b3870d02d43cffe 1c8c0efc8c41314402e6966da5bef6ea3d639d10
git checkout 1c8c0efc8c41314402e6966da5bef6ea3d639d10 && git merge --no-ff db1f5844d8f379ce0c0770e82b3870d02d43cffe
git submodule update --init --recursive
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DANYPS5_ENABLE_SPIRV_TOOLS=ON
cmake --build build && cmake --build build --target libs
VK_DRIVER_FILES=/nonexistent/icd.json ctest --test-dir build -E '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 32 --output-on-failure
ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation \
  ctest --test-dir build -R '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 4 --output-on-failure
# failures are then re-run alone: --timeout 360 --parallel 2; new validation IDs: the test alone, twice, --parallel 1

Automated build and test on a contributor's NVIDIA machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs.

@cookie42073-cmd

Copy link
Copy Markdown
Contributor

Hey folks, I checked Astronaut10's latest db1f5844d8f379ce0c0770e82b3870d02d43cffe on Windows, merged onto main 5b1d381d5ad5d9f923326b18479c3bd889cdd588. The tested merge is 67451dd2ed9bef55acce4a30965f368c096eb705.

Windows 11 Pro 26300, WinLibs GCC 15.2.0 Release, SPIRV-Tools enabled. GPUs were Intel UHD 770, driver 32.0.101.7088, and RTX 4070 SUPER, driver 621.01. Every GPU run required Vulkan, disabled the shader cache and loaded the Khronos validation layer.

All three depth-plane sampling entries passed on both GPUs. The unimported entry ran both write-watch cases. With APS5_NO_WRITE_WATCH=1, that entry correctly returned skip code 77, while the other two entries passed with their partial-coverage messages.

I also checked the two existing regression controls on each GPU:

Temporary change Result on Intel and NVIDIA
Remove StorePendingImages(resource) from SyncFromMemory The alias-store case fails at texel 0, reading 0x3f800000 instead of 0x3e800000
Make KeepNewerDepthUnits call stamp() directly The earlier-write case fails at texel 0, reading 0x3e800000 instead of 0x3ec00000
Restore the original source and rebuild All three depth entries pass again

The surrounding selected tests gave:

GPU Main, 10 tests Initial PR run, 11 tests Restored PR run, 11 tests
Intel 9 passed, 1 failed 10 passed, 1 failed 10 passed, 1 failed
NVIDIA 9 passed, 1 failed 10 passed, 1 failed 11 passed

Intel's failure is agc_driver_native_depth_publication, with the same native D32S8 publication assertion on main and the PR. NVIDIA's agc_driver_direct_write_completion failed on main and the initial PR run, then passed in the restored run and two additional repeats on the same restored code. That result varies, so I am leaving it unresolved.

There were no VUID or synchronization-validation reports in these runs. Full builds of main and the tested merge completed, conventions pass, and the checkout is clean.

The end-to-end writeback-wrapper coverage noted in the review is still open. I tried an additional mirror fixture, but it also passed after bypassing that wrapper, so it did not qualify as a regression test and is excluded from this submission.

The ZIP contains the pinned run receipts, logs, control patches and hashes. Full-suite, game and performance validation remain outstanding. AI-assisted investigation with independent source and evidence review.
AnyPS5-15621-Windows-db1f5844-20261104-v2.zip

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ AMD GPU test: passed

PR head db1f584 merged onto main 1c8c0ef · tested 2026-11-04 07:03 UTC · 47 min

GPU AMD Radeon RX 6300 (RADV NAVI24), driver Mesa 25.2.8-0ubuntu0.24.04.4, Vulkan 1.4.318
Host Ubuntu 26.04.1 LTS, kernel 7.0.0-42-generic, container ubuntu:24.04
Logs build and test logs for this run
Build ✅ passed (Release, -DANYPS5_ENABLE_SPIRV_TOOLS=ON)
Tests ✅ 2,770 passed · 9 failed (0 new, 7 also fail on main, 2 unstable on main) · 61 skipped (ANYPS5_REQUIRE_VULKAN=1)
Test setup CPU-only tests without a GPU; GPU tests (and any CPU-only test that failed or skipped without one) once on the GPU with VK_LAYER_KHRONOS_validation and ANYPS5_NO_SHADER_CACHE=1; main ran the same way
Test selection 2,840 of 3,842 tests run: the ones this change can reach, chosen by tools/select_tests.py from main's build graph
Vulkan validation ✅ no new validation IDs vs main (952 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_pipeline_journal 120.4 s, ⚠️ public_headers 67.8 s, ⚠️ agc_driver_image_sample_unnormalized 62.1 s, ⚠️ agc_driver_lazy_resolved_abi 50.3 s, ⚠️ agc_driver_sample_multisample_target 38.5 s
Unstable on main (2, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_depth_fast_clear_submit: failed in 2 of the last 10 main runs
agc_driver_pipeline_journal: failed in 8 of the last 10 main runs
Failing on main too (7, not counted against this PR)
agc_driver_image_table
agc_driver_native_depth_bda_clear
agc_driver_native_multisample_depth
agc_submit_progress
agc_submit_progress_no_timeline
guest_mmap_executable
guest_socket_options_multicast
Validation IDs already present on main (8 IDs in 532 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (532 tests): agc_driver, agc_driver_address_passes, agc_driver_alias_copy_label, agc_driver_alpha_to_coverage, agc_driver_array_layer_target, agc_driver_bc_block_copy, agc_driver_bda_anchor_reads, agc_driver_bda_span_reads, and 524 more
VUID-vkCmdCopyImage-srcImage-01548 (4 tests): agc_driver_depth_clear_hle, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-vkCmdCopyImage-srcImage-01551 (4 tests): agc_driver_depth_clear_hle, agc_driver_depth_storage_dispatch, agc_driver_depth_surface_from_storage, agc_driver_dispatch_move_depth
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (1 test): agc_driver_srgb8_color_target
VUID-VkSamplerCreateInfo-addressModeU-01079 (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeU-parameter (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeV-parameter (1 test): agc_driver_image_gather_volume
VUID-VkSamplerCreateInfo-addressModeW-parameter (1 test): agc_driver_image_gather_volume
Skipped (61)
agc_driver_bda_reads_shadowed_results: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_bda_reads_shadowed_results_per_build: skipped, the device reports watched host memory written when it imports or reads it
agc_driver_copied_writer_label_order: skipped, the device reports a minStorageBufferOffsetAlignment of 4, so the dispatch binds its record at +0x1004 in place and nothing is written back; the test needs an alignment above 4
agc_driver_float16_unused_nan_payloads: skipped, the device has no native f16 conversions with RTE rounding and kept f16 denormals
agc_driver_gcn_display_present: skipped, no display: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
agc_driver_image_table_vouched_lookups: skipped, the device reports 4 of 4 host-imported pages written after a GPU read, so a watched imported table cannot be vouched for
agc_driver_linear_target_direct_write_completion: skipped, the device does not keep host imports write-watched, so no completion stamp over the target is tracked
agc_driver_ngg_vertex_wave_reduction: skipped, s3 describes a 32-lane wave only on 32-lane subgroups, and the device has 64 lanes
agc_driver_scattered_runs: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_driver_sparse_dma_buf_import: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_driver_unit_shadow: skipped, the device does not import watched host memory for unit shadows
agc_driver_unit_shadow_budget: skipped, the device does not import watched host memory for unit shadows
agc_driver_vertex_elected_atomic_max: skipped, the device runs vertex programs in subgroups, so they keep their cross-lane reductions
agc_host_import_sparse: skipped, host imports are unavailable: /dev/udmabuf is not accessible
agc_idle_publish_wait: skipped, the device reports 4 of 4 host-imported pages written after a GPU read, so a forced watch of the import reads its submissions as CPU stores
agc_import_settle_initial_dcc: skipped, the device has no deferred settle of host imports: imports under 1 MiB wait for one only on Windows
agc_shadowed_key_stores: skipped, the device imports no watched host memory under a unit shadow
agc_small_tiled_shadow_label: skipped, host imports are unavailable: the test block is not imported and watched
agc_storage_clear_hand_over: skipped, the device imports no watched host memory for the clear-key hand-over
agc_storage_pending_key_refresh: skipped, refreshes over a pending key store are not testable here
agc_unit_shadow: skipped, the device does not import watched host memory for unit shadows
agc_unit_shadow_completion_store: skipped, the device reports watched host memory written when it imports or reads it
guest_http_uri_locale: 
guest_net_ctl: skipped, the host has no IPv4 address
guest_video_out_color_space: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_hdr: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_high_frame_rate: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_output_mode: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_resolution_status: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_wqhd_detection: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
video_out_flip_aftergpu: skipped, no display or Vulkan device: DisplayWindow: Vulkan support is either not configured in SDL or not available in current SDL video driver (offscreen) or platform
video_out_flip_backtoback: skipped, no display or Vulkan d
Reproduce
git fetch origin db1f5844d8f379ce0c0770e82b3870d02d43cffe 1c8c0efc8c41314402e6966da5bef6ea3d639d10
git checkout 1c8c0efc8c41314402e6966da5bef6ea3d639d10 && git merge --no-ff db1f5844d8f379ce0c0770e82b3870d02d43cffe
git submodule update --init --recursive
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DANYPS5_ENABLE_SPIRV_TOOLS=ON
cmake --build build && cmake --build build --target libs
VK_DRIVER_FILES=/nonexistent/icd.json ctest --test-dir build -E '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 12 --output-on-failure
ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation \
  ctest --test-dir build -R '^(agc|shader|recompiler|videoout|video_out|guest_video_out|vulkan)|gpu' --timeout 120 --parallel 16 --output-on-failure
# failures are then re-run alone: --timeout 360 --parallel 2; new validation IDs: the test alone, twice, --parallel 1

Automated build and test on a contributor's AMD machine; it does not replace upstream CI. A new comment is posted for each new push. Full logs.

@cookie42073-cmd

Copy link
Copy Markdown
Contributor

Hey folks, I found why the earlier wrapper-test attempt was passing with the protection removed, and now have a test that catches it.

The CPU write-back path calls WriteChangedCommitted, which triggers FlushGpuWrites. In that fixture, it publishes the newer depth plane inside the older mirror's store and clears its stale state. The final sample can then return the cached newer depth regardless of the wrapper. Temporary logging confirmed the same nested publication on Intel and NVIDIA.

The new agc_driver_depth_plane_ordered_mirror_store entry uses a real host import that retains the write watch. It GPU-clears the older mirror to 0.75, draws the newer depth at 0.25, and stores the older mirror. It checks that this store leaves the depth publication counters unchanged, that guest memory contains 0.75 while sampling still returns 0.25, and that a final depth publication writes 0.25 back to guest memory.

Test-only commit bedfda5bd747a4f55bb361423aec7b0a44b8b944 is based on main 5b1d381d5ad5d9f923326b18479c3bd889cdd588 merged with Astronaut10's db1f5844d8f379ce0c0770e82b3870d02d43cffe. It changes the test and its CMake registration. The existing three sampling entries keep their behavior.

Same Windows machine, new entry Result
Main plus the same fixture, RTX 4070 SUPER Fails at sampled 0.75, expected 0.25
This PR plus the test, RTX 4070 SUPER Passes, including the final guest-memory check
Bypass only StorageTexture::writeBackLayers' protection Fails at the same sampled-value check
Restored final code, RTX 4070 SUPER Passes again, including two further fresh-process runs
Intel UHD 770 Skip 77 because the required watched host import is unavailable
Force host imports or write watch off, either GPU Skip 77

The main comparison carries the identical new test function and its memory assertion helper, with a small argument-parser adaptation. It carries none of this PR's production changes. The archive includes that exact comparison patch as well as the wrapper-removal control.

Full Windows Release builds passed for the candidate, the main comparison and the restored candidate. The three existing sampling entries passed on both GPUs in the final and restored runs. These runs used GCC 15.2.0, bundled SPIRV-Tools enabled, fresh shader compilation and the Khronos validation layer. Every tested invocation loaded the layer, with no VUID or synchronization-validation errors. NVIDIA driver 621.01, Intel driver 32.0.101.7088, Windows 11 Pro 26300.

The patch and author-preserving mbox are attached for this PR's review. This test depends on #15621. The new regression is verified on the NVIDIA watched-import path. Intel, Linux, macOS and title behavior remain outside that new coverage. The two GuestBufferMemory::WriteBack stamp paths remain untested end to end.

AI-assisted implementation, investigation and independent review with OpenAI Codex.

Patch and test logs — SHA-256 e29b677a5172a579d4ead5fb94efc9da4620e22ea6a3f6a5291626da8f9e4f76.

@ryanc2112

Copy link
Copy Markdown
Contributor

A GFX8 data point: AMD Radeon RX 570 (RADV POLARIS10), Mesa 26.2.5, SteamOS 3.8.28 (Arch distrobox), GCC 16.2.1, Release. Head db1f5844d8 merged onto main b11c7bf84f (clean merge), with ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation and ctest -V --no-tests=error. No log reports was not found but was requested by env var VK_INSTANCE_LAYERS.

agc_driver_depth_plane_sampling*, 3 runs each:

main This PR
Result both pass, 3 of 3 all three pass, 3 of 3, including the new agc_driver_depth_plane_sampling_unimported
VUID- errors 0 0

The 1,327 AGC, shader, VideoOut and Vulkan tests, once each:

AI-assisted: yes (Claude Code)

@Superseabas Superseabas left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows run with AMD's own driver, on the integrated Radeon of a Ryzen 7 7700X, and on an RTX 5070 Ti. The earlier AMD results here are RADV on Linux and the Windows ones are Intel and NVIDIA. Everything passes, both halves of the fix are covered on both GPUs, and nothing regresses.

Head db1f5844d8 merged onto main ed41d86d32 (clean merge, local only). Windows 11 Home 10.0.26200, WinLibs GCC 16.2.0 (x86_64-ucrt-posix-seh, r3), Release. ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, no missing-layer line, ANYPS5_GPU selecting the device, confirmed by Selected GPU:

  • AMD Radeon of a Ryzen 7 7700X (1002:164e, integrated), AMD 26.10.2 (32.0.21045.20006)
  • NVIDIA GeForce RTX 5070 Ti (10de:2c05), 621.01

Depth-plane tests. All 16 agc_driver_depth_plane_* tests on main, and the 17 on this PR (with _sampling_unimported), pass 3 of 3 on both GPUs. No VUID- lines. Write watch works on both devices (host imports of write-watched memory keep the write watch: yes), so the two write-watch cases run in every entry: no "not checked" line, and _sampling_unimported passes instead of skipping.

Red checks, each a local edit of the merged tree, 3 runs per GPU of agc_driver_depth_plane_sampling, _sampling_evicting and _sampling_unimported:

Edit Result on both GPUs
none 3 of 3
StorePendingImages(resource) removed from the sync 0 of 3: D32 plane drawn after an aliasing image's results were recorded, sampled after those results were stored: texel 0 read 0x3f800000, expected 0x3e800000
KeepNewerDepthUnits returning stamp() before it collects the units to keep 0 of 3: D32 plane sampled after a GPU write recorded before its draw completed: texel 0 read 0x3e800000, expected 0x3ec00000

A revert of the six driver files to main doesn't build, because the test calls NextRecordOrder and KeepNewerDepthUnits directly. So these edits keep the functions and switch off one half each.

Whole AGC set. ctest -R '^agc' -j 8 --timeout 300: 1,387 of 1,389 pass on the RTX and 1,386 on the Radeon. Those are the same failures as main on this machine, plus the new entry, which passes. All are tracked: agc_driver_direct_write_completion (#15564), agc_driver_quad_pixel_mask on the RTX (#14341), and on the Radeon agc_driver_scratch_pool (#15566) and agc_driver_sample_order_grid_reference (#9503).

check_conventions.py --base main passes. Astro Bot itself isn't tested here.

AI-assisted: yes (Claude Code)

@github-actions

github-actions Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

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.

Pull request Shared files not compared
PR 862 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 1368 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 1395 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 2434 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/debt/libSceAgcDriver.md
PR 4448 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 5021 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 5372 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/debt/libSceAgcDriver.md
PR 5609 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 5925 docs/dev/debt/libSceAgcDriver.md
PR 6146 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6186 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6188 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6192 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6194 docs/dev/debt/libSceAgcDriver.md
PR 6197 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6209 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6223 docs/dev/debt/libSceAgcDriver.md
PR 6280 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6412 docs/dev/debt/libSceAgcDriver.md
PR 6481 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6548 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6549 docs/dev/debt/libSceAgcDriver.md
PR 6743 docs/dev/debt/libSceAgcDriver.md
PR 6804 docs/dev/debt/libSceAgcDriver.md
PR 6808 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6867 docs/dev/debt/libSceAgcDriver.md
PR 6913 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6918 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 6926 docs/dev/debt/libSceAgcDriver.md
PR 6987 docs/dev/debt/libSceAgcDriver.md
PR 6989 docs/dev/debt/libSceAgcDriver.md
PR 6995 docs/dev/debt/libSceAgcDriver.md
PR 7002 docs/dev/debt/libSceAgcDriver.md
PR 7085 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7256 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7449 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7457 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7504 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 7514 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7604 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7622 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 7642 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7668 docs/dev/debt/libSceAgcDriver.md
PR 8246 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 8484 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 8592 docs/dev/debt/libSceAgcDriver.md
PR 8707 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9289 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 9335 docs/dev/debt/libSceAgcDriver.md
PR 9356 docs/dev/debt/libSceAgcDriver.md
PR 9387 docs/dev/debt/libSceAgcDriver.md
PR 9508 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9592 docs/dev/debt/libSceAgcDriver.md
PR 9748 docs/dev/debt/libSceAgcDriver.md
PR 9852 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 9884 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9893 docs/dev/debt/libSceAgcDriver.md
PR 9895 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9915 docs/dev/debt/libSceAgcDriver.md
PR 9950 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9999 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10049 docs/dev/debt/libSceAgcDriver.md
PR 10064 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10141 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 10193 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10233 docs/dev/debt/libSceAgcDriver.md
PR 10249 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10351 docs/dev/debt/libSceAgcDriver.md
PR 10359 docs/dev/debt/libSceAgcDriver.md
PR 10442 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 10443 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 10469 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10492 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10497 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10656 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10743 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10894 core/libs/prx/libSceAgcDriver/tests/execution/DepthPlaneSampling.cpp
PR 11346 docs/dev/debt/libSceAgcDriver.md
PR 11444 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 11485 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 11551 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 11587 docs/dev/debt/libSceAgcDriver.md
PR 11825 docs/dev/debt/libSceAgcDriver.md
PR 12070 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12157 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 12452 docs/dev/debt/libSceAgcDriver.md
PR 12565 docs/dev/debt/libSceAgcDriver.md
PR 12567 docs/dev/debt/libSceAgcDriver.md
PR 12568 docs/dev/debt/libSceAgcDriver.md
PR 12745 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12746 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12792 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 12827 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 12840 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/debt/libSceAgcDriver.md
PR 12855 docs/dev/debt/libSceAgcDriver.md
PR 12904 docs/dev/debt/libSceAgcDriver.md
PR 12944 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 13023 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 13147 docs/dev/debt/libSceAgcDriver.md
PR 13148 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 13248 docs/dev/debt/libSceAgcDriver.md
PR 13251 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13263 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 13599 docs/dev/debt/libSceAgcDriver.md
PR 13707 docs/dev/debt/libSceAgcDriver.md
PR 13793 docs/dev/debt/libSceAgcDriver.md
PR 13796 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13809 docs/dev/debt/libSceAgcDriver.md
PR 13863 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13920 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13928 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13929 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13963 docs/dev/debt/libSceAgcDriver.md
PR 13991 docs/dev/debt/libSceAgcDriver.md
PR 14084 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 14137 docs/dev/debt/libSceAgcDriver.md
PR 14212 docs/dev/debt/libSceAgcDriver.md
PR 14296 docs/dev/debt/libSceAgcDriver.md
PR 14344 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14561 docs/dev/debt/libSceAgcDriver.md
PR 14628 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14944 docs/dev/debt/libSceAgcDriver.md
PR 14950 docs/dev/debt/libSceAgcDriver.md
PR 14963 docs/dev/debt/libSceAgcDriver.md
PR 14964 docs/dev/debt/libSceAgcDriver.md
PR 14969 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14982 docs/dev/debt/libSceAgcDriver.md
PR 15015 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15058 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15059 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15136 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15169 docs/dev/debt/libSceAgcDriver.md
PR 15295 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 15296 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 15297 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 15302 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 15327 docs/dev/debt/libSceAgcDriver.md
PR 15404 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15443 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15450 docs/dev/debt/libSceAgcDriver.md
PR 15456 docs/dev/debt/libSceAgcDriver.md
PR 15487 docs/dev/debt/libSceAgcDriver.md
PR 15505 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 15529 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15548 docs/dev/debt/libSceAgcDriver.md
PR 15569 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15570 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 15658 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15670 docs/dev/debt/libSceAgcDriver.md
PR 15674 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15688 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15690 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15693 docs/dev/debt/libSceAgcDriver.md
PR 15707 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15710 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15729 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15750 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15792 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 15845 docs/dev/debt/libSceAgcDriver.md
PR 15868 docs/dev/debt/libSceAgcDriver.md
PR 15883 docs/dev/debt/libSceAgcDriver.md
PR 15919 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 15941 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 15967 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16011 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16025 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16116 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16183 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16184 docs/dev/debt/libSceAgcDriver.md
PR 16253 docs/dev/debt/libSceAgcDriver.md
PR 16260 docs/dev/debt/libSceAgcDriver.md
PR 16286 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16301 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16312 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 16345 docs/dev/debt/libSceAgcDriver.md
PR 16363 core/libs/prx/libSceAgcDriver/Graphics/include/DepthSurface.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16364 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16365 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16368 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16373 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16375 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 16411 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16427 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16463 docs/dev/debt/libSceAgcDriver.md
PR 16474 core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 16483 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16501 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16544 docs/dev/debt/libSceAgcDriver.md
PR 16555 docs/dev/debt/libSceAgcDriver.md
PR 16556 docs/dev/debt/libSceAgcDriver.md
PR 16557 docs/dev/debt/libSceAgcDriver.md
PR 16569 docs/dev/debt/libSceAgcDriver.md
PR 16644 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16648 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
PR 16751 core/libs/prx/libSceAgcDriver/Graphics/include/GuestBufferMemory.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/GuestBufferMemory.cpp
docs/dev/debt/libSceAgcDriver.md
PR 16752 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md

@adriadam10 adriadam10 self-assigned this Nov 7, 2026
@github-actions github-actions Bot added needs rebase Conflicts with main, rebase needed and removed review queue Next in the maintainer review queue: checks pass, no open change request, no conflict labels Nov 7, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agc libSceAgc* build docs needs rebase Conflicts with main, rebase needed unblocks title Names a title ID on the Unblocks line

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants