From c0f8465fa88a87b5fa89b2bbd2c87b3c313f11cf Mon Sep 17 00:00:00 2001 From: Mary Guillemard Date: Tue, 18 Jun 2024 12:21:36 +0200 Subject: [PATCH] panvk: Check for maxBufferSize in panvk_CreateBuffer This fix failure on "dEQP-VK.api.buffer.basic.size_max_uint64". Signed-off-by: Mary Guillemard Fixes: 822478ec20c ("panvk: Move the VkBuffer logic to its own source file") Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/vulkan/panvk_buffer.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/panfrost/vulkan/panvk_buffer.c b/src/panfrost/vulkan/panvk_buffer.c index 556d8b97f78..093ad1f9521 100644 --- a/src/panfrost/vulkan/panvk_buffer.c +++ b/src/panfrost/vulkan/panvk_buffer.c @@ -10,6 +10,8 @@ #include "vk_log.h" +#define PANVK_MAX_BUFFER_SIZE (1 << 30) + VKAPI_ATTR VkDeviceAddress VKAPI_CALL panvk_GetBufferDeviceAddress(VkDevice _device, const VkBufferDeviceAddressInfo *pInfo) @@ -89,6 +91,9 @@ panvk_CreateBuffer(VkDevice _device, const VkBufferCreateInfo *pCreateInfo, assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO); + if (pCreateInfo->size > PANVK_MAX_BUFFER_SIZE) + return vk_error(device, VK_ERROR_OUT_OF_DEVICE_MEMORY); + buffer = vk_buffer_create(&device->vk, pCreateInfo, pAllocator, sizeof(*buffer)); if (buffer == NULL)