From f9e14084d65e58ad446d008bcb8c393759fb3fc3 Mon Sep 17 00:00:00 2001 From: nmzik Date: Fri, 23 Oct 2026 07:09:41 +0200 Subject: [PATCH] graphics: set the heap flag in ImageHeapResource --- src/graphics/host_gpu/renderer/pipeline/imageHeap.cpp | 6 +++--- .../shader/recompiler/ir/passes/ResourceMaterialization.cpp | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/graphics/host_gpu/renderer/pipeline/imageHeap.cpp b/src/graphics/host_gpu/renderer/pipeline/imageHeap.cpp index 926691df0..ae743f537 100644 --- a/src/graphics/host_gpu/renderer/pipeline/imageHeap.cpp +++ b/src/graphics/host_gpu/renderer/pipeline/imageHeap.cpp @@ -428,9 +428,9 @@ void ImageHeap::Rebind(RenderExecutor& executor) { } for (const auto index: view->pending) { if (m_elements[index].refs == 0u) continue; - auto resource = IR::ImageHeapResource(view->profile, m_elements[index].kind); - resource.heap = true; // Resolves only mapped textures. - auto binding = executor.ResolveTexture(resource, m_elements[index].value); + auto binding = executor.ResolveTexture( + IR::ImageHeapResource(view->profile, m_elements[index].kind), + m_elements[index].value); if (binding.image_id) { auto& image = textures.GetImage(binding.image_id); image.heap_refs.fetch_add(1u, std::memory_order_relaxed); diff --git a/src/graphics/shader/recompiler/ir/passes/ResourceMaterialization.cpp b/src/graphics/shader/recompiler/ir/passes/ResourceMaterialization.cpp index bdd20b8c1..a647b2fde 100644 --- a/src/graphics/shader/recompiler/ir/passes/ResourceMaterialization.cpp +++ b/src/graphics/shader/recompiler/ir/passes/ResourceMaterialization.cpp @@ -1800,6 +1800,7 @@ uint32_t ImageHeapKind(const ImageResource& root, DescriptorValue& value) { ImageResource ImageHeapResource(const ImageResource& root, uint32_t kind) { ImageResource resource; resource.resource_class = ImageResourceClass::Sampled; + resource.heap = true; resource.dimension = root.dimension; resource.unfiltered_access_only = root.unfiltered_access_only; resource.depth_compare = root.depth_compare;