radv: advertise VK_EXT_extended_dynamic_state3

Some tricky dynamic states still need to be implemented for full ds3
support with Zink, I will implement them later.

Pass dEQP-VK.pipeline.*extended_dynamic_state* on NAVI21.

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/18882>
This commit is contained in:
Samuel Pitoiset 2022-05-30 15:51:31 +02:00 committed by Marge Bot
parent e48c0fbd8f
commit 59be3b8a8f
3 changed files with 45 additions and 1 deletions

View file

@ -549,7 +549,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_EXT_depth_range_unrestricted DONE (radv, lvp)
VK_EXT_discard_rectangles DONE (radv)
VK_EXT_display_control DONE (anv, radv, tu)
VK_EXT_extended_dynamic_state3 DONE (lvp)
VK_EXT_extended_dynamic_state3 DONE (lvp, radv)
VK_EXT_external_memory_dma_buf DONE (anv, pvr, radv, tu, v3dv, vn)
VK_EXT_external_memory_host DONE (anv, lvp, radv)
VK_EXT_filter_cubic DONE (tu/a650)

View file

@ -11,3 +11,4 @@ VK_EXT_shader_atomic_float2 on lvp
GL_NV_shader_atomic_float on llvmpipe
VK_EXT_image_robustness on v3dv
VK_EXT_extended_dynamic_state3 on lavapipe
VK_EXT_extended_dynamic_state3 on RADV

View file

@ -549,6 +549,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device
#endif
.EXT_extended_dynamic_state = true,
.EXT_extended_dynamic_state2 = true,
.EXT_extended_dynamic_state3 = true,
.EXT_external_memory_dma_buf = true,
.EXT_external_memory_host = device->rad_info.has_userptr,
.EXT_global_priority = true,
@ -1859,6 +1860,42 @@ radv_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
features->graphicsPipelineLibrary = true;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT: {
VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *features =
(VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *)ext;
features->extendedDynamicState3TessellationDomainOrigin = true;
features->extendedDynamicState3PolygonMode = true;
features->extendedDynamicState3SampleMask = true;
features->extendedDynamicState3AlphaToCoverageEnable = pdevice->rad_info.gfx_level < GFX11;
features->extendedDynamicState3LogicOpEnable = true;
features->extendedDynamicState3LineStippleEnable = true;
features->extendedDynamicState3ColorBlendEnable = false; /* TODO: Zink */
features->extendedDynamicState3DepthClipEnable = true;
features->extendedDynamicState3ConservativeRasterizationMode = true;
features->extendedDynamicState3DepthClipNegativeOneToOne = true;
features->extendedDynamicState3ProvokingVertexMode = !pdevice->use_ngg; /* TODO: NGG */
features->extendedDynamicState3DepthClampEnable = true;
features->extendedDynamicState3ColorWriteMask = false; /* TODO: Zink */
features->extendedDynamicState3RasterizationSamples = false; /* TODO: Zink */
features->extendedDynamicState3ColorBlendEquation = false; /* TODO: Zink */
features->extendedDynamicState3SampleLocationsEnable = false; /* TODO: Zink */
features->extendedDynamicState3LineRasterizationMode = false; /* TODO: Zink */
features->extendedDynamicState3ExtraPrimitiveOverestimationSize = false;
features->extendedDynamicState3AlphaToOneEnable = false;
features->extendedDynamicState3RasterizationStream = false;
features->extendedDynamicState3ColorBlendAdvanced = false;
features->extendedDynamicState3ViewportWScalingEnable = false;
features->extendedDynamicState3ViewportSwizzle = false;
features->extendedDynamicState3CoverageToColorEnable = false;
features->extendedDynamicState3CoverageToColorLocation = false;
features->extendedDynamicState3CoverageModulationMode = false;
features->extendedDynamicState3CoverageModulationTableEnable = false;
features->extendedDynamicState3CoverageModulationTable = false;
features->extendedDynamicState3CoverageReductionMode = false;
features->extendedDynamicState3RepresentativeFragmentTestEnable = false;
features->extendedDynamicState3ShadingRateImageEnable = false;
break;
}
default:
break;
}
@ -2639,6 +2676,12 @@ radv_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT: {
VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *properties =
(VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *)ext;
properties->dynamicPrimitiveTopologyUnrestricted = false;
break;
}
default:
break;
}