diff --git a/docs/features.txt b/docs/features.txt index 82bbeaefaa1..a6dc10c28d5 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -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) diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index ede57ef965c..328232e1188 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -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, }; }