Skip to content

feat(libSceVideoOut): answer the mode helpers as firmware 13.42 does - #14954

Merged
oneandonlydean merged 4 commits into
boykopovar:mainfrom
BunnyFl:feat/videoout-fw1342-sysmode
Nov 6, 2026
Merged

oneandonlydean merged 4 commits into
boykopovar:mainfrom
BunnyFl:feat/videoout-fw1342-sysmode

Conversation

@BunnyFl

@BunnyFl BunnyFl commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

What

Five more libSceVideoOut mode helpers threw. They now read or fill the mode structure as firmware 13.42's libSceVideoOut does. They sit next to sceVideoOutSysModeIsVr from #14941 and read the same dword at offset 0x20, so this builds on that PR:

  • sceVideoOutSysInitMode(void* mode) (9cmjhjqa7Sg) fills bytes 0 to 0x1F with 0xFF, then stores 0x20 in the first dword. It writes nothing past 0x20 bytes and leaves EAX unset, so it is declared void.
  • sceVideoOutSysModeIsSystemDefault(const void* mode) (5Y8uUbGMio0): 1 when bit 0 of the dword at 0x20 is clear.
  • sceVideoOutSysModeIsVrNative(const void* mode) (SgA2MtojPto): 1 when bits 2:1 of that dword are 01.
  • sceVideoOutSysModeIsVrLegacy(const void* mode) (zecl8Gox+P0): 1 when bits 1 and 2 are both set.
  • sceVideoOutSysModeIsHdr(const void* mode) (I7-lGGvFgBM): 1 when byte 6 is from 12 to 17. The module computes (uint8_t)(byte - 12) < 6, and the code does the same in std::uint8_t.

sceVideoOutSysModeIsVr now shares the dword read with these. Its behaviour is unchanged.

None of the five checks its pointer, so a null argument faults on the console as it does here. What the fields mean is unknown, and the new debt entry says so.

Source

Firmware 13.42 libSceVideoOut.sprx, sha256 975b229324655a2d2a945c755fc0339e7feecb62863efc28ad3b2d91a95ad215. Each function was read to its return, from disassembly only, not measured on a console. All five are leaves: no calls, no global data.

0x14450 sceVideoOutSysInitMode (9cmjhjqa7Sg)
  vpcmpeqd ymm0, ymm0, ymm0 ; vmovdqu [rdi], ymm0 ; mov dword [rdi], 0x20 ; ret
0x17240 sceVideoOutSysModeIsSystemDefault (5Y8uUbGMio0)
  mov eax, [rdi+0x20] ; not eax ; and eax, 1 ; ret
0x17260 sceVideoOutSysModeIsVrNative (SgA2MtojPto)
  mov ecx, [rdi+0x20] ; xor eax, eax ; and ecx, 6 ; cmp ecx, 2 ; sete al ; ret
0x17270 sceVideoOutSysModeIsVrLegacy (zecl8Gox+P0)
  mov ecx, [rdi+0x20] ; xor eax, eax ; not ecx ; test cl, 6 ; sete al ; ret
0x17280 sceVideoOutSysModeIsHdr (I7-lGGvFgBM)
  movzx ecx, byte [rdi+6] ; xor eax, eax ; add cl, 0xf4 ; cmp cl, 6 ; setb al ; ret

Tested

Windows 11, WinLibs GCC 15.2.0 r7, Release, on #14941's head 072371a (main 93dbd0f):

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(libSceVideoOut): answer seven inventory calls as firmware 13.42 does #14941
  • Fixes: none
  • Unblocks: none
  • GPUs tested: AMD Radeon RX 9070 XT, driver 32.0.32015.7029, Windows 11
  • AI-assisted: yes

🤖 Generated with Claude Code

BunnyFl and others added 3 commits November 2, 2026 03:39
…does

