From 65f12fde44075276b640925d4f4301fcf00fc955 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Wed, 11 Oct 2023 02:55:11 -0500 Subject: [PATCH] nvk: Improve address space and buffer size limits Part-of: --- src/nouveau/vulkan/nvk_buffer.c | 3 +++ src/nouveau/vulkan/nvk_physical_device.c | 4 ++-- src/nouveau/vulkan/nvk_private.h | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/nouveau/vulkan/nvk_buffer.c b/src/nouveau/vulkan/nvk_buffer.c index 6f1c405..bfe599e 100644 --- a/src/nouveau/vulkan/nvk_buffer.c +++ b/src/nouveau/vulkan/nvk_buffer.c @@ -41,6 +41,9 @@ nvk_CreateBuffer(VkDevice device, VK_FROM_HANDLE(nvk_device, dev, device); struct nvk_buffer *buffer; + if (pCreateInfo->size > NVK_MAX_BUFFER_SIZE) + return vk_error(dev, VK_ERROR_OUT_OF_DEVICE_MEMORY); + buffer = vk_buffer_create(&dev->vk, pCreateInfo, pAllocator, sizeof(*buffer)); if (!buffer) diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 72dbba0..e7f3909 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -396,7 +396,7 @@ nvk_get_device_properties(const struct nvk_instance *instance, .maxMemoryAllocationCount = 4096, .maxSamplerAllocationCount = 4000, .bufferImageGranularity = info->chipset >= 0x120 ? 0x400 : 0x10000, - .sparseAddressSpaceSize = UINT32_MAX, + .sparseAddressSpaceSize = NVK_SPARSE_ADDR_SPACE_SIZE, .maxBoundDescriptorSets = NVK_MAX_SETS, .maxPerStageDescriptorSamplers = NVK_MAX_DESCRIPTORS, .maxPerStageDescriptorUniformBuffers = NVK_MAX_DESCRIPTORS, @@ -556,7 +556,7 @@ nvk_get_device_properties(const struct nvk_instance *instance, .maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = 32, .maxDescriptorSetInlineUniformBlocks = 6 * 32, .maxDescriptorSetUpdateAfterBindInlineUniformBlocks = 6 * 32, - .maxBufferSize = UINT32_MAX, + .maxBufferSize = NVK_MAX_BUFFER_SIZE, /* VK_KHR_push_descriptor */ .maxPushDescriptors = NVK_MAX_PUSH_DESCRIPTORS, diff --git a/src/nouveau/vulkan/nvk_private.h b/src/nouveau/vulkan/nvk_private.h index df657a2..a10da4f 100644 --- a/src/nouveau/vulkan/nvk_private.h +++ b/src/nouveau/vulkan/nvk_private.h @@ -26,6 +26,9 @@ #define NVK_SSBO_BOUNDS_CHECK_ALIGNMENT 4 #define NVK_MAX_MULTIVIEW_VIEW_COUNT 32 +#define NVK_SPARSE_ADDR_SPACE_SIZE (1ull << 39) +#define NVK_MAX_BUFFER_SIZE (1ull << 31) + struct nvk_addr_range { uint64_t addr; uint64_t range; -- 2.7.4