turnip: fix UINT64_MAX size wrapping in tu_GetBufferMemoryRequirements()
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Wed, 3 Feb 2021 08:36:52 +0000 (09:36 +0100)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Wed, 3 Feb 2021 15:01:41 +0000 (16:01 +0100)
tu_GetBufferMemoryRequirements() ends up wrapping the UINT64_MAX size
to 0 when aligning.

Fixes:

   dEQP-VK.api.buffer.basic.size_max_uint64

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Jonathan Marek <jonathan@marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4493>

src/freedreno/vulkan/tu_device.c

index c0921a0..df13ab0 100644 (file)
@@ -1553,7 +1553,7 @@ tu_GetBufferMemoryRequirements2(
    pMemoryRequirements->memoryRequirements = (VkMemoryRequirements) {
       .memoryTypeBits = 1,
       .alignment = 64,
-      .size = align64(buffer->size, 64),
+      .size = MAX2(align64(buffer->size, 64), buffer->size),
    };
 }