MSAA
Matching 2×, 4× and 8× color and depth sample counts stay on the host image through a later resolve. Asterix uses that path for MSAA depth and stencil, which removed a large accidental readback.
Repository notes through October 10, 2026
Sample counts on the host image
A PlayStation 5 render target can be stored with two, four or eight samples. PS5PCEM keeps a color target and a depth target on the Vulkan image when their sample counts match, and resolves later. The guest sample count is part of the resource snapshot, next to the swizzle mode and the metadata pointers.
The Oberon 16-pipe, 8-packer RB+ address equations include the array slice and the 2×, 4× and 8× sample bits for both color and depth. GPU compute detile does not consume those equations yet. RB+ and MSAA surfaces fall back to the CPU detile. The samples are still correct. The fallback is a cost, and it is why MSAA is not described as fully GPU-resident.
Depth and stencil in Asterix
Asterix & Obelix: Slap Them All! draws the opening forest with MSAA depth and stencil. A depth-only pass that ignored the sample count was reading the attachment back as a diagnostic. Matching MSAA depth and stencil attachments stay on the persistent depth path, and the stencil compare and update the guest requested are applied.
MSAA color attachments no longer request storage-image usage on this backend. On the RTX 3070 Ti at 1080p output, a stationary 30-second UI-counter sample of that opening forest rose from a median of 46.45 FPS to 162.20 FPS. The figure is that view. It is not a minimum across later levels. Movement, jumping and the first Roman encounter were rechecked on the development build.
What resolve does not include
A later resolve of a matching sample count is implemented. A compressed FMASK surface tied to CMASK is a different mechanism and stays outside this path. An unsupported MSAA import keeps the safe first-use clear instead of sampling uninitialised compressed data.
All 233 Vulkan tests and the native 2× and 4× depth and stencil probes passed with the Asterix fix. The signed runner includes it. The change is newer than the 0.3.4 release notes.
What is implemented
- Host images for matching 2×, 4× and 8× color and depth sample counts, with a later resolve.
- MSAA depth and stencil attachments, including stencil compare and update.
- CPU detile for MSAA and RB+ addressing, using the Oberon sample-bit equations.
- The Asterix opening-forest fix, measured at 162.20 FPS median in that stationary view.
What is still missing
- GPU compute detile does not cover MSAA or RB+. Those uploads use the CPU.
- FMASK linked to CMASK is not resolved as compressed metadata.
- The Asterix number is one view on one GPU, not a frame-rate promise for the game.
Related mechanisms
What these pages are