radv: fix VRS limit when attachmentFragmentShadingRate is disabled

Can be reproduced on GFX10.3 with RADV_DEBUG=nohiz.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19374>
This commit is contained in:
Samuel Pitoiset 2022-10-28 15:10:07 +02:00 committed by Marge Bot
parent e97edac66d
commit d172fc1fca

View file

@ -386,6 +386,13 @@ radv_perf_query_supported(const struct radv_physical_device *pdev)
return pdev->rad_info.gfx_level == GFX10_3 && !radv_thread_trace_enabled();
}
static bool
radv_vrs_attachment_enabled(const struct radv_physical_device *pdevice)
{
return !(pdevice->instance->debug_flags & RADV_DEBUG_NO_HIZ) &&
pdevice->rad_info.gfx_level < GFX11; /* TODO: VRS no longer uses HTILE. */
}
static bool
radv_taskmesh_enabled(const struct radv_physical_device *pdevice)
{
@ -1619,9 +1626,7 @@ radv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
(VkPhysicalDeviceFragmentShadingRateFeaturesKHR *)ext;
features->pipelineFragmentShadingRate = true;
features->primitiveFragmentShadingRate = true;
features->attachmentFragmentShadingRate =
!(pdevice->instance->debug_flags & RADV_DEBUG_NO_HIZ) &&
pdevice->rad_info.gfx_level < GFX11; /* TODO: VRS no longer uses HTILE. */
features->attachmentFragmentShadingRate = radv_vrs_attachment_enabled(pdevice);
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: {
@ -2472,8 +2477,13 @@ radv_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR: {
VkPhysicalDeviceFragmentShadingRatePropertiesKHR *props =
(VkPhysicalDeviceFragmentShadingRatePropertiesKHR *)ext;
props->minFragmentShadingRateAttachmentTexelSize = (VkExtent2D){8, 8};
props->maxFragmentShadingRateAttachmentTexelSize = (VkExtent2D){8, 8};
if (radv_vrs_attachment_enabled(pdevice)) {
props->minFragmentShadingRateAttachmentTexelSize = (VkExtent2D){8, 8};
props->maxFragmentShadingRateAttachmentTexelSize = (VkExtent2D){8, 8};
} else {
props->minFragmentShadingRateAttachmentTexelSize = (VkExtent2D){0, 0};
props->maxFragmentShadingRateAttachmentTexelSize = (VkExtent2D){0, 0};
}
props->maxFragmentShadingRateAttachmentTexelSizeAspectRatio = 1;
props->primitiveFragmentShadingRateWithMultipleViewports = true;
props->layeredShadingRateAttachments = false; /* TODO */