v3dv: enable VK_EXT_extended_dynamic_state2

Note that we don't support (and clarify on code why) two of the
features of this extension:

 * extendedDynamicState2PatchControlPoints: as we don't support
   Tessellation Shaders

 * extendedDynamicState2LogicOp: as supporting it would need to allow
   compile shader variants after pipeline creation, that we try to
   avoid as much as possible (and it is not supported right now)

Note that those two features are not mandatory for Vulkan 1.3. From
spec:

 "Promotion to Vulkan 1.3

  This extension has been partially promoted. The dynamic state
  enumerants VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT,
  VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT, and
  VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT; and the
  corresponding entry points in this extension are included in core
  Vulkan 1.3, with the EXT suffix omitted. The enumerants and entry
  points for dynamic logic operation and patch control points are not
  promoted, nor is the feature structure. Extension interfaces that
  were promoted remain available as aliases of the core functionality."

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28980>
This commit is contained in:
Alejandro Piñeiro 2024-04-25 13:09:51 +02:00 committed by Marge Bot
parent 8a2d7e3830
commit 39a9f68685
2 changed files with 13 additions and 1 deletions

View File

@ -486,7 +486,7 @@ Vulkan 1.3 -- all DONE: anv, lvp, nvk, radv, tu, vn
VK_KHR_zero_initialize_workgroup_memory DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_4444_formats DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_extended_dynamic_state DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_extended_dynamic_state2 DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
VK_EXT_extended_dynamic_state2 DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_inline_uniform_block DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_pipeline_creation_cache_control DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_EXT_pipeline_creation_feedback DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)

View File

@ -202,6 +202,7 @@ get_device_extensions(const struct v3dv_physical_device *device,
.EXT_load_store_op_none = true,
.EXT_inline_uniform_block = true,
.EXT_extended_dynamic_state = true,
.EXT_extended_dynamic_state2 = true,
.EXT_external_memory_dma_buf = true,
.EXT_host_query_reset = true,
.EXT_image_drm_format_modifier = true,
@ -412,6 +413,17 @@ get_features(const struct v3dv_physical_device *physical_device,
/* VK_EXT_extended_dynamic_state */
.extendedDynamicState = true,
/* VK_EXT_extended_dynamic_state2 */
.extendedDynamicState2 = true,
/* We don't support extendedDynamicState2LogicOp as that would require
* compile shader variants after the pipeline creation.
*/
.extendedDynamicState2LogicOp = false,
/* We don't support extendedDynamicState2PatchControlPoints as we don't
* support Tessellation Shaders
*/
.extendedDynamicState2PatchControlPoints = false,
/* VK_KHR_pipeline_executable_properties */
.pipelineExecutableInfo = true,