From 87620550cc094892458fb3819e26239627eeaa17 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: (cherry picked from commit c0f8465fa88a87b5fa89b2bbd2c87b3c313f11cf) --- .pick_status.json | 2 +- src/panfrost/vulkan/panvk_buffer.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 3b36576b960..83760962189 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -64,7 +64,7 @@ "description": "panvk: Check for maxBufferSize in panvk_CreateBuffer", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "822478ec20c8bca8a3a7e23cffc7ceee7773ff03", "notes": null diff --git a/src/panfrost/vulkan/panvk_buffer.c b/src/panfrost/vulkan/panvk_buffer.c index 1422f9d32b3..5479204bdf9 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) @@ -82,6 +84,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)