Mesa (main): zink: store and reuse memory heap flags for buffer placement
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 17 01:31:19 UTC 2022
Module: Mesa
Branch: main
Commit: d63e04e583a9fb90154954f7c304f7c8c5773b66
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d63e04e583a9fb90154954f7c304f7c8c5773b66
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Thu Jun 16 11:06:53 2022 -0400
zink: store and reuse memory heap flags for buffer placement
the flags in vk_domain_from_heap() are the MINIMUM required flags for
the heap, but there may be other flags present, so ensure those are picked
up as expected
cc: mesa-stable
Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17093>
---
src/gallium/drivers/zink/zink_bo.c | 2 +-
src/gallium/drivers/zink/zink_screen.c | 1 +
src/gallium/drivers/zink/zink_screen.h | 1 +
3 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/zink/zink_bo.c b/src/gallium/drivers/zink/zink_bo.c
index 74dfe28d5cf..5c70480f84f 100644
--- a/src/gallium/drivers/zink/zink_bo.c
+++ b/src/gallium/drivers/zink/zink_bo.c
@@ -310,7 +310,7 @@ demote:
bo->base.alignment_log2 = util_logbase2(alignment);
bo->base.size = mai.allocationSize;
bo->base.vtbl = &bo_vtbl;
- bo->base.placement = vk_domain_from_heap(heap);
+ bo->base.placement = screen->heap_flags[heap];
bo->base.usage = flags;
bo->unique_id = p_atomic_inc_return(&screen->pb.next_bo_unique_id);
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index 53a1ba65db0..21a47629c67 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -2312,6 +2312,7 @@ zink_internal_create_screen(const struct pipe_screen_config *config)
else
screen->heap_map[i] = screen->heap_map[ZINK_HEAP_DEVICE_LOCAL];
}
+ screen->heap_flags[i] = screen->info.mem_props.memoryTypes[screen->heap_map[i]].propertyFlags;
}
{
unsigned vis_vram = screen->heap_map[ZINK_HEAP_DEVICE_LOCAL_VISIBLE];
diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h
index a40004e4200..e5f7866da4e 100644
--- a/src/gallium/drivers/zink/zink_screen.h
+++ b/src/gallium/drivers/zink/zink_screen.h
@@ -131,6 +131,7 @@ struct zink_screen {
uint32_t next_bo_unique_id;
} pb;
uint8_t heap_map[VK_MAX_MEMORY_TYPES];
+ VkMemoryPropertyFlags heap_flags[VK_MAX_MEMORY_TYPES];
bool resizable_bar;
uint64_t total_video_mem;
More information about the mesa-commit
mailing list