Module: Mesa
Branch: main
Commit: 5d33068cd9e31b9c50dfab2d87ae8c8eee97b292
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5d33068cd9e31b9c50dfab2d87ae8c8eee97b292

Author: Igor Torrente <[email protected]>
Date:   Thu Mar 17 10:30:03 2022 -0300

venus: add VK_EXT_extended_dynamic_state2 extension

Implements all the necessary code in the device initialization
and extension functions.

Signed-off-by: Igor Torrente <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15428>

---

 src/virtio/vulkan/vn_command_buffer.c  | 37 ++++++++++++++++++++++++++++++++++
 src/virtio/vulkan/vn_physical_device.c |  9 +++++++++
 src/virtio/vulkan/vn_physical_device.h |  1 +
 3 files changed, 47 insertions(+)

diff --git a/src/virtio/vulkan/vn_command_buffer.c 
b/src/virtio/vulkan/vn_command_buffer.c
index 2c78b15e00d..155d23f5e18 100644
--- a/src/virtio/vulkan/vn_command_buffer.c
+++ b/src/virtio/vulkan/vn_command_buffer.c
@@ -1527,3 +1527,40 @@ vn_CmdSetViewportWithCount(VkCommandBuffer commandBuffer,
    VN_CMD_ENQUEUE(vkCmdSetViewportWithCount, commandBuffer, viewportCount,
                   pViewports);
 }
+
+void
+vn_CmdSetDepthBiasEnable(VkCommandBuffer commandBuffer,
+                         VkBool32 depthBiasEnable)
+{
+   VN_CMD_ENQUEUE(vkCmdSetDepthBiasEnable, commandBuffer, depthBiasEnable);
+}
+
+void
+vn_CmdSetLogicOpEXT(VkCommandBuffer commandBuffer, VkLogicOp logicOp)
+{
+   VN_CMD_ENQUEUE(vkCmdSetLogicOpEXT, commandBuffer, logicOp);
+}
+
+void
+vn_CmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,
+                               uint32_t patchControlPoints)
+{
+   VN_CMD_ENQUEUE(vkCmdSetPatchControlPointsEXT, commandBuffer,
+                  patchControlPoints);
+}
+
+void
+vn_CmdSetPrimitiveRestartEnable(VkCommandBuffer commandBuffer,
+                                VkBool32 primitiveRestartEnable)
+{
+   VN_CMD_ENQUEUE(vkCmdSetPrimitiveRestartEnable, commandBuffer,
+                  primitiveRestartEnable);
+}
+
+void
+vn_CmdSetRasterizerDiscardEnable(VkCommandBuffer commandBuffer,
+                                 VkBool32 rasterizerDiscardEnable)
+{
+   VN_CMD_ENQUEUE(vkCmdSetRasterizerDiscardEnable, commandBuffer,
+                  rasterizerDiscardEnable);
+}
diff --git a/src/virtio/vulkan/vn_physical_device.c 
b/src/virtio/vulkan/vn_physical_device.c
index 3325b3925b8..8d0eb31f7e2 100644
--- a/src/virtio/vulkan/vn_physical_device.c
+++ b/src/virtio/vulkan/vn_physical_device.c
@@ -124,6 +124,9 @@ vn_physical_device_init_features(struct vn_physical_device 
*physical_dev)
    VN_ADD_EXT_TO_PNEXT(exts->EXT_extended_dynamic_state,
                        feats->extended_dynamic_state,
                        EXTENDED_DYNAMIC_STATE_FEATURES_EXT, features2);
+   VN_ADD_EXT_TO_PNEXT(exts->EXT_extended_dynamic_state2,
+                       feats->extended_dynamic_state_2,
+                       EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, features2);
    VN_ADD_EXT_TO_PNEXT(exts->EXT_image_robustness, feats->image_robustness,
                        IMAGE_ROBUSTNESS_FEATURES_EXT, features2);
    VN_ADD_EXT_TO_PNEXT(exts->EXT_shader_demote_to_helper_invocation,
@@ -939,6 +942,7 @@ vn_physical_device_get_passthrough_extensions(
       /* promoted to VK_VERSION_1_3 */
       .EXT_4444_formats = true,
       .EXT_extended_dynamic_state = true,
+      .EXT_extended_dynamic_state2 = true,
       .EXT_image_robustness = true,
       .EXT_shader_demote_to_helper_invocation = true,
 
@@ -1670,6 +1674,8 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice 
physicalDevice,
       /* Vulkan 1.3 */
       VkPhysicalDevice4444FormatsFeaturesEXT *argb_4444_formats;
       VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *extended_dynamic_state;
+      VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
+         *extended_dynamic_state2;
       VkPhysicalDeviceImageRobustnessFeaturesEXT *image_robustness;
       VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures
          *shader_demote_to_helper_invocation;
@@ -1850,6 +1856,9 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice 
physicalDevice,
       case 
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:
          *u.extended_dynamic_state = feats->extended_dynamic_state;
          break;
+      case 
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT:
+         *u.extended_dynamic_state2 = feats->extended_dynamic_state_2;
+         break;
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT:
          *u.image_robustness = feats->image_robustness;
          break;
diff --git a/src/virtio/vulkan/vn_physical_device.h 
b/src/virtio/vulkan/vn_physical_device.h
index 7008ed568dd..1c151c8e770 100644
--- a/src/virtio/vulkan/vn_physical_device.h
+++ b/src/virtio/vulkan/vn_physical_device.h
@@ -25,6 +25,7 @@ struct vn_physical_device_features {
    /* Vulkan 1.3 */
    VkPhysicalDevice4444FormatsFeaturesEXT argb_4444_formats;
    VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state;
+   VkPhysicalDeviceExtendedDynamicState2FeaturesEXT extended_dynamic_state_2;
    VkPhysicalDeviceImageRobustnessFeaturesEXT image_robustness;
    VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures
       shader_demote_to_helper_invocation;

Reply via email to