Skip to content

feat(agc): render layered draws into a depth view of several slices - #7256

Open
gjonn wants to merge 6 commits into
boykopovar:mainfrom
gjonn:feat/agc-layered-depth-targets
Open

gjonn wants to merge 6 commits into
boykopovar:mainfrom
gjonn:feat/agc-layered-depth-targets

Conversation

@gjonn

@gjonn gjonn commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

What

Depends on: #7254. The first four commits of this branch are #7254's (its two changes, the review follow-up fix and its agc_driver_layered_array_color_draw test); this PR's own change is the last commit, feat(agc): render layered draws into a depth view of several slices.

With #7254, PPSA01317 gets through the color side of a 512x512 cube map pass and then aborts with layered rendering with a depth target is unsupported. The draw exports the render target array index into a six-slice color view, with a DB_DEPTH_VIEW of slices 0 to 5.

  • Decode. In a layered draw, the depth view renders as many layers as the color views. A depth-only layered draw renders the view's own slices. A depth view whose slice count differs from the color views throws.
  • Depth surfaces. The depth surfaces of those slices share one single-sample array image, one layer each, and the draw attaches a 2D array view of it. Each slice keeps its own Z, stencil and HTILE address (one DepthSliceBytes and one HtileMetadataBytes further per slice). Each slice also keeps its own plane ownership, HTILE clears and plane copies. A later draw into one slice binds that slice's layer. Another layered view over some of the same slices (another first slice or slice count) is a separate array image that takes each slice by a whole-slice copy when it is bound.
  • A multisampled layered depth target throws, and so does a layered target without a depth plane. The debt file gets a "Layered depth targets" entry, and the color entry no longer lists the depth refusal.

Behaviour change on an existing path: a depth-only layered draw into a multisampled or stencil-only depth view of several slices used to render silently into the first slice. It now throws.

