From a2e986b6d94c1ca7c5659d716aeb0b6edaa4d3e2 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 23 Jul 2021 00:30:04 -0500 Subject: [PATCH] anv/image: Add some asserts when binding swapchain images Reviewed-by: Lionel Landwerlin Acked-by: Erik Faye-Lund Part-of: --- src/intel/vulkan/anv_image.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index c67d1111122..7d760e5ff49 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -835,6 +835,16 @@ memory_range_is_aligned(struct anv_image_memory_range memory_range) { return anv_is_aligned(memory_range.offset, memory_range.alignment); } + +static bool MUST_CHECK +memory_ranges_equal(struct anv_image_memory_range a, + struct anv_image_memory_range b) +{ + return a.binding == b.binding && + a.offset == b.offset && + a.size == b.size && + a.alignment == b.alignment; +} #endif struct check_memory_range_params { @@ -1821,8 +1831,11 @@ VkResult anv_BindImageMemory2( assert(image->vk.aspects == swapchain_image->vk.aspects); assert(mem == NULL); - for (int j = 0; j < ARRAY_SIZE(image->bindings); ++j) + for (int j = 0; j < ARRAY_SIZE(image->bindings); ++j) { + assert(memory_ranges_equal(image->bindings[j].memory_range, + swapchain_image->bindings[j].memory_range)); image->bindings[j].address = swapchain_image->bindings[j].address; + } /* We must bump the private binding's bo's refcount because, unlike the other * bindings, its lifetime is not application-managed.