nvk: Improve address space and buffer size limits

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25653>
This commit is contained in:
Faith Ekstrand
2023-10-11 02:55:11 -05:00
parent b0d0c2d765
commit 65f12fde44
3 changed files with 8 additions and 2 deletions

View File

@@ -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)

View File

@@ -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,

View File

@@ -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;