From e0e7d8d910e0029948bfb122a3420beef4a0de33 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 9 Sep 2024 14:07:18 -0500 Subject: [PATCH] nvk: Advertise VK_NV/KHR_compute_shader_derivatives Part-of: --- docs/features.txt | 4 ++-- docs/relnotes/new_features.txt | 2 ++ src/nouveau/vulkan/nvk_physical_device.c | 9 +++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index e9f3717fdf1..5c39d5a8d08 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -506,7 +506,7 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_acceleration_structure DONE (anv/gfx12.5+, lvp, radv/gfx10.3+) VK_KHR_android_surface not started VK_KHR_calibrated_timestamps DONE (anv, nvk, radv) - VK_KHR_compute_shader_derivatives DONE (anv) + VK_KHR_compute_shader_derivatives DONE (anv, nvk) VK_KHR_cooperative_matrix DONE (anv, radv/gfx11+) VK_KHR_deferred_host_operations DONE (anv, hasvk, lvp, radv) VK_KHR_display DONE (anv, nvk, pvr, radv, tu, v3dv) @@ -646,7 +646,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, radv) + VK_NV_compute_shader_derivatives DONE (anv, hasvk, nvk, radv) VK_EXT_acquire_drm_display DONE (anv, nvk, radv, tu, v3dv) VK_VALVE_mutable_descriptor_type DONE (anv, hasvk, nvk, radv, tu, vn) VK_AMD_buffer_marker DONE (anv, radv, tu) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index 36436aa9c37..268cd4fb44f 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -10,3 +10,5 @@ GL_ARB_timer_query on Panfrost GL_EXT_disjoint_timer_query on Panfrost VK_KHR_pipeline_binary on RADV VK_KHR_compute_shader_derivatives on anv +VK_NV_compute_shader_derivatives on nvk +VK_KHR_compute_shader_derivatives on nvk diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 5e558ae3db9..0ace405935f 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -87,6 +87,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance, .KHR_bind_memory2 = true, .KHR_buffer_device_address = true, .KHR_calibrated_timestamps = true, + .KHR_compute_shader_derivatives = true, .KHR_copy_commands2 = true, .KHR_create_renderpass2 = true, .KHR_dedicated_allocation = true, @@ -253,6 +254,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance, .GOOGLE_decorate_string = true, .GOOGLE_hlsl_functionality1 = true, .GOOGLE_user_type = true, + .NV_compute_shader_derivatives = true, .NV_shader_sm_builtins = true, .VALVE_mutable_descriptor_type = true, }; @@ -401,6 +403,10 @@ nvk_get_device_features(const struct nv_device_info *info, .shaderIntegerDotProduct = true, .maintenance4 = true, + /* VK_KHR_compute_shader_derivatives */ + .computeDerivativeGroupQuads = true, + .computeDerivativeGroupLinear = true, + /* VK_KHR_dynamic_rendering_local_read */ .dynamicRenderingLocalRead = true, @@ -891,6 +897,9 @@ nvk_get_device_properties(const struct nvk_instance *instance, .uniformTexelBufferOffsetSingleTexelAlignment = true, .maxBufferSize = NVK_MAX_BUFFER_SIZE, + /* VK_KHR_compute_shader_derivatives */ + .meshAndTaskShaderDerivatives = false, + /* VK_KHR_push_descriptor */ .maxPushDescriptors = NVK_MAX_PUSH_DESCRIPTORS,