tu: Implement VK_KHR_maintenance7

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33780>
This commit is contained in:
Connor Abbott 2025-02-18 13:13:02 -05:00 committed by Marge Bot
parent 8b39b75308
commit 3800f4c199
2 changed files with 27 additions and 1 deletions

View file

@ -550,7 +550,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_get_display_properties2 DONE (anv, nvk, pvr, radv, tu, v3dv, vn)
VK_KHR_get_surface_capabilities2 DONE (anv, lvp, nvk, pvr, radv, tu, v3dv, vn)
VK_KHR_incremental_present DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_KHR_maintenance7 DONE (anv, lvp, nvk, radv)
VK_KHR_maintenance7 DONE (anv, lvp, nvk, radv, tu)
VK_KHR_performance_query DONE (anv, radv/gfx10.3+, tu, v3dv)
VK_KHR_pipeline_binary DONE (radv)
VK_KHR_pipeline_executable_properties DONE (anv, nvk, panvk, hasvk, radv, tu, v3dv)

View file

@ -196,6 +196,7 @@ get_device_extensions(const struct tu_physical_device *device,
.KHR_maintenance4 = true,
.KHR_maintenance5 = true,
.KHR_maintenance6 = true,
.KHR_maintenance7 = true,
.KHR_map_memory2 = true,
.KHR_multiview = TU_DEBUG(NOCONFORM) ? true : device->info->a6xx.has_hw_multiview,
.KHR_performance_query = TU_DEBUG(PERFC) || TU_DEBUG(PERFCRAW),
@ -516,6 +517,9 @@ tu_get_features(struct tu_physical_device *pdevice,
/* VK_KHR_maintenance6 */
features->maintenance6 = true;
/* VK_KHR_maintenance7 */
features->maintenance7 = true;
/* VK_KHR_performance_query */
features->performanceCounterQueryPools = true;
features->performanceCounterMultipleQueryPools = false;
@ -1278,6 +1282,28 @@ tu_get_properties(struct tu_physical_device *pdevice,
props->maxCombinedImageSamplerDescriptorCount = 1;
props->fragmentShadingRateClampCombinerInputs = true;
/* VK_KHR_maintenance7 */
props->robustFragmentShadingRateAttachmentAccess = true;
/* For D24S8, storing depth or stencil forces a load and store of the other
* component.
*/
props->separateDepthStencilAttachmentAccess = false;
/* Uniform and storage buffers are different sizes, so we can't allow the
* user to freely mix them and count both against a shared limit. We have
* to force the user to use at most MAX_DYNAMIC_UNIFORM_BUFFERS uniform
* buffers and MAX_DYNAMIC_STORAGE_BUFFERS storage buffers and set the
* combined limit to the sum (which makes it redundant since the user will
* always hit the other limits first).
*/
props->maxDescriptorSetTotalUniformBuffersDynamic = MAX_DYNAMIC_UNIFORM_BUFFERS;
props->maxDescriptorSetTotalStorageBuffersDynamic = MAX_DYNAMIC_STORAGE_BUFFERS;
props->maxDescriptorSetTotalBuffersDynamic =
MAX_DYNAMIC_UNIFORM_BUFFERS + MAX_DYNAMIC_STORAGE_BUFFERS;
props->maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic = MAX_DYNAMIC_UNIFORM_BUFFERS;
props->maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic = MAX_DYNAMIC_STORAGE_BUFFERS;
props->maxDescriptorSetUpdateAfterBindTotalBuffersDynamic =
MAX_DYNAMIC_UNIFORM_BUFFERS + MAX_DYNAMIC_STORAGE_BUFFERS;
/* VK_EXT_host_image_copy */
/* We don't use the layouts ATM so just report all layouts from