diff options
| author | Sssnowyyy <78863999+Sssnowyyy@users.noreply.github.com> | 2026-11-02 11:43:07 -0500 |
|---|---|---|
| committer | Sssnowyyy <78863999+Sssnowyyy@users.noreply.github.com> | 2026-11-02 14:53:47 -0500 |
| commit | 46d1554186cdfd2255cc3745e3e2cfe9130c5a84 (patch) | |
| tree | d59d7f7cfd56eb8076eb0f394e5b300969615195 /src/common/host_memory.cpp | |
| parent | 427b9abfdc4898f1aeef978ee6edbdeb336db280 (diff) | |
vulkan: back a sparse tiled image whole when its tiles can't be set up
In the aliased mode (AMD) a SparseTiles image is created unbound, and only
InitSparseTiles binds every block to the shared zeroed one. When it fails
(an unusual block shape, no memory for the zeroed block or the mip tail, a
failed bind), the constructor went on to the next branch and flagged the
image UnwrittenSparse with nothing bound. AMD's drivers can't sample such
an image, and it is sampled before its first write replaces it, which is
the hang a855e8373f avoided for large sparse images.
Create the image again as an ordinary backed image in that case, as before
sparse tiles, and drop the Unbacked flag. The other modes keep falling
back to UnwrittenSparse, since their drivers sample unbound memory.
Follow-up to 130c255ed9 (with a855e8373f and 1c794af564).
Assisted-by: Claude Sonnet 5.5 (implementation and commit message)
Diffstat (limited to 'src/common/host_memory.cpp')
0 files changed, 0 insertions, 0 deletions
