From 718c8e8df505ca0bcff923eb986bb2b6ff9cd6cb Mon Sep 17 00:00:00 2001 From: Manuel Pereira Date: Tue, 29 Sep 2026 14:11:52 +0200 Subject: [PATCH] RADV: pin the VideoOut swapchain-size change and record its console results tools/build-radv.sh pins PS5_Mesa 5d9f448: VideoOut registers a framebuffer set per swapchain size, so a 1920x1080 swapchain fills the 3840x2160 output instead of its top-left quarter. HARDWARE_FINDINGS.md and RADV_PHASE.md record what the console showed; the README and the active probe notes mention it. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01MPrDs8zJKK7tKFGsQdvVHQ --- README.md | 2 +- docs/HARDWARE_FINDINGS.md | 21 +++++++++++++++++++++ docs/RADV_PHASE.md | 22 ++++++++++++++++++++++ docs/VULKAN_PROBE_ACTIVE.md | 4 +++- tools/build-radv.sh | 2 +- 5 files changed, 48 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9eca395..c43a97d 100644 --- a/README.md +++ b/README.md @@ -680,7 +680,7 @@ the tree. | [ps5-native-app-boilerplate](https://github.com/blackbearreloaded/ps5-native-app-boilerplate) | BlackBearReloaded | This repository's foundation: the PS5 ELF converter, the FSELF writer, the clean-room `libc.prx`, and the identity and packaging tooling | The base of this repository (GPL-3.0-or-later) | | [ps5-payload-dev/sdk](https://github.com/ps5-payload-dev/sdk) | ps5-payload-dev (John Törnblom) | Public PS5 headers and sysroot, the `prospero-clang18`/`lld` target toolchain, and libc++ headers | Fetched, pinned to v0.42 by SHA-256 | | [PS5_PayloadSDK](https://github.com/mihawk-99/PS5_PayloadSDK) | Mihawk-99, on ps5-payload-dev's SDK | My fork of the payload SDK with the shared platform layer (heap, direct and executable memory, libc gaps) RADV's winsys and the titles build on | Built by `tools/setup-native-dependencies.sh` at a pinned revision | -| [PS5_Mesa](https://github.com/mihawk-99/PS5_Mesa) | Mihawk-99, on Mesa | My Mesa fork: RADV, ACO and NIR with the PS5 winsys and VideoOut WSI | Exported at a pinned revision by `tools/build-radv.sh` from `../PS5_Mesa` | +| [PS5_Mesa](https://github.com/mihawk-99/PS5_Mesa) | Mihawk-99, on Mesa | My Mesa fork: RADV, ACO and NIR with the PS5 winsys and VideoOut WSI (swapchains up to the mode's size, scaled by VideoOut) | Exported at a pinned revision by `tools/build-radv.sh` from `../PS5_Mesa` | | [ps5-payload-dev/pacbrew-repo](https://github.com/ps5-payload-dev/pacbrew-repo) | ps5-payload-dev | Optional prebuilt PS5 ports (SDL2, OpenSSL, …) for applications | Optional, pinned to v0.40.2 | | [opengnm-psbc](https://github.com/PS4-OpenGNM/opengnm-psbc) | PS4-OpenGNM | The Mesa-derived shader compiler (NIR + ACO) the driver links for SPIR-V, and the tree the 0.3.0 SDK patches | Fetched by the SDK's patch over its pinned revision; this project's compiler patches are re-applied on top (`tooling/psbc/`) | | [ps5-vulkan](https://github.com/mpereiraesaa/ps5-vulkan) | mpereiraesaa | A second native PS5 Vulkan implementation: its per-format console evidence and its reporting inventory are cross-checks for this project's audit | Reference; read, not fetched or linked | diff --git a/docs/HARDWARE_FINDINGS.md b/docs/HARDWARE_FINDINGS.md index 7b23636..226bdd9 100644 --- a/docs/HARDWARE_FINDINGS.md +++ b/docs/HARDWARE_FINDINGS.md @@ -3731,6 +3731,9 @@ device as host memory and laid out by RADV as 64 KiB R_X tiles without DCC or pipe and bank swizzle. Each present waits for its frame on a thread and flips with sceVideoOutSubmitFlip(handle, index, 1, argument). +(Since 2026-09-29 a set of framebuffers is registered per swapchain size; +see "VideoOut scales a smaller framebuffer set to the output" below.) + - 60 frames cleared and presented through three images; the last 50 took 0.834 s, 50 periods of the 59.94 Hz mode: the flips gate the presents. - The last frame read back its first and last pixels as cleared. @@ -3769,3 +3772,21 @@ Measured from RADV's shader cache in vkQuake, from time stamps around each call: group 0, yet the title opens for writing a file of mode 0644 it made earlier: the mode bits do not predict what a title may do. - `/data`, where FTP sees the title's folder, does not exist for the title. + +## 2026-09-29 — VideoOut scales a smaller framebuffer set to the output (RADV) + +Mesa's VideoOut backend (PS5_Mesa 5115a1d) registers one set of five +framebuffers per swapchain size, as set *i* at buffer indices 5*i* onwards, +each with sceVideoOutSetBufferAttribute2 at the swapchain's width and height +(tiling 0, B8G8R8A8 SDR) and sized in whole 128x128-pixel 64 KiB tiles +(1920x1080: 15x9 tiles). On FW 12.02 with the 3840x2160 59.94 Hz mode: + +- A 1920x1080 set fills the whole output. DXVK 2.6.2's D3D11 and D3D9 + four-quadrant controls, through Wine (Prospero Win), showed full-screen + quadrants on the TV and in a Remote Play capture; with only the 4K set + (before) the same 1080p image sat in the top-left quarter. +- A second set in one process registers: one D3D11 swapchain presented three + 1920x1080 frames, was resized to 3840x2160 (set 1, indices 5 to 9) and + presented three more; all correct on the TV. +- Other sizes, and more than two sets in one process, were not measured. + diff --git a/docs/RADV_PHASE.md b/docs/RADV_PHASE.md index ef1e323..967dff9 100644 --- a/docs/RADV_PHASE.md +++ b/docs/RADV_PHASE.md @@ -937,3 +937,25 @@ The quality warnings are four families: Next, before any further full run: the targeted rerun of these 61 cases, and the not-supported features, each either implemented for real or confirmed as a genuine absence of the hardware or the platform. + +## 2026-09-29 — swapchains smaller than the mode + +Prospero Win (Wine WoW64 with DXVK 2.6.2) runs its games at a 1920x1080 +desktop. The VideoOut swapchain only took 3840x2160, so Wine created the +host swapchain at 4K and the 1080p image showed in the top-left quarter. +The backend now registers a framebuffer set per swapchain size and reports +any size from 1x1 to the mode's, with `VK_PRESENT_SCALING_STRETCH` +(PS5_Mesa 5115a1d; HARDWARE_FINDINGS.md, same date). `tools/build-radv.sh` +pins 5d9f448 (that change and a README note). + +Console, FW 12.02, through Prospero Win with the release archive linked as +a title `libvulkan.prx`: + +| Check | Result | +| --- | --- | +| DXVK 2.6.2 pixel controls, D3D8/9/10/11, x64 and x86 | 8/8 pass (on cedb774; the WSI change does not touch them) | +| DXVK 2.6.2 real-draw controls, D3D8/9/10/11, x64 and x86 | 8/8 pass on cedb774; D3D11 x64 and D3D9 x86 again on the new code | +| 1920x1080 D3D11 and D3D9 four-quadrant scanout controls | pass, full screen on the TV and in Remote Play | +| 3840x2160 D3D11 control, and a 1080p to 4K resize in one swapchain | pass | +| x64 Vulkan probe, x86 placed-map probe | pass | + diff --git a/docs/VULKAN_PROBE_ACTIVE.md b/docs/VULKAN_PROBE_ACTIVE.md index ee43c98..753b081 100644 --- a/docs/VULKAN_PROBE_ACTIVE.md +++ b/docs/VULKAN_PROBE_ACTIVE.md @@ -17,7 +17,9 @@ record, mine (I closed the CTS title mid-case to use the console; RADV_PHASE.md, 2026-09-29). Next: the targeted rerun of those 61 cases, then the not-supported features, before any further full run. The Mesa fork's work is all on its `main` branch. vkQuake and PS5 RetroArch (v0.5.0-alpha.5) ship on RADV's release archive -(cedb774), with the on-disk shader cache in its exclusive mode; ps5vk is +(cedb774), with the on-disk shader cache in its exclusive mode (the pin has +since moved to 5d9f448, whose VideoOut swapchain also takes sizes below +3840x2160: RADV_PHASE.md, 2026-09-29); ps5vk is their `PS5_VULKAN_DRIVER=ps5vk` build option. Open: concurrency between queues (backlog), and Dolphin's first start of a game with an empty shader cache (83% and 92% for its first two 10 s windows, ps5vk 86% and 99%). diff --git a/tools/build-radv.sh b/tools/build-radv.sh index 13d1ded..b7da820 100644 --- a/tools/build-radv.sh +++ b/tools/build-radv.sh @@ -26,7 +26,7 @@ set -euo pipefail root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd) mesa_fork="${PS5_MESA_FORK:-$root/../PS5_Mesa}" -mesa_revision=cedb774b27d089fa81f46add28d0a8c13ff0f7d2 +mesa_revision=5d9f448ae6cb063ce5f12457abaab1505b9906c2 variant=${1:-debug} sdk="$root/.deps/native/ps5-payload-sdk" source_tree="$root/.deps/work/radv-src"