nvk: Advertise VK_EXT_robustness2

Closes: https://gitlab.freedesktop.org/nouveau/mesa/-/issues/39

Signed-off-by: Rebecca Mckeever <rebecca.mckeever@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
Rebecca Mckeever 2023-01-23 11:59:18 -08:00 committed by Marge Bot
parent ea06f9a893
commit c9eac89da8
2 changed files with 20 additions and 0 deletions

View file

@ -93,6 +93,8 @@ nvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
.shaderInputAttachmentArrayDynamicIndexing = true,
.shaderUniformTexelBufferArrayDynamicIndexing = true,
.shaderStorageTexelBufferArrayDynamicIndexing = true,
.descriptorBindingUniformTexelBufferUpdateAfterBind = true,
.descriptorBindingStorageTexelBufferUpdateAfterBind = true,
.imagelessFramebuffer = true,
.uniformBufferStandardLayout = true,
.separateDepthStencilLayouts = true,
@ -107,6 +109,7 @@ nvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
/* Vulkan 1.3 features */
.robustImageAccess = true,
.inlineUniformBlock = true,
.descriptorBindingInlineUniformBlockUpdateAfterBind = true,
.privateData = true,
.dynamicRendering = true,
};
@ -225,6 +228,13 @@ nvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
f->transformFeedbackPreservesProvokingVertex = true;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: {
VkPhysicalDeviceRobustness2FeaturesEXT *f = (void *)ext;
f->robustBufferAccess2 = true;
f->robustImageAccess2 = true;
f->nullDescriptor = true;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *f = (void *)ext;
f->vertexAttributeInstanceRateDivisor = true;
@ -384,6 +394,7 @@ nvk_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
.subminor = 0,
.patch = 0,
},
.robustBufferAccessUpdateAfterBind = true,
};
snprintf(core_1_2.driverName, VK_MAX_DRIVER_NAME_SIZE, "NVK");
@ -437,6 +448,13 @@ nvk_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
p->maxVertexAttribDivisor = UINT32_MAX;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: {
VkPhysicalDeviceRobustness2PropertiesEXT *p = (void *)ext;
p->robustStorageBufferAccessSizeAlignment =
NVK_SSBO_BOUNDS_CHECK_ALIGNMENT;
p->robustUniformBufferAccessSizeAlignment = NVK_MIN_UBO_ALIGNMENT;
break;
}
/* More property structs */
default:
break;
@ -502,6 +520,7 @@ nvk_get_device_extensions(const struct nvk_physical_device *pdev,
.EXT_pci_bus_info = true,
.EXT_private_data = true,
.EXT_provoking_vertex = true,
.EXT_robustness2 = true,
.EXT_sample_locations = pdev->info.cls_eng3d >= MAXWELL_B,
.EXT_separate_stencil_usage = true,
.EXT_vertex_attribute_divisor = true,

View file

@ -28,6 +28,7 @@
#define NVK_MAX_DESCRIPTOR_SET_SIZE (1u << 30)
#define NVK_PUSH_DESCRIPTOR_SET_SIZE \
(NVK_MAX_PUSH_DESCRIPTORS * NVK_MAX_DESCRIPTOR_SIZE)
#define NVK_SSBO_BOUNDS_CHECK_ALIGNMENT 4
struct nvk_addr_range {
uint64_t addr;