Module: Mesa
Branch: staging/23.1
Commit: 258b472640d69321b702dfc1b1537754399cd2d0
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=258b472640d69321b702dfc1b1537754399cd2d0

Author: Mike Blumenkrantz <[email protected]>
Date:   Thu Apr 13 13:56:55 2023 -0400

zink: restore BAR allocation failure demotion

this restores the fallback used when BAR allocation fails due to oom
by re-selecting memoryTypeIndex after the heap demotion

Fixes: f6d3a5755f6 ("zink: zink_heap isn't 1-to-1 with memoryTypeIndex")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22567>

---

 src/gallium/drivers/zink/zink_resource.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_resource.c 
b/src/gallium/drivers/zink/zink_resource.c
index 1a7d238370d..19fb67b4d21 100644
--- a/src/gallium/drivers/zink/zink_resource.c
+++ b/src/gallium/drivers/zink/zink_resource.c
@@ -1075,10 +1075,10 @@ resource_object_create(struct zink_screen *screen, 
const struct pipe_resource *t
       }
       assert(zink_mem_type_idx_from_bits(screen, heap, reqs.memoryTypeBits) != 
UINT32_MAX);
    }
-   mai.memoryTypeIndex = zink_mem_type_idx_from_bits(screen, heap, 
reqs.memoryTypeBits);
-   assert(reqs.memoryTypeBits & BITFIELD_BIT(mai.memoryTypeIndex));
 
 retry:
+   mai.memoryTypeIndex = zink_mem_type_idx_from_bits(screen, heap, 
reqs.memoryTypeBits);
+   assert(reqs.memoryTypeBits & BITFIELD_BIT(mai.memoryTypeIndex));
    obj->bo = zink_bo(zink_bo_create(screen, reqs.size, alignment, heap, 
mai.pNext ? ZINK_ALLOC_NO_SUBALLOC : 0, mai.memoryTypeIndex, mai.pNext));
    if (!obj->bo) {
       if (heap == ZINK_HEAP_DEVICE_LOCAL_VISIBLE) {

Reply via email to