diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-28 15:37:34 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-28 15:37:34 -0400 |
| commit | 934ad3b97c12e1d40cf4e1f6094c756873b6af82 (patch) | |
| tree | 5e867981c552d4b74898db22a90230dbd4fda546 /src/core/hle/kernel/physical_core.cpp | |
| parent | 8393e2912616ce475619900be8cb29e551ff2997 (diff) | |
Keep huge ASTC arrays from a lower mip on the host (title 1 terrain)
Title 1's terrain virtual textures are 8192x8192x68 ASTC 8x8 sRGB arrays with
12 levels: 1.5 GB in guest memory (fully backed) but 23 GB each as the RGBA8
Eden decodes ASTC to, so they were created unbacked and the near terrain
sampled black. A GPU-decoded ASTC 2D array over 1 GiB decoded now keeps only
the levels from the first one that fits in 512 MiB (here 3: 1024x1024, 380
MiB); host mip 0 is that guest level. Uploads read each layer's tail of the
mip chain into a compact buffer and decode only those levels, views shift
their level range, and these images are never downloaded. Normalized
coordinates and derivative LOD address the smaller image correctly; the
nearest terrain is lower resolution than on the console.
Also logs how unbacked images are used (views, render targets, blits, DMA).
Diffstat (limited to 'src/core/hle/kernel/physical_core.cpp')
0 files changed, 0 insertions, 0 deletions
