From 9518b677f122607e1e8bc4fb0bfcd891be0cf39c Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 27 Aug 2020 12:44:54 +0200 Subject: [PATCH] v3dv: fix color clear pipeline destruction for 32-bit architectures Command buffer object destruction callbacks take 64-bit object handles, but we defined the color clear pipeline callback to take a 32-bit argument. Should fix recent crash regressions with some CTS tests on Rpi4. Part-of: --- src/broadcom/vulkan/v3dv_meta_clear.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_meta_clear.c b/src/broadcom/vulkan/v3dv_meta_clear.c index ebd1dc42010..308a426f5ab 100644 --- a/src/broadcom/vulkan/v3dv_meta_clear.c +++ b/src/broadcom/vulkan/v3dv_meta_clear.c @@ -30,9 +30,11 @@ static void destroy_color_clear_pipeline(VkDevice _device, - struct v3dv_meta_color_clear_pipeline *p, + uint64_t pipeline, VkAllocationCallbacks *alloc) { + struct v3dv_meta_color_clear_pipeline *p = + (struct v3dv_meta_color_clear_pipeline *) (uintptr_t) pipeline; v3dv_DestroyPipeline(_device, p->pipeline, alloc); if (p->cached) v3dv_DestroyRenderPass(_device, p->pass, alloc); @@ -65,7 +67,7 @@ v3dv_meta_clear_finish(struct v3dv_device *device) hash_table_foreach(device->meta.color_clear.cache, entry) { struct v3dv_meta_color_clear_pipeline *item = entry->data; - destroy_color_clear_pipeline(_device, item, &device->alloc); + destroy_color_clear_pipeline(_device, (uintptr_t)item, &device->alloc); } _mesa_hash_table_destroy(device->meta.color_clear.cache, NULL);