aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/vulkan_common/vulkan_wrapper.h
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-28 13:55:29 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-28 13:55:29 -0400
commit2a35b19166ab577674339a514bb7eb1657409443 (patch)
treeee91519215212e5218235f707bfdf45256702dc8 /src/video_core/vulkan_common/vulkan_wrapper.h
parentd7818f67b810e44cd3318e828e892040cc92c7b7 (diff)
Vulkan: unbacked sparse images for textures too large to back
Title 1 samples an 8192x8192, 12-level, 68-layer array (a sparse virtual texture, ~23 GB): vkCreateImage failed and Eden aborted, or VMA put it in system memory and staged a full upload (34 GB private). Images over 2^28 texels are now created sparse-resident with no memory bound; the texture cache neither uploads nor downloads them. Images merely over the VRAM budget are allocated without the budget limit instead of failing.
Diffstat (limited to 'src/video_core/vulkan_common/vulkan_wrapper.h')
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.h b/src/video_core/vulkan_common/vulkan_wrapper.h
index 97d2ba3700..947150648d 100644
--- a/src/video_core/vulkan_common/vulkan_wrapper.h
+++ b/src/video_core/vulkan_common/vulkan_wrapper.h
@@ -689,6 +689,11 @@ public:
allocation{allocation_}, dld{&dld_} {}
Image() = default;
+ /// True for an image created without memory (an unbacked sparse image).
+ bool IsUnbacked() const noexcept {
+ return handle != VK_NULL_HANDLE && allocation == VK_NULL_HANDLE;
+ }
+
Image(const Image&) = delete;
Image& operator=(const Image&) = delete;