sceVideoOutAddBufferHdrPrivilege, sceVideoOutRazorRecallCallbacks and
sceVideoOutSysUpdateRenderingMode return 0, sceVideoOutCurveSamplePointsCalc_
returns 0x8029001C, sceVideoOutDriverGetLatestEopHandle 0x802900FF and
sceVideoOutSysGetMonitorInfo_ -1, and sceVideoOutSysModeIsVr returns bit 1 of
the dword at offset 0x20 of its argument, as firmware 13.42's libSceVideoOut
does (read to the return, disassembly only, not measured on a console).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ck its pointer

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sceVideoOutSysInitMode, sceVideoOutSysModeIsSystemDefault,
sceVideoOutSysModeIsHdr, sceVideoOutSysModeIsVrLegacy and
sceVideoOutSysModeIsVrNative read or fill the mode structure as
firmware 13.42's libSceVideoOut does.

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

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Progress report (2d6957c → 2b05923)

📈 System libraries: 27.1% (+0.03%, +12 implemented functions)

✅ 12 implemented
Library Name
libSceVideoOut sceVideoOutAddBufferHdrPrivilege
libSceVideoOut sceVideoOutCurveSamplePointsCalc_
libSceVideoOut sceVideoOutDriverGetLatestEopHandle
libSceVideoOut sceVideoOutRazorRecallCallbacks
libSceVideoOut sceVideoOutSysGetMonitorInfo_
libSceVideoOut sceVideoOutSysInitMode
libSceVideoOut sceVideoOutSysModeIsHdr
libSceVideoOut sceVideoOutSysModeIsSystemDefault
libSceVideoOut sceVideoOutSysModeIsVr
libSceVideoOut sceVideoOutSysModeIsVrLegacy
libSceVideoOut sceVideoOutSysModeIsVrNative
libSceVideoOut sceVideoOutSysUpdateRenderingMode
⚪ 6 behaviourally empty (constant return or throw)
Library Name
libSceVideoOut sceVideoOutAddBufferHdrPrivilege
libSceVideoOut sceVideoOutCurveSamplePointsCalc_
libSceVideoOut sceVideoOutDriverGetLatestEopHandle
libSceVideoOut sceVideoOutRazorRecallCallbacks
libSceVideoOut sceVideoOutSysGetMonitorInfo_
libSceVideoOut sceVideoOutSysUpdateRenderingMode

Changed libraries (implemented exports)

Library Before After Change
libSceVideoOut 57/268 (21.27%) 69/268 (25.75%) +4.48%

@github-actions

