diff --git a/docs/features.txt b/docs/features.txt index 3378cad8fea..3da3f8c6982 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -530,7 +530,7 @@ Vulkan 1.4 -- all DONE: anv, hk, lvp, nvk, panvk/v10+, radv/gfx8+, tu/a7xx+, vn VK_KHR_push_descriptor DONE (anv, hasvk, kk, lvp, nvk, panvk, radv, tu, vn) VK_KHR_shader_expect_assume DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_KHR_shader_float_controls2 DONE (anv, lvp, nvk, panvk/v10+, radv, tu, vn) - VK_KHR_shader_subgroup_rotate DONE (anv, lvp, nvk, panvk, radv, tu, vn) + VK_KHR_shader_subgroup_rotate DONE (anv, kk, lvp, nvk, panvk, radv, tu, vn) VK_KHR_vertex_attribute_divisor DONE (anv, kk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn) VK_EXT_host_image_copy DONE (anv, lvp, nvk/Turing+, panvk, radv/gfx10+, tu, vn) VK_EXT_pipeline_protected_access DONE (anv/gfx12+, radv, vn) @@ -690,8 +690,8 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_shader_object DONE (anv, lvp, hk, nvk, radv) VK_EXT_shader_replicated_composites DONE (anv, dzn, hasvk, kk, lvp, nvk, panvk, pvr, radv, tu, vn) VK_EXT_shader_stencil_export DONE (anv, hk, lvp, panvk, radv, tu, vn) - VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, radv, vn) - VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, hk, lvp, nvk, panvk, radv, vn) + VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, hk, kk, lvp, nvk, panvk, radv, vn) + VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, hk, kk, lvp, nvk, panvk, radv, vn) VK_EXT_shader_uniform_buffer_unsized_array DONE (anv, hk, nvk, panvk, radv, tu, vn) VK_EXT_surface_maintenance1 DONE (anv, hk, lvp, nvk, panvk, radv, tu, v3dv, vn) VK_EXT_swapchain_colorspace DONE (anv, hk, lvp, nvk, radv, tu, v3dv, vn) diff --git a/src/kosmickrisp/vulkan/kk_physical_device.c b/src/kosmickrisp/vulkan/kk_physical_device.c index 86cf601ce04..886d46d2c92 100644 --- a/src/kosmickrisp/vulkan/kk_physical_device.c +++ b/src/kosmickrisp/vulkan/kk_physical_device.c @@ -120,6 +120,7 @@ kk_get_device_extensions(const struct kk_instance *instance, .KHR_map_memory2 = true, .KHR_push_descriptor = true, .KHR_shader_expect_assume = true, + .KHR_shader_subgroup_rotate = true, .KHR_vertex_attribute_divisor = true, .EXT_global_priority = true, .EXT_global_priority_query = true, @@ -145,6 +146,8 @@ kk_get_device_extensions(const struct kk_instance *instance, .EXT_mutable_descriptor_type = true, .EXT_shader_atomic_float = true, .EXT_shader_replicated_composites = true, + .EXT_shader_subgroup_ballot = true, + .EXT_shader_subgroup_vote = true, .GOOGLE_decorate_string = true, .GOOGLE_hlsl_functionality1 = true, @@ -281,6 +284,8 @@ kk_get_device_features( /* Vulkan 1.4 */ .globalPriorityQuery = true, .pushDescriptor = true, + .shaderSubgroupRotate = true, + .shaderSubgroupRotateClustered = true, .vertexAttributeInstanceRateDivisor = true, .vertexAttributeInstanceRateZeroDivisor = true, @@ -482,14 +487,13 @@ kk_get_device_properties(const struct kk_physical_device *pdev, .subgroupSupportedStages = VK_SHADER_STAGE_COMPUTE_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, .subgroupSupportedOperations = - VK_SUBGROUP_FEATURE_BASIC_BIT | VK_SUBGROUP_FEATURE_BALLOT_BIT | - VK_SUBGROUP_FEATURE_VOTE_BIT | VK_SUBGROUP_FEATURE_QUAD_BIT | + VK_SUBGROUP_FEATURE_BASIC_BIT | VK_SUBGROUP_FEATURE_VOTE_BIT | + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT | VK_SUBGROUP_FEATURE_BALLOT_BIT | VK_SUBGROUP_FEATURE_SHUFFLE_BIT | VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT | - VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR, // | TODO_KOSMICKRISP - // VK_SUBGROUP_FEATURE_ARITHMETIC_BIT | - // VK_SUBGROUP_FEATURE_CLUSTERED_BIT | - // VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR, + VK_SUBGROUP_FEATURE_CLUSTERED_BIT | VK_SUBGROUP_FEATURE_QUAD_BIT | + VK_SUBGROUP_FEATURE_ROTATE_BIT | + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT, .subgroupQuadOperationsInAllStages = true, .pointClippingBehavior = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, .maxMultiviewViewCount = KK_MAX_MULTIVIEW_VIEW_COUNT,