From 5d33068cd9e31b9c50dfab2d87ae8c8eee97b292 Mon Sep 17 00:00:00 2001 From: Igor Torrente Date: Thu, 17 Mar 2022 10:30:03 -0300 Subject: [PATCH] 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 Part-of: --- 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 2c78b15..155d23f 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 3325b39..8d0eb31 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 7008ed5..1c151c8 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; -- 2.7.4