Open debt:

  • The DB clamps a layer index past the view's last slice to SLICE_MAX. That clamp is not modelled; such a layer is undefined in Vulkan.
  • A single-slice color view with a multi-slice depth view stays single-layer (the depth view's first slice), as before.

#7194 changes the same HTILE slice-clear function in DepthSurface.cpp (taking a later slice's clear when every word has ZMask 0). It works per slice and composes with the per-slice HTILE addresses here; the two branches merge without conflicts.

Tested

Windows 11, NVIDIA GeForce RTX 5090 Laptop GPU, driver 616.92. Ninja/MinGW Release with BUILD_TESTING=ON, on top of #7254 rebased on main 922dc89.

  • New GPU test agc_driver_layered_depth_target covers a six-layer depth-tested draw:
    • after a draw into slice 2 alone;
    • after per-layer depth fills;
    • after an HTILE clear of slice 4 alone;
    • a single-slice draw into slice 1 after the layered draws;
    • a six-layer draw after a three-layer view of slices 2 to 4;
    • each slice read back as a layer of a 2D array texture.
  • agc_driver_graphics_tests: new decode cases for depth-only layered views, color plus depth views of matching, shifted and mismatched slice counts, and views without the layer export staying single-layer.
  • 29 related tests: 28 pass, and agc_driver_stencil_ref_export is skipped because the device does not support it. The set is the layered depth target, graphics and decode state tests, every depth/HTILE/stencil execution test (agc_driver_depth_*, agc_driver_native_multisample_depth, agc_driver_sample_mask_depth_stencil, agc_driver_stencil_*), the array layer target test and the layered volume and vertex layer export tests.
  • tools/check_conventions.py --base origin/main and tools/check_test_registration.py pass.
  • PPSA01317 gets past this abort on main with feat(agc): render layered draws into 2D array color views #7254 (checked in boots).

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: feat(agc): render layered draws into 2D array color views #7254
  • Fixes: none
  • Unblocks: PPSA01317 Gran Turismo 7 (PPSA01317) #4697
  • GPUs tested: NVIDIA GeForce RTX 5090 Laptop GPU, driver 616.92, Windows 11
  • AI-assisted: yes

@github-actions

github-actions Bot commented Oct 17, 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/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 1395 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 2434 docs/dev/debt/libSceAgcDriver.md
PR 4040 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 4448 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 5372 docs/dev/debt/libSceAgcDriver.md
PR 5609 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 5925 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6108 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6146 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6185 docs/dev/debt/libSceAgcDriver.md
PR 6186 docs/dev/debt/libSceAgcDriver.md
PR 6187 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6188 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6192 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6194 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6197 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 6235 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6273 docs/dev/debt/libSceAgcDriver.md
PR 6280 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6412 docs/dev/debt/libSceAgcDriver.md
PR 6481 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6548 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6549 docs/dev/debt/libSceAgcDriver.md
PR 6615 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6743 docs/dev/debt/libSceAgcDriver.md
PR 6804 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6808 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6867 docs/dev/debt/libSceAgcDriver.md
PR 6926 docs/dev/debt/libSceAgcDriver.md
PR 6970 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 6973 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6987 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6989 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 6995 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7002 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7085 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7275 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 7369 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 7410 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 7449 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7504 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 7514 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
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 7642 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7668 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 7978 docs/dev/debt/libSceAgcDriver.md
PR 8212 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 8246 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.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 9020 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9318 docs/dev/debt/libSceAgcDriver.md
PR 9335 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9356 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9387 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9489 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9508 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9592 docs/dev/debt/libSceAgcDriver.md
PR 9604 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9672 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9673 docs/dev/debt/libSceAgcDriver.md
PR 9674 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9675 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9700 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9712 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9742 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9748 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9852 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 9875 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9884 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9891 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9892 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9893 docs/dev/debt/libSceAgcDriver.md
PR 9895 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 9897 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 9898 docs/dev/debt/libSceAgcDriver.md
PR 9915 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
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 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
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/tests/Graphics.cpp
PR 10159 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10193 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10233 docs/dev/debt/libSceAgcDriver.md
PR 10249 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10256 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 10351 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10359 docs/dev/debt/libSceAgcDriver.md
PR 10442 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 10469 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10472 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.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
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10556 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 10656 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10678 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.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 10779 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 10882 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 11104 docs/dev/debt/libSceAgcDriver.md
PR 11265 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 11346 docs/dev/debt/libSceAgcDriver.md
PR 11444 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 11452 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.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/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 11557 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 11566 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 11587 docs/dev/debt/libSceAgcDriver.md
PR 11825 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
core/libs/prx/libSceAgcDriver/tests/execution/LayeredArrayColorDraw.cpp
docs/dev/debt/libSceAgcDriver.md
PR 11995 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 11998 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 12066 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 12070 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12120 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 12125 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.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 12617 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 12662 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
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 12764 docs/dev/debt/libSceAgcDriver.md
PR 12792 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 12813 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12840 docs/dev/debt/libSceAgcDriver.md
PR 12855 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 12904 docs/dev/debt/libSceAgcDriver.md
PR 12921 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12980 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 13021 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13023 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13044 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13146 docs/dev/debt/libSceAgcDriver.md
PR 13147 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13148 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 13151 docs/dev/debt/libSceAgcDriver.md
PR 13178 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.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 13474 docs/dev/debt/libSceAgcDriver.md
PR 13599 docs/dev/debt/libSceAgcDriver.md
PR 13646 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13707 docs/dev/debt/libSceAgcDriver.md
PR 13793 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
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 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13858 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13863 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.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/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13928 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13929 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13963 docs/dev/debt/libSceAgcDriver.md
PR 13991 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 13994 docs/dev/debt/libSceAgcDriver.md
PR 14005 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14018 docs/dev/debt/libSceAgcDriver.md
PR 14032 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 14051 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 14076 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 14084 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 14085 docs/dev/debt/libSceAgcDriver.md
PR 14212 docs/dev/debt/libSceAgcDriver.md
PR 14220 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14243 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14248 docs/dev/debt/libSceAgcDriver.md
PR 14261 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 14262 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 14265 docs/dev/debt/libSceAgcDriver.md
PR 14296 docs/dev/debt/libSceAgcDriver.md
PR 14302 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14311 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14344 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14473 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 14475 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 14561 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14621 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14628 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14815 docs/dev/debt/libSceAgcDriver.md
PR 14857 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 14868 core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 14880 core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
PR 14909 docs/dev/debt/libSceAgcDriver.md
PR 14914 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
PR 14940 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 14943 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
docs/dev/debt/libSceAgcDriver.md
PR 14944 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
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
PR 14976 docs/dev/debt/libSceAgcDriver.md
PR 14982 docs/dev/debt/libSceAgcDriver.md
PR 14993 docs/dev/debt/libSceAgcDriver.md
PR 15015 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15056 core/libs/prx/libSceAgcDriver/Graphics/src/Draw.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
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 15067 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp

@github-actions github-actions Bot added docs agc libSceAgc* labels Oct 17, 2026
@gjonn
gjonn force-pushed the feat/agc-layered-depth-targets branch from a349da2 to 2ddfffc Compare October 17, 2026 21:01
gjonn added 5 commits October 17, 2026 17:11
A draw whose vertex shader exports the render target array index into a
color view of several slices of a 2D array target was refused. The view
now renders layers lastSlice - slice + 1 through a 2D array attachment
view of the array's resident image starting at its first slice, and the
draw marks every rendered slice dirty. A view of several slices of a
surface that is not a 2D array is still refused, as is a layered draw
without the array's resident image.

AI-assisted: yes
…of its view's slices

A layered draw into a color view of slices 0 to 5 of a 2D surface whose
CB_COLOR_ATTRIB3 declares one slice was refused. The CB clamps the
render target array index to the view's SLICE_MAX, not to the surface's
slice count, so each layer is written one slice pitch further on.
PPSA01317 renders a 512x512 cube map this way. Such a view now renders as
a 2D array of the view's last slice + 1 slices.

AI-assisted: yes
…the volume layer guard

The resident image of a 2D array color view only compared the view's own
slice offset with the image's layer pitch, which is trivially equal for
slice 0. Every slice of the array image is now checked against the slice
size DecodeColorBuffer offsets the view by. AttachmentView again requires
layer 0 for a 3D target, as it did before layered 2D array views.

AI-assisted: yes
A vertex shader exporting the render target index draws one value per
layer into a CB_COLOR_VIEW of slices 1 to 3 of a four-slice 2D array and
into slices 0 to 2 of a surface of one slice. After the write-back every
slice of guest memory must hold its layer's value, and the slices
outside the view (slice 0, and slice 3 of the one-slice surface) their
initial bytes.

AI-assisted: yes
A layered draw (the vertex shader exports the render target array
index) with a depth target was refused. PPSA01317 renders a 512x512
cube map this way: a six-slice color view with a DB_DEPTH_VIEW of
slices 0 to 5.

The depth view now renders as many layers as the color views, or its
own slices in a depth-only layered draw. The depth surfaces of those
slices share one single-sample array image, one layer each, and the
draw attaches a 2D array view of it. Each slice keeps its own Z,
stencil and HTILE address, plane ownership, HTILE clears and copies,
and a later draw into one slice binds that slice's layer. A depth view
of another slice count than the color views, a multisampled layered
depth target and one without a depth plane throw.

AI-assisted: yes
@gjonn
gjonn force-pushed the feat/agc-layered-depth-targets branch from 2ddfffc to 5589752 Compare October 17, 2026 21:27
@gjonn

gjonn commented Oct 17, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto main 5f8d2a2 via the rebased #7254 (force-push, head 5589752). One conflict, in DepthSurface.cpp DepthSurfaceView: #7131 changed the inline bind code to use NoteHtileClear() instead of OR-ing pendingClear, and this PR had moved that code into bindSurface(). I kept bindSurface() and applied the NoteHtileClear() calls inside it, so the HTILE clears drop a pending plane fill for both single and per-slice binds. Each slice keeps its own depthFill/stencilFill, and RecordClear clears only its own layer. Rebuilt; all 666 agc_* tests pass, including agc_driver_layered_depth_target, agc_driver_depth_, agc_driver_stencil_, agc_driver_native_multisample_depth, agc_driver_sample_mask_depth_stencil, agc_driver_layered_array_color_draw and the new agc_driver_depth_plane_fill. check_conventions.py and check_test_registration.py are clean.

AI-assisted: yes

alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 17, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 18, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 18, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 18, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 18, 2026
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>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 18, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 18, 2026
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>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 18, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 18, 2026
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>
@frankea

frankea commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

RTX 4090 data point on PPSA01317, on top of my #7254 run (same stack, same box). Short version: with this PR the cube map pass gets through its depth side as well, 3 of 3 runs, and the next stop is the sample of the cube it just rendered: samples a converted float image that is not a 2D or 2D array view, which is #5958's own cube-view rejection and the case #7271 says it handles for format 43.

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 libs target only (no tests built). app.exe is the relink from main 31cbb55 (--windows --registry --module-dir .); only libs/ is swapped between runs. Tree: the #7254 stack (main 5f8d2a2 + #7137 2aa6bfc + #7207 ec28b6b + #7175 555b7e8 + #5958 87a9b8d + #7243 da158d6 + #7238 4aaf276 + #7240 7c19c66 + #7254 ebe289b, 9ea37b61b, see the #7254 comment for the one State.cpp conflict) merged with this PR's head 5589752 (clean, b81f69024). The libSceSsl.prx is the one from #7319 (1f26755). No controller, no input, nobody at the keyboard; one-shot interactive task per run, 600 s cap, box otherwise idle.

Result. All three runs get past layered rendering with a depth target is unsupported: splash, the black loading screen with the GT spinner (title-bar counter 29 FPS, 1,150 frames at the last capture of run 3), save data mounted, three sceNetResolverStartNtoa -> host DNS lookup failed, 392 further shaders registered, and then, identically every time:

[gpu] driver failure: shader 0x1258d31800 stage 5: samples a converted float image that is not a 2D or 2D array view, which is not implemented
[videoout] presentation failed: shader 0x1258d31800 stage 5: samples a converted float image that is not a 2D or 2D array view, which is not implemented
terminate called after throwing an instance of 'std::runtime_error'
  what():  shader 0x1258d31800 stage 5: samples a converted float image that is not a 2D or 2D array view, which is not implemented
FATAL: abort() (SIGABRT) on thread 8352

That message is #5958's ResourceMaterializer.cpp reject of a cube or non-2D view on a converted float image, so the pixel shader is now sampling the 10_11_11 float cube map that this PR and #7254 let the title render. No depth-side refusal of any other wording, no depth view whose slice count differs, no device loss.

run shader cache exit after stop
stack without #7256 (#7254 comment, 3 runs) warm 35 to 42 s layered rendering with a depth target is unsupported
1 warm 37 s shader 0x1258d31800 stage 5: samples a converted float image that is not a 2D or 2D array view
2 warm 35 s same
3 warm 35 s same

The chain on this box so far, all on a libs built from the stack above: #6350 crash (#7137) -> sceSslConnect (#7319) -> 11_11_10 blend (#7243) -> dynamic-mip storage image (#7238) -> unnormalized sampler (#7240) -> layered colour view (#7254) -> layered depth view (this PR) -> converted float cube sample.

stderr of run 3 (warm, box idle) from the second 10 s summary to the abort, the 392 per-shader ShaderRegistry lines removed
[log] 10.5 s: 191 lines (19 stdout, 172 stderr), 26.7 KiB written, 0 repeats coalesced; callers spent 0.34 ms queueing and formatting (0.003% of one thread), logger thread 94.14 ms, queue peak 2.2 KiB
[SAVEDATA:native] mount3 user=268435456 dir=DRFILEIV mode=0x1 blocks=673 -> 0x809f0008 point= status=0
[SAVEDATA:native] getMemory2 user=268435456 slot=0 -> 0x00000000
[shader-disk-cache] (10 s): 118 hits, 0 misses, 0 writes (0.0 MiB), 0 load failures, 0 write failures; resource plans: 112 hits, 0 misses, 0 writes, 0 load failures; 12.6 MiB read in 26.2 ms (totals: 1792 hits, 0 misses, 0 writes; plans 1760 hits, 0 misses)
[SOFT-NET] sceNetResolverStartNtoa -> host DNS lookup failed
[SOFT-NET] sceNetResolverStartNtoa -> host DNS lookup failed
[SOFT-NET] sceNetResolverStartNtoa -> host DNS lookup failed
[gpu] driver failure: shader 0x1258d31800 stage 5: samples a converted float image that is not a 2D or 2D array view, which is not implemented
[videoout] presentation failed: shader 0x1258d31800 stage 5: samples a converted float image that is not a 2D or 2D array view, which is not implemented
terminate called after throwing an instance of 'std::runtime_error'
  what():  shader 0x1258d31800 stage 5: samples a converted float image that is not a 2D or 2D array view, which is not implemented
terminate called after throwing an instance of 'std::runtime_error'
  what():  shader 0x1258d31800 stage 5: samples a converted float image that is not a 2D or 2D array view, which is not implemented
FATAL: abort() (SIGABRT) on thread 8352

AI-assisted: yes (Claude Code)

alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 18, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 24, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 24, 2026
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>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 24, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 24, 2026
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>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 24, 2026
Adapt gjonn shared depth ownership from upstream PR boykopovar#7256, commit 5589752, while retaining the framebuffer layer-count API. Record repeated draws directly into the shared array and preserve per-slice sampled and storage views. Test overlapping views, HTILE clears, sampled planes, and repeated draw recipes.

Co-authored-by: Gjon Gojcevic <gjonn@hotmail.com>
alex73630 added a commit to alex73630/AnyPS5 that referenced this pull request Oct 24, 2026
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>
@oneandonlydean

Copy link
Copy Markdown
Collaborator

@gjonn This PR now conflicts with main in core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp, core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp, core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp, core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp, core/libs/prx/libSceAgcDriver/tests/Graphics.cpp, docs/dev/debt/libSceAgcDriver.md. Main’s depth-view constructor, allocation and tracked-unit handling overlap this PR’s layered-depth interfaces. Could you reconcile layer-count handling and image ownership with the current depth-view and write-tracking paths?

@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 — changes requested

The layered depth path builds and its tests pass at the PR head. But the branch no longer merges into current main, and a rebase has to rework the code it touches, so the change needs a rebase and a fresh test run.

What I ran

  • PR head: 5589752147fe73b1487bce01b985b83e70f42b15
  • main: 52c09d567d2fa453494dd720fcf53a98149468e4
  • PR merge base: 5f8d2a252437a8dc607f0f52239946bb3f9b22a2

All commands ran in a clean worktree on Arch Linux 7.2.11-zen, GCC 16.2.1, Intel Core i9-14900KF, NVIDIA GeForce RTX 4070 Ti SUPER (driver 615.78.08), with a Release, Ninja, BUILD_TESTING=ON build.

git fetch origin main pull/7256/head:refs/review/7256
git checkout --detach origin/main
git merge --no-ff --no-edit refs/review/7256        # conflicts, aborted
git checkout --detach refs/review/7256               # submodules synced to the PR's base
git diff --check origin/main...refs/review/7256
python3 tools/check_conventions.py --base origin/main
cmake --build build -j10 --target agc_driver_layered_depth_target_tests agc_driver_graphics_tests \
  agc_driver_layered_array_color_draw_tests agc_driver_array_layer_target_tests agc_driver_depth_*_tests \
  agc_driver_layered_volume_*_tests agc_driver_native_multisample_depth_tests \
  agc_driver_sample_mask_depth_stencil_tests agc_driver_stencil_*_tests libs
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 -j4 -V --output-on-failure \
  -R '^(agc_driver_graphics|agc_driver_array_layer_target|agc_driver_depth_.*|agc_driver_layered_.*|agc_driver_native_multisample_depth|agc_driver_sample_mask_depth_stencil|agc_driver_stencil_.*)$'
# same build and ctest at the merge base 5f8d2a252 (without the two layered tests it lacks)
# negative control: see below

Results

Check Result
Merge into main 52c09d5 Conflicts in 6 files, 20 hunks (see Findings)
git diff --check clean
tools/check_conventions.py --base origin/main All conventions checks passed.
Build at PR head (test targets above and libs) OK, no new warnings in the changed files
27 related tests at PR head, with validation 26 passed, agc_driver_stencil_ref_export skipped (this device does not support it)
agc_driver_layered_depth_target Passed, 0.35 s
Same 25 tests at merge base 5f8d2a2 24 passed, the same 1 skipped
VUID- lines, PR head vs merge base 40 vs 40, all VUID-vkBeginCommandBuffer-commandBuffer-00050 from agc_driver_depth_storage and agc_driver_native_multisample_depth; none come from the changed tests, and the PR adds none
was not found but was requested by env var VK_INSTANCE_LAYERS absent from both logs; the loader inserted VK_LAYER_KHRONOS_validation in every test

I compared validation against the PR's merge base, not against main. The merged tree does not exist, and 11,535 commits separate the base from main, so a main run would not isolate this change.

Merge conflicts
CONFLICT (content): core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp      (2 hunks)
CONFLICT (content): core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp     (9 hunks)
CONFLICT (content): core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp             (5 hunks)
CONFLICT (content): core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp          (1 hunk)
CONFLICT (content): core/libs/prx/libSceAgcDriver/tests/Graphics.cpp                (2 hunks)
CONFLICT (content): docs/dev/debt/libSceAgcDriver.md                                (1 hunk)
ctest at PR head (excerpt)
525: layered depth target tests passed
16/27 Test #525: agc_driver_layered_depth_target ...........   Passed    0.35 sec
319: Graphics validation tests passed
524: layered array color draw tests passed
100% tests passed out of 27
	654 - agc_driver_stencil_ref_export (Skipped)
Validation messages (same in both runs)
364: Validation Error: [ VUID-vkBeginCommandBuffer-commandBuffer-00050 ] | MessageID = 0xb24f00f5
364: vkBeginCommandBuffer(): VkCommandBuffer ... was recorded and now in the executable state. You must call vkResetCommandBuffer() before calling vkBeginCommandBuffer() again.

20 lines from agc_driver_depth_storage and 20 from agc_driver_native_multisample_depth, at both the PR head and the merge base.

Negative control

At the PR head I restored DepthSurface.cpp, Draw.cpp, State.cpp, Texture.cpp and Texture.hpp from ebe289bdc7, the PR's last commit before its own change. I kept State.hpp (the new DepthTarget::layers field) and the tests, then rebuilt. Both tests fail:

agc_driver_graphics: AGC graphics: layered rendering with a depth target is unsupported
agc_driver_layered_depth_target: AGC graphics: a layered draw after a draw into depth slice 2 alone: slice 1 texel (0, 0) is 0.250000, expected 0.750000 (the depth test of a ramp from 0 to 1 over 32 texels passes on the first 32)

After the run I restored the PR's files.

Findings

Blocking

  1. The branch conflicts with main. This confirms the conflict list in the earlier comment from oneandonlydean: the same six files, 20 hunks. The conflicts touch the code this PR changes. A rebase has to reapply the per-layer logic to code that main has since rewritten:

    • In the depth plane fill on main, the direct image copy and the UNDEFINED -> TRANSFER_DST_OPTIMAL discard barriers hard-code array layer 0 (DepthSurface.cpp#L735-L780 on main). That was correct for a one-layer image. On the shared array image this PR introduces, a fill of slice k would discard and overwrite layer 0, slice 0's contents. All four depth-image subresources there need layer: depthRegion, the destination of copy, and both discard.subresourceRange. The new test should also cover a direct-copy fill of a non-zero slice.
    • The surface constructor on main allocates through AllocateImageMemory (L316). The array != nullptr branch has to keep that path.
    • The depth Texture constructor on main gained a VkImageUsageFlags usage parameter before layerCount. This PR's Sampled() call passes ..., layer, owned, 1u. Rebased as is, that 1u would become usage rather than layerCount.
    • Sampled() on main now goes through the multisample sample shadow (around L481). The layer, 1u arguments must be carried into that call.

    Because the resolved code will differ from what was tested, the GPU results here and in the description need rerunning after the rebase.

Non-blocking

  1. The debt file keeps a contradicting entry. The "HTILE address of a depth array slice" entry (debt line 42 at the PR head, line 76 on main) says decodeDepth does not add the slice offset to htileAddress, so all slices share slice 0's HTILE. But decodeDepth already adds it (State.cpp:310 at the PR head, since 8fec47a). The new "Layered depth targets" entry (line 144) relies on that per-slice HTILE address. The stale entry predates this PR, but this PR now documents the opposite behaviour. Please remove or rewrite it while resolving the debt-file conflict.
  2. The description's dependency is out of date. #7254 was merged on 2026-10-19 from a later head, deb0ba305. This branch still carries its four pre-merge commits. After rebasing, those commits should go, Depends on should read none, and the description should drop "the first four commits of this branch are #7254's".

I found no correctness problem in the PR's own logic at its base. layerTarget steps Z, stencil and HTILE by one slice from the decoded first slice, which matches decodeDepth. The layered image's view is torn down before the surfaces that share its OwnedImage. The unimplemented cases (multisampled, stencil-only, mismatched slice counts) throw.

Not verified

  • A build or tests of the merged tree, because it does not merge.
  • The PPSA01317 claim and the RTX 4090 report in the comments. I did not launch any title.
  • Windows/MinGW builds.
  • agc_driver_stencil_ref_export, which also skips on this device.

To get this to a good state

  1. Rebase onto current main, dropping the pre-merge #7254 commits. Then carry layer through main's direct depth copy, discard barriers, AllocateImageMemory path and sample-shadow Texture construction.
  2. Add a check to agc_driver_layered_depth_target that fills a non-zero slice through the direct depth copy and then reads slice 0 back unchanged.
  3. Remove or rewrite the stale "HTILE address of a depth array slice" debt entry.
  4. Rerun the layered, depth, stencil and graphics tests on the rebased branch, with the validation layer, on main and on the change. Update Depends on to none.

@Amoenus

Amoenus commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

@gjonn A focused current-main correction from the Sonic investigation is now #14084 (issue #14083): a newly created samplingActive depth surface already initialized from complete clear-proven HTILE must retain its constructor clear even when the depth address has a previous owner. Main-production controls fail and the fix passes all24 initial/raster cases per vendor on RTX5080 and Radeon Graphics; existing clear/refusal/lifetime checks remain passing. No layered implementation is copied or required, and a new Sonic replay is still pending.

Your published layered bindSurface extraction retains the earlier unconditional native fast-clear refusal. Proposed source landing order: #14084 before this layered rebase, then carry its fresh/admitted condition into bindSurface while retaining the reused-surface and unsupported-import guards. Is that order acceptable? This is a proposal, not an assumed agreement or a request to broaden your PR. #14084 separately declares #12862 first for registration relocation. AI-assisted: yes (Codex).

@oneandonlydean

Copy link
Copy Markdown
Collaborator

Thank you for your work on this. Main has moved, and the PR now conflicts in:

  • core/libs/prx/libSceAgcDriver/Graphics/include/Texture.hpp
  • core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
  • core/libs/prx/libSceAgcDriver/Graphics/src/Draw.cpp
  • core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
  • core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
  • docs/dev/debt/libSceAgcDriver.md

Could you merge current main into your branch or rebase onto it, keeping the existing review fixes? The points from our earlier review are also still open.

Thank you!

@oneandonlydean oneandonlydean added the stale Conflicting with main and no activity for 7 days label Nov 1, 2026

@CnRJay CnRJay 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.

Points on 7256:

  1. Comments in code. Draw.cpp ("DecodeColorBuffer offsets slice s by s times this size; every slice the image stores...") and tests/execution/LayeredArrayColorDraw.cpp (a four-line header comment) add comments. The rule is no comments except #endif and namespace ends.

  2. Graphics test protocol. This is an AGC change, so the same focused tests need to be run on main and on the change with ANYPS5_REQUIRE_VULKAN=1 ANYPS5_NO_SHADER_CACHE=1 VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation, same machine and GPU, with a statement that no new VUID- lines appear. Please fill GPUs tested with that result.

  3. Negative control. Does the new layered-array test fail on main for case (a) (slices 1..3 of a four-slice array) and case (b) (slices 0..2 of a one-slice surface)? Please paste the failing main output.

@ycbuzi

ycbuzi commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

@gjonn another title stops on the refusal this PR removes: My First Gran Turismo (PPSA24157) ends with AGC graphics: layered rendering with a depth target is unsupported after 295 s (3729 frames, about 60 FPS before it), once a scaled-texture stop ahead of it is out of the way (unsupported guest texture format 3, 8_USCALED; I'm preparing that fix separately).

I wanted to run this PR on it, but the head (5589752147, updated 11-02) no longer merges onto main: git merge-tree against ea07ec82d3 and against 7ad9749ed0 both conflict in Texture.hpp, DepthSurface.cpp, Draw.cpp, Texture.cpp, tests/Graphics.cpp and the debt file (22 hunks), as @humanityBG also found in #13219. If you rebase it, I'll run both titles' stops on the same machine (Windows 11, RTX 4070 SUPER, NVIDIA 616.92) and post the results here.

AI-assisted (Claude Code); the stop, time and frame count are from the run's anyps5.log and window title.

@github-actions github-actions Bot removed the stale Conflicting with main and no activity for 7 days label Nov 6, 2026
Co-authored-by: gjonn <7807870+gjonn@users.noreply.github.com>
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Nov 6, 2026
@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head 6ceaa39 merged onto main 82fcf46 · tested 2026-11-06 06:25 UTC · 34 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,922 passed · 4 failed (0 new, 3 also fail on main, 1 unstable on main) · 55 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,981 of 4,158 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 (987 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_pipeline_journal 120.1 s, ⚠️ agc_shader_sampler_limits 34.5 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 1 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
Validated but not compared (1, not in the main baseline's validation pass)
agc_driver_layered_depth_target
Validation IDs already present on main (9 IDs in 593 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (593 tests): agc_driver, agc_driver_address_draw_space_reuse, 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, and 585 more
VUID-VkShaderModuleCreateInfo-pCode-08737 (14 tests): agc_driver_dpp16_operands, agc_driver_dpp8_pk_fmac, agc_driver_dx10_clamp, agc_driver_f16_fma_denormal_modes, agc_driver_f16_fma_invalid_nan, agc_driver_float16_fma_rounding, agc_driver_float16_modifiers, agc_driver_float16_native, and 6 more
VUID-VkShaderModuleCreateInfo-pCode-08739 (14 tests): agc_driver_dpp16_operands, agc_driver_dpp8_pk_fmac, agc_driver_dx10_clamp, agc_driver_f16_fma_denormal_modes, agc_driver_f16_fma_invalid_nan, agc_driver_float16_fma_rounding, agc_driver_float16_modifiers, agc_driver_float16_native, and 6 more
VUID-VkShaderModuleCreateInfo-pCode-08741 (14 tests): agc_driver_dpp16_operands, agc_driver_dpp8_pk_fmac, agc_driver_dx10_clamp, agc_driver_f16_fma_denormal_modes, agc_driver_f16_fma_invalid_nan, agc_driver_float16_fma_rounding, agc_driver_float16_modifiers, agc_driver_float16_native, and 6 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_prepared_exports
VUID-VkPipelineShaderStageCreateInfo-module-parameter (1 test): agc_driver_float16_unused_nan_payloads
VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06849 (1 test): agc_driver_float16_unused_nan_payloads
Skipped (55)
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_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_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_net_ctl_disconnected: 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_device_capability: 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_host_resolution_disabled: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_host_resolution_four_k: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_host_resolution_height_only: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_host_resolution_limit: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_host_resolution_malformed: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
guest_video_out_host_resolution_width_only: 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 curre
Reproduce
git fetch origin 6ceaa3963ca2c9ac5a2e362b6ea6b3f4e7dbc3ad 82fcf46d250e0ec2f436ceffd607dd2ff04c62d7
git checkout 82fcf46d250e0ec2f436ceffd607dd2ff04c62d7 && git merge --no-ff 6ceaa3963ca2c9ac5a2e362b6ea6b3f4e7dbc3ad
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.

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* docs 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