From 7c28f614a4516e5af290a018b518955ff1d88fb5 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Wed, 12 Feb 2025 00:06:41 -0800 Subject: [PATCH] venus: support VK_EXT_blend_operation_advanced Signed-off-by: Yiwei Zhang Part-of: --- docs/features.txt | 1 + src/virtio/vulkan/vn_physical_device.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index f262b238a8b..92544fee64c 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -577,6 +577,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_acquire_xlib_display DONE (anv, lvp, nvk, panvk, radv, tu, v3dv) VK_EXT_attachment_feedback_loop_dynamic_state DONE (anv, lvp, radv, tu) VK_EXT_attachment_feedback_loop_layout DONE (anv, lvp, nvk, radv, tu, v3dv, vn) + VK_EXT_blend_operation_advanced DONE (vn) VK_EXT_border_color_swizzle DONE (anv, hasvk, lvp, nvk, radv/gfx10+, tu, v3dv, vn) VK_EXT_buffer_device_address DONE (anv, hasvk, nvk, panvk, radv) VK_EXT_calibrated_timestamps DONE (anv, hasvk, nvk, lvp, radv, vn, tu/a750+) diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index c949d733346..6606b9f5515 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -168,6 +168,8 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) /* EXT */ VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT attachment_feedback_loop_layout; + VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + blend_operation_advanced; VkPhysicalDeviceBorderColorSwizzleFeaturesEXT border_color_swizzle; VkPhysicalDeviceColorWriteEnableFeaturesEXT color_write_enable; VkPhysicalDeviceConditionalRenderingFeaturesEXT conditional_rendering; @@ -274,6 +276,7 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) /* EXT */ VN_ADD_PNEXT_EXT(feats2, ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT, local_feats.attachment_feedback_loop_layout, exts->EXT_attachment_feedback_loop_layout); + VN_ADD_PNEXT_EXT(feats2, BLEND_OPERATION_ADVANCED_FEATURES_EXT, local_feats.blend_operation_advanced, exts->EXT_blend_operation_advanced); VN_ADD_PNEXT_EXT(feats2, BORDER_COLOR_SWIZZLE_FEATURES_EXT, local_feats.border_color_swizzle, exts->EXT_border_color_swizzle); VN_ADD_PNEXT_EXT(feats2, COLOR_WRITE_ENABLE_FEATURES_EXT, local_feats.color_write_enable, exts->EXT_color_write_enable); VN_ADD_PNEXT_EXT(feats2, CONDITIONAL_RENDERING_FEATURES_EXT, local_feats.conditional_rendering, exts->EXT_conditional_rendering); @@ -318,9 +321,6 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) /* TODO: Add support for VK_EXT_sample_locations */ VN_SET_CORE_VALUE(feats, extendedDynamicState3SampleLocationsEnable, false); - /* TODO: Add support for VK_EXT_blend_operation_advanced */ - VN_SET_CORE_VALUE(feats, extendedDynamicState3ColorBlendAdvanced, - false); /* VK_NV_* extensions required */ VN_SET_CORE_VALUE(feats, extendedDynamicState3ViewportWScalingEnable, false); @@ -496,6 +496,8 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev) VkPhysicalDeviceFragmentShadingRatePropertiesKHR fragment_shading_rate; /* EXT */ + VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + blend_operation_advanced; VkPhysicalDeviceConservativeRasterizationPropertiesEXT conservative_rasterization; VkPhysicalDeviceCustomBorderColorPropertiesEXT custom_border_color; @@ -556,6 +558,7 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev) VN_ADD_PNEXT_EXT(props2, PUSH_DESCRIPTOR_PROPERTIES_KHR, local_props.push_descriptor, exts->KHR_push_descriptor); /* EXT */ + VN_ADD_PNEXT_EXT(props2, BLEND_OPERATION_ADVANCED_PROPERTIES_EXT, local_props.blend_operation_advanced, exts->EXT_blend_operation_advanced); VN_ADD_PNEXT_EXT(props2, CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, local_props.conservative_rasterization, exts->EXT_conservative_rasterization); VN_ADD_PNEXT_EXT(props2, CUSTOM_BORDER_COLOR_PROPERTIES_EXT, local_props.custom_border_color, exts->EXT_custom_border_color); VN_ADD_PNEXT_EXT(props2, EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT, local_props.extended_dynamic_state_3, exts->EXT_extended_dynamic_state3); @@ -617,6 +620,7 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev) VN_SET_VK_PROPS_EXT(props, &local_props.push_descriptor, exts->KHR_push_descriptor); /* EXT */ + VN_SET_VK_PROPS_EXT(props, &local_props.blend_operation_advanced, exts->EXT_blend_operation_advanced); VN_SET_VK_PROPS_EXT(props, &local_props.conservative_rasterization, exts->EXT_conservative_rasterization); VN_SET_VK_PROPS_EXT(props, &local_props.custom_border_color, exts->EXT_custom_border_color); VN_SET_VK_PROPS_EXT(props, &local_props.extended_dynamic_state_3, exts->EXT_extended_dynamic_state3); @@ -1086,6 +1090,7 @@ vn_physical_device_get_passthrough_extensions( /* EXT */ .EXT_attachment_feedback_loop_layout = true, + .EXT_blend_operation_advanced = true, .EXT_border_color_swizzle = true, .EXT_calibrated_timestamps = true, .EXT_color_write_enable = true,