github-actions Bot commented Nov 2, 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 4040 docs/dev/debt/libSceVideoOut.md
PR 5021 core/libs/prx/libSceVideoOut/CMakeLists.txt
PR 6977 docs/dev/debt/libSceVideoOut.md
PR 9432 docs/dev/debt/libSceVideoOut.md
PR 9673 docs/dev/debt/libSceVideoOut.md
PR 9880 core/libs/prx/libSceVideoOut/CMakeLists.txt
docs/dev/debt/libSceVideoOut.md
PR 9898 docs/dev/debt/libSceVideoOut.md
PR 10112 core/libs/prx/libSceVideoOut/CMakeLists.txt
docs/dev/debt/libSceVideoOut.md
PR 12863 core/libs/prx/libSceVideoOut/CMakeLists.txt
docs/dev/debt/libSceVideoOut.md
PR 12930 core/libs/prx/libSceVideoOut/CMakeLists.txt
docs/dev/debt/libSceVideoOut.md
PR 13994 core/libs/prx/libSceVideoOut/InventoryExports.cpp
core/libs/prx/libSceVideoOut/include/InventoryExports.hpp
docs/dev/debt/libSceVideoOut.md
PR 14212 docs/dev/debt/libSceVideoOut.md

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head 05a1773 merged onto main 93dbd0f · tested 2026-11-02 05:03 UTC · 25 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 ✅ 1,625 passed · 5 failed (0 new, 2 also fail on main, 3 unstable on main) · 7 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 1,637 of 3,165 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 (743 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_pipeline_journal 120.2 s, ⚠️ agc_driver_bda_device 60.9 s, ⚠️ agc_driver_lookup_log_fits_build 36.2 s
Intermittent validation messages (1, seen once in the parallel run, not reproduced when the test was re-run alone 2 times; not counted against this PR)
agc_driver_depth_clear_hle: VUID-vkCmdCopyBuffer-commonparent (6x)
Unstable on main (3, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_depth_clear_hle: failed in 1 of the last 10 main runs
agc_driver_pipeline_journal: failed in 1 of the last 10 main runs
agc_driver_submit_progress: failed in 6 of the last 10 main runs
Failing on main too (2, not counted against this PR)
agc_driver_image_table
guest_mmap_executable
Validation IDs already present on main (5 IDs in 605 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (605 tests): agc_compute_pipeline_replay, agc_driver_address_passes, agc_driver_address_passes_draw_transitions, agc_driver_address_passes_targets_split, agc_driver_alias_copy_label, agc_driver_alpha_to_coverage, agc_driver_array_layer_target, agc_driver_array_layer_target_cpu, and 597 more
VUID-vkCmdCopyImage-srcImage-01548 (13 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_plane_sampling, and 5 more
VUID-vkCmdCopyImage-srcImage-01551 (13 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_plane_sampling, and 5 more
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (2 tests): agc_driver_prepared_exports, agc_driver_srgb8_color_target
VUID-VkShaderModuleCreateInfo-pCode-08737 (1 test): agc_driver_image_sample_derivatives
Skipped (7)
agc_driver_msaa_dcc_compared_import_2: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_4: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_8: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
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
video_out_flip_present: 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
Reproduce
git fetch origin 05a1773f84341706a9d61ab8e4efd4642fef8929 93dbd0f82aea684e95f15f06e7d42c0064af18cf
git checkout 93dbd0f82aea684e95f15f06e7d42c0064af18cf && git merge --no-ff 05a1773f84341706a9d61ab8e4efd4642fef8929
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.

The branch removes twelve rows from the inventory table, the seven of boykopovar#14941 and the five mode helpers, so the table holds 170 of the original 182 rows and the file has 178 throwing bodies, 170 for the table and 8 outside it. The line still carried the 175 left by boykopovar#14941.

Co-authored-by: BunnyFl <166477956+BunnyFl@users.noreply.github.com>
@oneandonlydean

Copy link
Copy Markdown
Collaborator

Hi @BunnyFl, I pushed one small commit on top of yours (2b0592386a): the debt doc count above the table said 175, and the table and the stubs behind it give 170, so the line now says 170. The 13 extra rows on main belong to the separate later-exports entry. Nothing else changed.

@BunnyFl

BunnyFl commented Nov 5, 2026

Copy link
Copy Markdown
Contributor Author

@oneandonlydean thanks for fixing it. You're right: at 2b0592386a the table under docs/dev/debt/libSceVideoOut.md:59 has 170 rows, and 175 was wrong.

AI-assisted: yes (Claude Code)

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ NVIDIA GPU test: passed

PR head 2b05923 merged onto main 080dbd0 · tested 2026-11-05 20:35 UTC · 27 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,499 passed · 2 failed (0 new, 1 also fail on main, 1 unstable on main) · 11 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,512 of 4,077 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 (1077 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_pipeline_journal 120.2 s, ⚠️ agc_driver_bda_device 42.9 s, ⚠️ agc_driver_graphics 32.0 s, ⚠️ agc_driver_graphics_maps_fallback 31.5 s, ⚠️ agc_graphics_profile_draw 31.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 2 of the last 10 main runs
Failing on main too (1, not counted against this PR)
agc_driver_image_table
Validation IDs already present on main (9 IDs in 765 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (765 tests): agc_compute_pipeline_replay, agc_driver_address_draw_space_reuse, agc_driver_address_draw_space_reuse_held, agc_driver_address_draw_space_reuse_off, agc_driver_address_draw_space_reuse_transitions, agc_driver_address_draw_space_reuse_verify, agc_driver_address_passes, agc_driver_address_passes_draw_transitions, and 757 more
VUID-vkCmdCopyImage-srcImage-01548 (15 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_image_copy, agc_driver_depth_plane_partial_store_unimported, and 7 more
VUID-vkCmdCopyImage-srcImage-01551 (15 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_buffer_memory, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store, agc_driver_depth_plane_partial_store_image_copy, agc_driver_depth_plane_partial_store_unimported, and 7 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-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (2 tests): agc_driver_prepared_exports, agc_driver_srgb8_color_target
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 (11)
agc_driver_bda_reads_shadowed_results: 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_msaa_dcc_compared_import_2: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_4: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
agc_driver_msaa_dcc_compared_import_8: skipped, the device reports host imports that keep write protection, so the write-watch probe compares none of them
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_import_settle_initial_dcc: skipped, the device has no deferred settle of host imports: imports under 1 MiB wait for one only on Windows
guest_video_out_output_mode: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
Reproduce
git fetch origin 2b0592386abe6696f458b25e0e8ee27089e3a05c 080dbd08c6f83be5a1768af7d3342d701bf34d21
git checkout 080dbd08c6f83be5a1768af7d3342d701bf34d21 && git merge --no-ff 2b0592386abe6696f458b25e0e8ee27089e3a05c
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.

@TechLevelZero

Copy link
Copy Markdown
Contributor

✅ AMD GPU test: passed

PR head 2b05923 merged onto main 495162f · tested 2026-11-05 20:39 UTC · 19 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,505 passed · 12 failed (0 new, 11 also fail on main, 1 unstable on main) · 19 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,536 of 4,100 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 (1080 tests run on the GPU)
Slow tests (>30 s, GPU tests timed with validation layers) ⚠️ agc_driver_pipeline_journal 120.4 s, ⚠️ agc_driver_graphics_maps_fallback 76.5 s, ⚠️ agc_driver_graphics 74.1 s, ⚠️ agc_graphics_profile_draw 60.1 s, ⚠️ public_headers 57.3 s
Unstable on main (1, these also failed in recent main runs on this machine; not counted against this PR)
agc_driver_two_sample_alpha_to_coverage_sample_mask_export: failed in 6 of the last 10 main runs
Failing on main too (11, not counted against this PR)
agc_driver_alpha_to_coverage_sample_mask_export
agc_driver_guest_memory_lifetime_direct
agc_driver_image_table
agc_driver_job_manager_compute_capacity
agc_driver_native_depth_bda_clear
agc_driver_native_depth_buffer_clear
agc_driver_native_depth_clears
agc_driver_native_multisample_depth
agc_driver_pipeline_journal
agc_driver_submit_progress
agc_graphics_profile_draw
Validation IDs already present on main (4 IDs in 765 tests)
VUID-VkDeviceCreateInfo-pNext-pNext (765 tests): agc_compute_pipeline_replay, agc_driver_address_draw_space_reuse, agc_driver_address_draw_space_reuse_held, agc_driver_address_draw_space_reuse_off, agc_driver_address_draw_space_reuse_transitions, agc_driver_address_draw_space_reuse_verify, agc_driver_address_passes, agc_driver_address_passes_draw_transitions, and 757 more
VUID-vkCmdCopyImage-srcImage-01548 (11 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store_image_copy, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_plane_partially_unmapped_plane, agc_driver_depth_plane_unmapped_plane, and 3 more
VUID-vkCmdCopyImage-srcImage-01551 (11 tests): agc_driver_depth_clear_hle, agc_driver_depth_plane_cpu_write_after_memo, agc_driver_depth_plane_cpu_write_after_page_unwatch, agc_driver_depth_plane_cpu_write_after_partial_unwatch, agc_driver_depth_plane_partial_store_image_copy, agc_driver_depth_plane_partial_store_unimported, agc_driver_depth_plane_partially_unmapped_plane, agc_driver_depth_plane_unmapped_plane, and 3 more
VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605 (2 tests): agc_driver_prepared_exports, agc_driver_srgb8_color_target
Skipped (19)
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_copied_writer_label_order_drain: 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_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_recorded_draw_staging: skipped, the device does not keep host imports write-watched, so the target is never resident
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_vertex_elected_atomic_max: skipped, the device runs vertex programs in subgroups, so they keep their cross-lane reductions
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_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_video_out_host_resolution_width_only: skipped, no display or Vulkan device: SDL_InitSubSystem(VIDEO | GAMECONTROLLER) failed: wayland,x11 not available
Reproduce
git fetch origin 2b0592386abe6696f458b25e0e8ee27089e3a05c 495162fcb3e4a93879c23e117ad0772da47b96cb
git checkout 495162fcb3e4a93879c23e117ad0772da47b96cb && git merge --no-ff 2b0592386abe6696f458b25e0e8ee27089e3a05c
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.

@oneandonlydean
oneandonlydean merged commit e464198 into boykopovar:main Nov 6, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants