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)