Module: Mesa Branch: main Commit: 49e5b583154448bc9cf94022642a8c1001a8064e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=49e5b583154448bc9cf94022642a8c1001a8064e
Author: Juston Li <justo...@google.com> Date: Wed Jul 26 16:09:12 2023 -0700 venus: enable VK_EXT_extended_dynamic_state3 Signed-off-by: Juston Li <justo...@google.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25921> --- docs/features.txt | 2 +- src/virtio/vulkan/vn_command_buffer.c | 177 +++++++++++++++++++++++++++++++++ src/virtio/vulkan/vn_physical_device.c | 6 ++ src/virtio/vulkan/vn_physical_device.h | 1 + 4 files changed, 185 insertions(+), 1 deletion(-) diff --git a/docs/features.txt b/docs/features.txt index 46d26feb16f..77208367d7f 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -563,7 +563,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_display_control DONE (anv, hasvk, radv, tu) VK_EXT_display_surface_counter DONE (anv, lvp, radv, tu) VK_EXT_dynamic_rendering_unused_attachments DONE (anv, nvk, radv, vn) - VK_EXT_extended_dynamic_state3 DONE (anv, lvp, nvk, radv, tu) + VK_EXT_extended_dynamic_state3 DONE (anv, lvp, nvk, radv, tu, vn) VK_EXT_external_memory_acquire_unmodified DONE (radv) VK_EXT_external_memory_dma_buf DONE (anv, hasvk, nvk, pvr, radv, tu, v3dv, vn) VK_EXT_external_memory_host DONE (anv, hasvk, lvp, radv) diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c index 132595f0ea7..339c8a332cb 100644 --- a/src/virtio/vulkan/vn_command_buffer.c +++ b/src/virtio/vulkan/vn_command_buffer.c @@ -2350,3 +2350,180 @@ vn_CmdSetVertexInputEXT( vertexAttributeDescriptionCount, pVertexAttributeDescriptions); } + +void +vn_CmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer, + VkBool32 alphaToCoverageEnable) +{ + VN_CMD_ENQUEUE(vkCmdSetAlphaToCoverageEnableEXT, commandBuffer, + alphaToCoverageEnable); +} + +void +vn_CmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer, + VkBool32 alphaToOneEnable) +{ + VN_CMD_ENQUEUE(vkCmdSetAlphaToOneEnableEXT, commandBuffer, + alphaToOneEnable); +} + +void +vn_CmdSetColorBlendAdvancedEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkColorBlendAdvancedEXT *pColorBlendAdvanced) +{ + VN_CMD_ENQUEUE(vkCmdSetColorBlendAdvancedEXT, commandBuffer, + firstAttachment, attachmentCount, pColorBlendAdvanced); +} + +void +vn_CmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkBool32 *pColorBlendEnables) +{ + VN_CMD_ENQUEUE(vkCmdSetColorBlendEnableEXT, commandBuffer, firstAttachment, + attachmentCount, pColorBlendEnables); +} + +void +vn_CmdSetColorBlendEquationEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkColorBlendEquationEXT *pColorBlendEquations) +{ + VN_CMD_ENQUEUE(vkCmdSetColorBlendEquationEXT, commandBuffer, + firstAttachment, attachmentCount, pColorBlendEquations); +} + +void +vn_CmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkColorComponentFlags *pColorWriteMasks) +{ + VN_CMD_ENQUEUE(vkCmdSetColorWriteMaskEXT, commandBuffer, firstAttachment, + attachmentCount, pColorWriteMasks); +} + +void +vn_CmdSetConservativeRasterizationModeEXT( + VkCommandBuffer commandBuffer, + VkConservativeRasterizationModeEXT conservativeRasterizationMode) +{ + VN_CMD_ENQUEUE(vkCmdSetConservativeRasterizationModeEXT, commandBuffer, + conservativeRasterizationMode); +} + +void +vn_CmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer, + VkBool32 depthClampEnable) +{ + VN_CMD_ENQUEUE(vkCmdSetDepthClampEnableEXT, commandBuffer, + depthClampEnable); +} + +void +vn_CmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer, + VkBool32 depthClipEnable) +{ + VN_CMD_ENQUEUE(vkCmdSetDepthClipEnableEXT, commandBuffer, depthClipEnable); +} + +void +vn_CmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer, + VkBool32 negativeOneToOne) +{ + VN_CMD_ENQUEUE(vkCmdSetDepthClipNegativeOneToOneEXT, commandBuffer, + negativeOneToOne); +} + +void +vn_CmdSetExtraPrimitiveOverestimationSizeEXT( + VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize) +{ + VN_CMD_ENQUEUE(vkCmdSetExtraPrimitiveOverestimationSizeEXT, commandBuffer, + extraPrimitiveOverestimationSize); +} + +void +vn_CmdSetLineRasterizationModeEXT( + VkCommandBuffer commandBuffer, + VkLineRasterizationModeEXT lineRasterizationMode) +{ + VN_CMD_ENQUEUE(vkCmdSetLineRasterizationModeEXT, commandBuffer, + lineRasterizationMode); +} + +void +vn_CmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer, + VkBool32 stippledLineEnable) +{ + VN_CMD_ENQUEUE(vkCmdSetLineStippleEnableEXT, commandBuffer, + stippledLineEnable); +} + +void +vn_CmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer, + VkBool32 logicOpEnable) +{ + VN_CMD_ENQUEUE(vkCmdSetLogicOpEnableEXT, commandBuffer, logicOpEnable); +} + +void +vn_CmdSetPolygonModeEXT(VkCommandBuffer commandBuffer, + VkPolygonMode polygonMode) +{ + VN_CMD_ENQUEUE(vkCmdSetPolygonModeEXT, commandBuffer, polygonMode); +} + +void +vn_CmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer, + VkProvokingVertexModeEXT provokingVertexMode) +{ + VN_CMD_ENQUEUE(vkCmdSetProvokingVertexModeEXT, commandBuffer, + provokingVertexMode); +} + +void +vn_CmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer, + VkSampleCountFlagBits rasterizationSamples) +{ + VN_CMD_ENQUEUE(vkCmdSetRasterizationSamplesEXT, commandBuffer, + rasterizationSamples); +} + +void +vn_CmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer, + uint32_t rasterizationStream) +{ + VN_CMD_ENQUEUE(vkCmdSetRasterizationStreamEXT, commandBuffer, + rasterizationStream); +} + +void +vn_CmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer, + VkBool32 sampleLocationsEnable) +{ + VN_CMD_ENQUEUE(vkCmdSetSampleLocationsEnableEXT, commandBuffer, + sampleLocationsEnable); +} + +void +vn_CmdSetSampleMaskEXT(VkCommandBuffer commandBuffer, + VkSampleCountFlagBits samples, + const VkSampleMask *pSampleMask) +{ + VN_CMD_ENQUEUE(vkCmdSetSampleMaskEXT, commandBuffer, samples, pSampleMask); +} + +void +vn_CmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer, + VkTessellationDomainOrigin domainOrigin) +{ + VN_CMD_ENQUEUE(vkCmdSetTessellationDomainOriginEXT, commandBuffer, + domainOrigin); +} diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index 3aada213d1e..0c16142d456 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -152,6 +152,8 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) VkPhysicalDeviceDepthClipEnableFeaturesEXT depth_clip_enable; VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT dynamic_rendering_unused_attachments; + VkPhysicalDeviceExtendedDynamicState3FeaturesEXT + extended_dynamic_state_3; VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT fragment_shader_interlock; VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT @@ -251,6 +253,7 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) VN_ADD_PNEXT_EXT(feats2, DEPTH_CLIP_CONTROL_FEATURES_EXT, local_feats.depth_clip_control, exts->EXT_depth_clip_control); VN_ADD_PNEXT_EXT(feats2, DEPTH_CLIP_ENABLE_FEATURES_EXT, local_feats.depth_clip_enable, exts->EXT_depth_clip_enable); VN_ADD_PNEXT_EXT(feats2, DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT, local_feats.dynamic_rendering_unused_attachments, exts->EXT_dynamic_rendering_unused_attachments); + VN_ADD_PNEXT_EXT(feats2, EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT, local_feats.extended_dynamic_state_3, exts->EXT_extended_dynamic_state3); VN_ADD_PNEXT_EXT(feats2, FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, local_feats.fragment_shader_interlock, exts->EXT_fragment_shader_interlock); VN_ADD_PNEXT_EXT(feats2, GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT, local_feats.graphics_pipeline_library, exts->EXT_graphics_pipeline_library); VN_ADD_PNEXT_EXT(feats2, IMAGE_2D_VIEW_OF_3D_FEATURES_EXT, local_feats.image_2d_view_of_3d, exts->EXT_image_2d_view_of_3d); @@ -425,6 +428,7 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev) /* EXT */ VN_ADD_PNEXT_EXT(props2, CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, props->conservative_rasterization, exts->EXT_conservative_rasterization); VN_ADD_PNEXT_EXT(props2, CUSTOM_BORDER_COLOR_PROPERTIES_EXT, props->custom_border_color, exts->EXT_custom_border_color); + VN_ADD_PNEXT_EXT(props2, EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT, props->extended_dynamic_state_3, exts->EXT_extended_dynamic_state3); VN_ADD_PNEXT_EXT(props2, GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT, props->graphics_pipeline_library, exts->EXT_graphics_pipeline_library); VN_ADD_PNEXT_EXT(props2, LINE_RASTERIZATION_PROPERTIES_EXT, props->line_rasterization, exts->EXT_line_rasterization); VN_ADD_PNEXT_EXT(props2, MULTI_DRAW_PROPERTIES_EXT, props->multi_draw, exts->EXT_multi_draw); @@ -1095,6 +1099,7 @@ vn_physical_device_get_passthrough_extensions( .EXT_custom_border_color = true, .EXT_depth_clip_control = true, .EXT_depth_clip_enable = true, + .EXT_extended_dynamic_state3 = true, .EXT_dynamic_rendering_unused_attachments = true, .EXT_fragment_shader_interlock = true, .EXT_graphics_pipeline_library = VN_DEBUG(GPL), @@ -1739,6 +1744,7 @@ vn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, /* EXT */ CASE(CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, conservative_rasterization); CASE(CUSTOM_BORDER_COLOR_PROPERTIES_EXT, custom_border_color); + CASE(EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT, extended_dynamic_state_3); CASE(GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT, graphics_pipeline_library); CASE(LINE_RASTERIZATION_PROPERTIES_EXT, line_rasterization); CASE(MULTI_DRAW_PROPERTIES_EXT, multi_draw); diff --git a/src/virtio/vulkan/vn_physical_device.h b/src/virtio/vulkan/vn_physical_device.h index 2b1ed856847..cb25344e480 100644 --- a/src/virtio/vulkan/vn_physical_device.h +++ b/src/virtio/vulkan/vn_physical_device.h @@ -30,6 +30,7 @@ struct vn_physical_device_properties { VkPhysicalDeviceConservativeRasterizationPropertiesEXT conservative_rasterization; VkPhysicalDeviceCustomBorderColorPropertiesEXT custom_border_color; + VkPhysicalDeviceExtendedDynamicState3PropertiesEXT extended_dynamic_state_3; VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT graphics_pipeline_library; VkPhysicalDeviceLineRasterizationPropertiesEXT line_rasterization;