venus: added passthrough extension support - Part II

Below are added:
1. VK_KHR_compute_shader_derivatives
2. VK_NV_compute_shader_derivatives
3. VK_KHR_workgroup_memory_explicit_layout

Test:
- dEQP-VK.compute.*workgroup_memory_explicit_layout.*
- dEQP-VK.spirv_assembly.instruction.compute.compute_shader_derivatives.*

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33783>
This commit is contained in:
Yiwei Zhang
2025-02-26 16:27:17 -08:00
committed by Marge Bot
parent 48b50c77df
commit f16345b2f6
2 changed files with 16 additions and 3 deletions

View File

@@ -533,7 +533,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_acceleration_structure DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+)
VK_KHR_android_surface not started
VK_KHR_calibrated_timestamps DONE (anv, nvk, radv, tu/a750+, vn)
VK_KHR_compute_shader_derivatives DONE (anv, nvk, radv, tu/a7xx+)
VK_KHR_compute_shader_derivatives DONE (anv, nvk, radv, tu/a7xx+, vn)
VK_KHR_cooperative_matrix DONE (anv, radv/gfx11+)
VK_KHR_depth_clamp_zero_one DONE (vn)
VK_KHR_deferred_host_operations DONE (anv, hasvk, lvp, radv)
@@ -570,7 +570,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_swapchain DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
VK_KHR_swapchain_mutable_format DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
VK_KHR_wayland_surface DONE (anv, dzn, lvp, nvk, panvk, radv, tu, v3dv, vn)
VK_KHR_workgroup_memory_explicit_layout DONE (anv, nvk, hasvk, radv, tu, v3dv)
VK_KHR_workgroup_memory_explicit_layout DONE (anv, nvk, hasvk, radv, tu, v3dv, vn)
VK_KHR_win32_keyed_mutex not started
VK_KHR_win32_surface DONE (dzn, lvp)
VK_KHR_xcb_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
@@ -664,7 +664,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_GOOGLE_hlsl_functionality1 DONE (anv, hasvk, lvp, nvk, panvk, radv, tu)
VK_GOOGLE_user_type DONE (anv, hasvk, nvk, panvk, radv, tu)
VK_IMG_filter_cubic DONE (tu/a650+)
VK_NV_compute_shader_derivatives DONE (anv, hasvk, nvk, radv)
VK_NV_compute_shader_derivatives DONE (anv, hasvk, nvk, radv, vn)
VK_EXT_acquire_drm_display DONE (anv, nvk, radv, tu, v3dv, vn)
VK_VALVE_mutable_descriptor_type DONE (anv, hasvk, nvk, radv, tu, vn)
VK_AMD_buffer_marker DONE (anv, radv, tu)

View File

@@ -152,9 +152,13 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev)
VkPhysicalDeviceVertexAttributeDivisorFeatures vertex_attribute_divisor;
/* KHR */
VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR
compute_shader_derivatives;
VkPhysicalDeviceDepthClampZeroOneFeaturesKHR depth_clamp_zero_one;
VkPhysicalDeviceFragmentShadingRateFeaturesKHR fragment_shading_rate;
VkPhysicalDeviceShaderClockFeaturesKHR shader_clock;
VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
workgroup_memory_explicit_layout;
/* EXT */
VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT attachment_feedback_loop_layout;
@@ -277,9 +281,11 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev)
VN_ADD_PNEXT_EXT(feats2, DYNAMIC_RENDERING_LOCAL_READ_FEATURES, local_feats.dynamic_rendering_local_read, exts->KHR_dynamic_rendering_local_read);
/* KHR */
VN_ADD_PNEXT_EXT(feats2, COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR, local_feats.compute_shader_derivatives, exts->KHR_compute_shader_derivatives || exts->NV_compute_shader_derivatives);
VN_ADD_PNEXT_EXT(feats2, DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR, local_feats.depth_clamp_zero_one, exts->KHR_depth_clamp_zero_one || exts->EXT_depth_clamp_zero_one);
VN_ADD_PNEXT_EXT(feats2, FRAGMENT_SHADING_RATE_FEATURES_KHR, local_feats.fragment_shading_rate, exts->KHR_fragment_shading_rate);
VN_ADD_PNEXT_EXT(feats2, SHADER_CLOCK_FEATURES_KHR, local_feats.shader_clock, exts->KHR_shader_clock);
VN_ADD_PNEXT_EXT(feats2, WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR, local_feats.workgroup_memory_explicit_layout, exts->KHR_workgroup_memory_explicit_layout);
/* EXT */
VN_ADD_PNEXT_EXT(feats2, ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT, local_feats.attachment_feedback_loop_layout, exts->EXT_attachment_feedback_loop_layout);
@@ -494,6 +500,8 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev)
vertex_attribute_divisor;
/* KHR */
VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR
compute_shader_derivatives;
VkPhysicalDeviceFragmentShadingRatePropertiesKHR fragment_shading_rate;
/* EXT */
@@ -580,6 +588,7 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev)
}
/* KHR */
VN_ADD_PNEXT_EXT(props2, COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR, local_props.compute_shader_derivatives, exts->KHR_compute_shader_derivatives);
VN_ADD_PNEXT_EXT(props2, FRAGMENT_SHADING_RATE_PROPERTIES_KHR, local_props.fragment_shading_rate, exts->KHR_fragment_shading_rate);
/* EXT */
@@ -654,6 +663,7 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev)
}
/* KHR */
VN_SET_VK_PROPS_EXT(props, &local_props.compute_shader_derivatives, exts->KHR_compute_shader_derivatives);
VN_SET_VK_PROPS_EXT(props, &local_props.fragment_shading_rate, exts->KHR_fragment_shading_rate);
/* EXT */
@@ -1156,10 +1166,12 @@ vn_physical_device_get_passthrough_extensions(
/* KHR */
.KHR_calibrated_timestamps = true,
.KHR_compute_shader_derivatives = true,
.KHR_depth_clamp_zero_one = true,
.KHR_fragment_shading_rate = true,
.KHR_pipeline_library = true,
.KHR_shader_clock = true,
.KHR_workgroup_memory_explicit_layout = true,
/* EXT */
.EXT_attachment_feedback_loop_layout = true,
@@ -1208,6 +1220,7 @@ vn_physical_device_get_passthrough_extensions(
/* vendor */
.ARM_rasterization_order_attachment_access = true,
.NV_compute_shader_derivatives = true,
.VALVE_mutable_descriptor_type = true,
};
}