From be7634b82829cbd0ba6c1845a7ce91cc1aa60f88 Mon Sep 17 00:00:00 2001 From: Ali Cheraghi Date: Tue, 30 Jun 2026 09:50:22 +0330 Subject: [PATCH] Target.spirv: omit Linkage and friends caps/ext from cpu features Keeping these in cpu features can cause conflict because these are automatically emitted by linker. Closes #35975 --- lib/std/Target/spirv.zig | 504 +++++++++++++++------------------- src/link/SpirV.zig | 12 +- tools/update_cpu_features.zig | 47 ++-- 3 files changed, 266 insertions(+), 297 deletions(-) diff --git a/lib/std/Target/spirv.zig b/lib/std/Target/spirv.zig index ecd3c056cf329c5c392807d19b18ba6dd36d361b..c988b645b8fc697e73c111cae74989303c8e5c53 100644 --- a/lib/std/Target/spirv.zig +++ b/lib/std/Target/spirv.zig @@ -6,7 +6,6 @@ const CpuModel = std.Target.Cpu.Model; pub const Feature = enum { abort_khr, - addresses, arithmetic_fence_ext, atomic_float16add_ext, atomic_float16min_max_ext, @@ -87,8 +86,6 @@ pub const Feature = enum { int64image_ext, int8, interpolation_function, - kernel, - linkage, literal_sampler, long_vector_ext, matrix, @@ -98,7 +95,6 @@ pub const Feature = enum { multi_viewport, named_barrier, opt_none_ext, - physical_storage_buffer_addresses, pipe_storage, pipes, poison_freeze_khr, @@ -121,7 +117,6 @@ pub const Feature = enum { sampled_image_array_dynamic_indexing, sampled_image_array_non_uniform_indexing, sampled_rect, - shader, shader64bit_indexing_ext, shader_clock_khr, shader_invocation_reorder_ext, @@ -172,7 +167,6 @@ pub const Feature = enum { SPV_KHR_fragment_shading_rate, SPV_KHR_integer_dot_product, SPV_KHR_multiview, - SPV_KHR_physical_storage_buffer, SPV_KHR_poison_freeze, SPV_KHR_post_depth_coverage, SPV_KHR_quad_control, @@ -253,22 +247,15 @@ pub const all_features = blk: { var result: [len]CpuFeature = undefined; result[@intFromEnum(Feature.abort_khr)] = .{ .llvm_name = null, - .description = "Enable abort_khr Capability.", + .description = "Enable abort_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_abort, .v1_0, }), }; - result[@intFromEnum(Feature.addresses)] = .{ - .llvm_name = null, - .description = "Enable addresses Capability.", - .dependencies = featureSet(&[_]Feature{ - .v1_0, - }), - }; result[@intFromEnum(Feature.arithmetic_fence_ext)] = .{ .llvm_name = null, - .description = "Enable arithmetic_fence_ext Capability.", + .description = "Enable arithmetic_fence_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_arithmetic_fence, .v1_0, @@ -276,7 +263,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.atomic_float16add_ext)] = .{ .llvm_name = null, - .description = "Enable atomic_float16add_ext Capability.", + .description = "Enable atomic_float16add_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_atomic_float16_add, .v1_0, @@ -284,7 +271,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.atomic_float16min_max_ext)] = .{ .llvm_name = null, - .description = "Enable atomic_float16min_max_ext Capability.", + .description = "Enable atomic_float16min_max_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_atomic_float_min_max, .v1_0, @@ -292,7 +279,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.atomic_float32add_ext)] = .{ .llvm_name = null, - .description = "Enable atomic_float32add_ext Capability.", + .description = "Enable atomic_float32add_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_atomic_float_add, .v1_0, @@ -300,7 +287,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.atomic_float32min_max_ext)] = .{ .llvm_name = null, - .description = "Enable atomic_float32min_max_ext Capability.", + .description = "Enable atomic_float32min_max_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_atomic_float_min_max, .v1_0, @@ -308,7 +295,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.atomic_float64add_ext)] = .{ .llvm_name = null, - .description = "Enable atomic_float64add_ext Capability.", + .description = "Enable atomic_float64add_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_atomic_float_add, .v1_0, @@ -316,7 +303,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.atomic_float64min_max_ext)] = .{ .llvm_name = null, - .description = "Enable atomic_float64min_max_ext Capability.", + .description = "Enable atomic_float64min_max_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_atomic_float_min_max, .v1_0, @@ -324,14 +311,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.atomic_storage)] = .{ .llvm_name = null, - .description = "Enable atomic_storage Capability.", + .description = "Enable atomic_storage capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.atomic_storage_ops)] = .{ .llvm_name = null, - .description = "Enable atomic_storage_ops Capability.", + .description = "Enable atomic_storage_ops capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_shader_atomic_counter_ops, .v1_0, @@ -339,7 +326,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.b_float16cooperative_matrix_khr)] = .{ .llvm_name = null, - .description = "Enable b_float16cooperative_matrix_khr Capability.", + .description = "Enable b_float16cooperative_matrix_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_bfloat16, .v1_0, @@ -347,7 +334,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.b_float16dot_product_khr)] = .{ .llvm_name = null, - .description = "Enable b_float16dot_product_khr Capability.", + .description = "Enable b_float16dot_product_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_bfloat16, .v1_0, @@ -355,7 +342,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.b_float16type_khr)] = .{ .llvm_name = null, - .description = "Enable b_float16type_khr Capability.", + .description = "Enable b_float16type_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_bfloat16, .v1_0, @@ -363,7 +350,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.bit_instructions)] = .{ .llvm_name = null, - .description = "Enable bit_instructions Capability.", + .description = "Enable bit_instructions capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_bit_instructions, .v1_0, @@ -371,14 +358,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.clip_distance)] = .{ .llvm_name = null, - .description = "Enable clip_distance Capability.", + .description = "Enable clip_distance capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.compute_derivative_group_linear_khr)] = .{ .llvm_name = null, - .description = "Enable compute_derivative_group_linear_khr Capability.", + .description = "Enable compute_derivative_group_linear_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_compute_shader_derivatives, .v1_0, @@ -386,7 +373,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.compute_derivative_group_quads_khr)] = .{ .llvm_name = null, - .description = "Enable compute_derivative_group_quads_khr Capability.", + .description = "Enable compute_derivative_group_quads_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_compute_shader_derivatives, .v1_0, @@ -394,7 +381,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.constant_data_khr)] = .{ .llvm_name = null, - .description = "Enable constant_data_khr Capability.", + .description = "Enable constant_data_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_constant_data, .v1_0, @@ -402,7 +389,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.cooperative_matrix_khr)] = .{ .llvm_name = null, - .description = "Enable cooperative_matrix_khr Capability.", + .description = "Enable cooperative_matrix_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_cooperative_matrix, .v1_0, @@ -410,14 +397,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.cull_distance)] = .{ .llvm_name = null, - .description = "Enable cull_distance Capability.", + .description = "Enable cull_distance capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.demote_to_helper_invocation)] = .{ .llvm_name = null, - .description = "Enable demote_to_helper_invocation Capability.", + .description = "Enable demote_to_helper_invocation capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_demote_to_helper_invocation, .v1_6, @@ -425,7 +412,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.denorm_flush_to_zero)] = .{ .llvm_name = null, - .description = "Enable denorm_flush_to_zero Capability.", + .description = "Enable denorm_flush_to_zero capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_float_controls, .v1_4, @@ -433,7 +420,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.denorm_preserve)] = .{ .llvm_name = null, - .description = "Enable denorm_preserve Capability.", + .description = "Enable denorm_preserve capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_float_controls, .v1_4, @@ -441,14 +428,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.derivative_control)] = .{ .llvm_name = null, - .description = "Enable derivative_control Capability.", + .description = "Enable derivative_control capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.descriptor_heap_ext)] = .{ .llvm_name = null, - .description = "Enable descriptor_heap_ext Capability.", + .description = "Enable descriptor_heap_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_heap, .v1_0, @@ -456,14 +443,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.device_enqueue)] = .{ .llvm_name = null, - .description = "Enable device_enqueue Capability.", + .description = "Enable device_enqueue capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.device_group)] = .{ .llvm_name = null, - .description = "Enable device_group Capability.", + .description = "Enable device_group capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_device_group, .v1_3, @@ -471,7 +458,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.dot_product)] = .{ .llvm_name = null, - .description = "Enable dot_product Capability.", + .description = "Enable dot_product capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_integer_dot_product, .v1_6, @@ -479,7 +466,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.dot_product_input4x8bit)] = .{ .llvm_name = null, - .description = "Enable dot_product_input4x8bit Capability.", + .description = "Enable dot_product_input4x8bit capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_integer_dot_product, .v1_6, @@ -487,7 +474,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.dot_product_input4x8bit_packed)] = .{ .llvm_name = null, - .description = "Enable dot_product_input4x8bit_packed Capability.", + .description = "Enable dot_product_input4x8bit_packed capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_integer_dot_product, .v1_6, @@ -495,7 +482,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.dot_product_input_all)] = .{ .llvm_name = null, - .description = "Enable dot_product_input_all Capability.", + .description = "Enable dot_product_input_all capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_integer_dot_product, .v1_6, @@ -503,7 +490,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.draw_parameters)] = .{ .llvm_name = null, - .description = "Enable draw_parameters Capability.", + .description = "Enable draw_parameters capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_shader_draw_parameters, .v1_3, @@ -511,7 +498,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.expect_assume_khr)] = .{ .llvm_name = null, - .description = "Enable expect_assume_khr Capability.", + .description = "Enable expect_assume_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_expect_assume, .v1_0, @@ -519,28 +506,28 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.float16)] = .{ .llvm_name = null, - .description = "Enable float16 Capability.", + .description = "Enable float16 capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.float16buffer)] = .{ .llvm_name = null, - .description = "Enable float16buffer Capability.", + .description = "Enable float16buffer capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.float64)] = .{ .llvm_name = null, - .description = "Enable float64 Capability.", + .description = "Enable float64 capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.float8cooperative_matrix_ext)] = .{ .llvm_name = null, - .description = "Enable float8cooperative_matrix_ext Capability.", + .description = "Enable float8cooperative_matrix_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_float8, .v1_0, @@ -548,7 +535,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.float8ext)] = .{ .llvm_name = null, - .description = "Enable float8ext Capability.", + .description = "Enable float8ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_float8, .v1_0, @@ -556,7 +543,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.float_controls2)] = .{ .llvm_name = null, - .description = "Enable float_controls2 Capability.", + .description = "Enable float_controls2 capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_float_controls2, .v1_0, @@ -564,7 +551,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.fmakhr)] = .{ .llvm_name = null, - .description = "Enable fmakhr Capability.", + .description = "Enable fmakhr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_fma, .v1_0, @@ -572,7 +559,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.fragment_barycentric_khr)] = .{ .llvm_name = null, - .description = "Enable fragment_barycentric_khr Capability.", + .description = "Enable fragment_barycentric_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_fragment_shader_barycentric, .v1_0, @@ -580,7 +567,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.fragment_density_ext)] = .{ .llvm_name = null, - .description = "Enable fragment_density_ext Capability.", + .description = "Enable fragment_density_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_fragment_invocation_density, .v1_0, @@ -588,7 +575,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.fragment_fully_covered_ext)] = .{ .llvm_name = null, - .description = "Enable fragment_fully_covered_ext Capability.", + .description = "Enable fragment_fully_covered_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_fragment_fully_covered, .v1_0, @@ -596,7 +583,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.fragment_shader_pixel_interlock_ext)] = .{ .llvm_name = null, - .description = "Enable fragment_shader_pixel_interlock_ext Capability.", + .description = "Enable fragment_shader_pixel_interlock_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_fragment_shader_interlock, .v1_0, @@ -604,7 +591,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.fragment_shader_sample_interlock_ext)] = .{ .llvm_name = null, - .description = "Enable fragment_shader_sample_interlock_ext Capability.", + .description = "Enable fragment_shader_sample_interlock_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_fragment_shader_interlock, .v1_0, @@ -612,7 +599,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.fragment_shader_shading_rate_interlock_ext)] = .{ .llvm_name = null, - .description = "Enable fragment_shader_shading_rate_interlock_ext Capability.", + .description = "Enable fragment_shader_shading_rate_interlock_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_fragment_shader_interlock, .v1_0, @@ -620,7 +607,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.fragment_shading_rate_khr)] = .{ .llvm_name = null, - .description = "Enable fragment_shading_rate_khr Capability.", + .description = "Enable fragment_shading_rate_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_fragment_shading_rate, .v1_0, @@ -628,63 +615,63 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.generic_pointer)] = .{ .llvm_name = null, - .description = "Enable generic_pointer Capability.", + .description = "Enable generic_pointer capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.geometry)] = .{ .llvm_name = null, - .description = "Enable geometry Capability.", + .description = "Enable geometry capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.geometry_point_size)] = .{ .llvm_name = null, - .description = "Enable geometry_point_size Capability.", + .description = "Enable geometry_point_size capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.geometry_streams)] = .{ .llvm_name = null, - .description = "Enable geometry_streams Capability.", + .description = "Enable geometry_streams capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.group_non_uniform)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform Capability.", + .description = "Enable group_non_uniform capability", .dependencies = featureSet(&[_]Feature{ .v1_3, }), }; result[@intFromEnum(Feature.group_non_uniform_arithmetic)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform_arithmetic Capability.", + .description = "Enable group_non_uniform_arithmetic capability", .dependencies = featureSet(&[_]Feature{ .v1_3, }), }; result[@intFromEnum(Feature.group_non_uniform_ballot)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform_ballot Capability.", + .description = "Enable group_non_uniform_ballot capability", .dependencies = featureSet(&[_]Feature{ .v1_3, }), }; result[@intFromEnum(Feature.group_non_uniform_clustered)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform_clustered Capability.", + .description = "Enable group_non_uniform_clustered capability", .dependencies = featureSet(&[_]Feature{ .v1_3, }), }; result[@intFromEnum(Feature.group_non_uniform_partitioned_ext)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform_partitioned_ext Capability.", + .description = "Enable group_non_uniform_partitioned_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_subgroup_partitioned, .v1_0, @@ -692,14 +679,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.group_non_uniform_quad)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform_quad Capability.", + .description = "Enable group_non_uniform_quad capability", .dependencies = featureSet(&[_]Feature{ .v1_3, }), }; result[@intFromEnum(Feature.group_non_uniform_rotate_khr)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform_rotate_khr Capability.", + .description = "Enable group_non_uniform_rotate_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_subgroup_rotate, .v1_0, @@ -707,28 +694,28 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.group_non_uniform_shuffle)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform_shuffle Capability.", + .description = "Enable group_non_uniform_shuffle capability", .dependencies = featureSet(&[_]Feature{ .v1_3, }), }; result[@intFromEnum(Feature.group_non_uniform_shuffle_relative)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform_shuffle_relative Capability.", + .description = "Enable group_non_uniform_shuffle_relative capability", .dependencies = featureSet(&[_]Feature{ .v1_3, }), }; result[@intFromEnum(Feature.group_non_uniform_vote)] = .{ .llvm_name = null, - .description = "Enable group_non_uniform_vote Capability.", + .description = "Enable group_non_uniform_vote capability", .dependencies = featureSet(&[_]Feature{ .v1_3, }), }; result[@intFromEnum(Feature.group_uniform_arithmetic_khr)] = .{ .llvm_name = null, - .description = "Enable group_uniform_arithmetic_khr Capability.", + .description = "Enable group_uniform_arithmetic_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_uniform_group_instructions, .v1_0, @@ -736,84 +723,84 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.groups)] = .{ .llvm_name = null, - .description = "Enable groups Capability.", + .description = "Enable groups capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.image_basic)] = .{ .llvm_name = null, - .description = "Enable image_basic Capability.", + .description = "Enable image_basic capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.image_buffer)] = .{ .llvm_name = null, - .description = "Enable image_buffer Capability.", + .description = "Enable image_buffer capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.image_cube_array)] = .{ .llvm_name = null, - .description = "Enable image_cube_array Capability.", + .description = "Enable image_cube_array capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.image_gather_extended)] = .{ .llvm_name = null, - .description = "Enable image_gather_extended Capability.", + .description = "Enable image_gather_extended capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.image_mipmap)] = .{ .llvm_name = null, - .description = "Enable image_mipmap Capability.", + .description = "Enable image_mipmap capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.image_ms_array)] = .{ .llvm_name = null, - .description = "Enable image_ms_array Capability.", + .description = "Enable image_ms_array capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.image_query)] = .{ .llvm_name = null, - .description = "Enable image_query Capability.", + .description = "Enable image_query capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.image_read_write)] = .{ .llvm_name = null, - .description = "Enable image_read_write Capability.", + .description = "Enable image_read_write capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.image_rect)] = .{ .llvm_name = null, - .description = "Enable image_rect Capability.", + .description = "Enable image_rect capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.input_attachment)] = .{ .llvm_name = null, - .description = "Enable input_attachment Capability.", + .description = "Enable input_attachment capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.input_attachment_array_dynamic_indexing)] = .{ .llvm_name = null, - .description = "Enable input_attachment_array_dynamic_indexing Capability.", + .description = "Enable input_attachment_array_dynamic_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -821,7 +808,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.input_attachment_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable input_attachment_array_non_uniform_indexing Capability.", + .description = "Enable input_attachment_array_non_uniform_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -829,28 +816,28 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.int16)] = .{ .llvm_name = null, - .description = "Enable int16 Capability.", + .description = "Enable int16 capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.int64)] = .{ .llvm_name = null, - .description = "Enable int64 Capability.", + .description = "Enable int64 capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.int64atomics)] = .{ .llvm_name = null, - .description = "Enable int64atomics Capability.", + .description = "Enable int64atomics capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.int64image_ext)] = .{ .llvm_name = null, - .description = "Enable int64image_ext Capability.", + .description = "Enable int64image_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_image_int64, .v1_0, @@ -858,42 +845,28 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.int8)] = .{ .llvm_name = null, - .description = "Enable int8 Capability.", + .description = "Enable int8 capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.interpolation_function)] = .{ .llvm_name = null, - .description = "Enable interpolation_function Capability.", - .dependencies = featureSet(&[_]Feature{ - .v1_0, - }), - }; - result[@intFromEnum(Feature.kernel)] = .{ - .llvm_name = null, - .description = "Enable kernel Capability.", - .dependencies = featureSet(&[_]Feature{ - .v1_0, - }), - }; - result[@intFromEnum(Feature.linkage)] = .{ - .llvm_name = null, - .description = "Enable linkage Capability.", + .description = "Enable interpolation_function capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.literal_sampler)] = .{ .llvm_name = null, - .description = "Enable literal_sampler Capability.", + .description = "Enable literal_sampler capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.long_vector_ext)] = .{ .llvm_name = null, - .description = "Enable long_vector_ext Capability.", + .description = "Enable long_vector_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_long_vector, .v1_0, @@ -901,14 +874,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.matrix)] = .{ .llvm_name = null, - .description = "Enable matrix Capability.", + .description = "Enable matrix capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.mesh_shading_ext)] = .{ .llvm_name = null, - .description = "Enable mesh_shading_ext Capability.", + .description = "Enable mesh_shading_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_mesh_shader, .v1_0, @@ -916,14 +889,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.min_lod)] = .{ .llvm_name = null, - .description = "Enable min_lod Capability.", + .description = "Enable min_lod capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.multi_view)] = .{ .llvm_name = null, - .description = "Enable multi_view Capability.", + .description = "Enable multi_view capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_multiview, .v1_3, @@ -931,52 +904,43 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.multi_viewport)] = .{ .llvm_name = null, - .description = "Enable multi_viewport Capability.", + .description = "Enable multi_viewport capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.named_barrier)] = .{ .llvm_name = null, - .description = "Enable named_barrier Capability.", + .description = "Enable named_barrier capability", .dependencies = featureSet(&[_]Feature{ .v1_1, }), }; result[@intFromEnum(Feature.opt_none_ext)] = .{ .llvm_name = null, - .description = "Enable opt_none_ext Capability.", + .description = "Enable opt_none_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_optnone, .v1_0, }), }; - result[@intFromEnum(Feature.physical_storage_buffer_addresses)] = .{ - .llvm_name = null, - .description = "Enable physical_storage_buffer_addresses Capability.", - .dependencies = featureSet(&[_]Feature{ - .SPV_EXT_physical_storage_buffer, - .SPV_KHR_physical_storage_buffer, - .v1_5, - }), - }; result[@intFromEnum(Feature.pipe_storage)] = .{ .llvm_name = null, - .description = "Enable pipe_storage Capability.", + .description = "Enable pipe_storage capability", .dependencies = featureSet(&[_]Feature{ .v1_1, }), }; result[@intFromEnum(Feature.pipes)] = .{ .llvm_name = null, - .description = "Enable pipes Capability.", + .description = "Enable pipes capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.poison_freeze_khr)] = .{ .llvm_name = null, - .description = "Enable poison_freeze_khr Capability.", + .description = "Enable poison_freeze_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_poison_freeze, .v1_0, @@ -984,7 +948,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.quad_control_khr)] = .{ .llvm_name = null, - .description = "Enable quad_control_khr Capability.", + .description = "Enable quad_control_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_quad_control, .v1_0, @@ -992,7 +956,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.ray_cull_mask_khr)] = .{ .llvm_name = null, - .description = "Enable ray_cull_mask_khr Capability.", + .description = "Enable ray_cull_mask_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_ray_cull_mask, .v1_0, @@ -1000,7 +964,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.ray_query_khr)] = .{ .llvm_name = null, - .description = "Enable ray_query_khr Capability.", + .description = "Enable ray_query_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_ray_query, .v1_0, @@ -1008,7 +972,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.ray_query_position_fetch_khr)] = .{ .llvm_name = null, - .description = "Enable ray_query_position_fetch_khr Capability.", + .description = "Enable ray_query_position_fetch_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_ray_tracing_position_fetch, .v1_0, @@ -1016,7 +980,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.ray_query_provisional_khr)] = .{ .llvm_name = null, - .description = "Enable ray_query_provisional_khr Capability.", + .description = "Enable ray_query_provisional_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_ray_query, .v1_0, @@ -1024,7 +988,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.ray_tracing_khr)] = .{ .llvm_name = null, - .description = "Enable ray_tracing_khr Capability.", + .description = "Enable ray_tracing_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_ray_tracing, .v1_0, @@ -1032,7 +996,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.ray_tracing_opacity_micromap_ext)] = .{ .llvm_name = null, - .description = "Enable ray_tracing_opacity_micromap_ext Capability.", + .description = "Enable ray_tracing_opacity_micromap_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_opacity_micromap, .v1_0, @@ -1040,7 +1004,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.ray_tracing_position_fetch_khr)] = .{ .llvm_name = null, - .description = "Enable ray_tracing_position_fetch_khr Capability.", + .description = "Enable ray_tracing_position_fetch_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_ray_tracing_position_fetch, .v1_0, @@ -1048,7 +1012,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.ray_tracing_provisional_khr)] = .{ .llvm_name = null, - .description = "Enable ray_tracing_provisional_khr Capability.", + .description = "Enable ray_tracing_provisional_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_ray_tracing, .v1_0, @@ -1056,7 +1020,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.ray_traversal_primitive_culling_khr)] = .{ .llvm_name = null, - .description = "Enable ray_traversal_primitive_culling_khr Capability.", + .description = "Enable ray_traversal_primitive_culling_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_ray_query, .SPV_KHR_ray_tracing, @@ -1065,7 +1029,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.replicated_composites_ext)] = .{ .llvm_name = null, - .description = "Enable replicated_composites_ext Capability.", + .description = "Enable replicated_composites_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_replicated_composites, .v1_0, @@ -1073,7 +1037,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.runtime_descriptor_array)] = .{ .llvm_name = null, - .description = "Enable runtime_descriptor_array Capability.", + .description = "Enable runtime_descriptor_array capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1081,7 +1045,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.sample_mask_post_depth_coverage)] = .{ .llvm_name = null, - .description = "Enable sample_mask_post_depth_coverage Capability.", + .description = "Enable sample_mask_post_depth_coverage capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_post_depth_coverage, .v1_0, @@ -1089,35 +1053,35 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.sample_rate_shading)] = .{ .llvm_name = null, - .description = "Enable sample_rate_shading Capability.", + .description = "Enable sample_rate_shading capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.sampled_buffer)] = .{ .llvm_name = null, - .description = "Enable sampled_buffer Capability.", + .description = "Enable sampled_buffer capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.sampled_cube_array)] = .{ .llvm_name = null, - .description = "Enable sampled_cube_array Capability.", + .description = "Enable sampled_cube_array capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.sampled_image_array_dynamic_indexing)] = .{ .llvm_name = null, - .description = "Enable sampled_image_array_dynamic_indexing Capability.", + .description = "Enable sampled_image_array_dynamic_indexing capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.sampled_image_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable sampled_image_array_non_uniform_indexing Capability.", + .description = "Enable sampled_image_array_non_uniform_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1125,21 +1089,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.sampled_rect)] = .{ .llvm_name = null, - .description = "Enable sampled_rect Capability.", - .dependencies = featureSet(&[_]Feature{ - .v1_0, - }), - }; - result[@intFromEnum(Feature.shader)] = .{ - .llvm_name = null, - .description = "Enable shader Capability.", + .description = "Enable sampled_rect capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.shader64bit_indexing_ext)] = .{ .llvm_name = null, - .description = "Enable shader64bit_indexing_ext Capability.", + .description = "Enable shader64bit_indexing_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_64bit_indexing, .v1_0, @@ -1147,7 +1104,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.shader_clock_khr)] = .{ .llvm_name = null, - .description = "Enable shader_clock_khr Capability.", + .description = "Enable shader_clock_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_shader_clock, .v1_0, @@ -1155,7 +1112,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.shader_invocation_reorder_ext)] = .{ .llvm_name = null, - .description = "Enable shader_invocation_reorder_ext Capability.", + .description = "Enable shader_invocation_reorder_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_invocation_reorder, .v1_0, @@ -1163,14 +1120,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.shader_layer)] = .{ .llvm_name = null, - .description = "Enable shader_layer Capability.", + .description = "Enable shader_layer capability", .dependencies = featureSet(&[_]Feature{ .v1_5, }), }; result[@intFromEnum(Feature.shader_non_uniform)] = .{ .llvm_name = null, - .description = "Enable shader_non_uniform Capability.", + .description = "Enable shader_non_uniform capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1178,14 +1135,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.shader_viewport_index)] = .{ .llvm_name = null, - .description = "Enable shader_viewport_index Capability.", + .description = "Enable shader_viewport_index capability", .dependencies = featureSet(&[_]Feature{ .v1_5, }), }; result[@intFromEnum(Feature.shader_viewport_index_layer_ext)] = .{ .llvm_name = null, - .description = "Enable shader_viewport_index_layer_ext Capability.", + .description = "Enable shader_viewport_index_layer_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_viewport_index_layer, .v1_0, @@ -1193,7 +1150,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.signed_zero_inf_nan_preserve)] = .{ .llvm_name = null, - .description = "Enable signed_zero_inf_nan_preserve Capability.", + .description = "Enable signed_zero_inf_nan_preserve capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_float_controls, .v1_4, @@ -1201,314 +1158,309 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.sparse_residency)] = .{ .llvm_name = null, - .description = "Enable sparse_residency Capability.", + .description = "Enable sparse_residency capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.SPV_EXT_arithmetic_fence)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_arithmetic_fence Extension.", + .description = "Enable SPV_EXT_arithmetic_fence extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_demote_to_helper_invocation)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_demote_to_helper_invocation Extension.", + .description = "Enable SPV_EXT_demote_to_helper_invocation extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_descriptor_heap)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_descriptor_heap Extension.", + .description = "Enable SPV_EXT_descriptor_heap extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_descriptor_indexing)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_descriptor_indexing Extension.", + .description = "Enable SPV_EXT_descriptor_indexing extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_float8)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_float8 Extension.", + .description = "Enable SPV_EXT_float8 extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_fragment_fully_covered)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_fragment_fully_covered Extension.", + .description = "Enable SPV_EXT_fragment_fully_covered extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_fragment_invocation_density)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_fragment_invocation_density Extension.", + .description = "Enable SPV_EXT_fragment_invocation_density extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_fragment_shader_interlock)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_fragment_shader_interlock Extension.", + .description = "Enable SPV_EXT_fragment_shader_interlock extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_long_vector)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_long_vector Extension.", + .description = "Enable SPV_EXT_long_vector extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_mesh_shader)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_mesh_shader Extension.", + .description = "Enable SPV_EXT_mesh_shader extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_opacity_micromap)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_opacity_micromap Extension.", + .description = "Enable SPV_EXT_opacity_micromap extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_optnone)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_optnone Extension.", + .description = "Enable SPV_EXT_optnone extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_physical_storage_buffer)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_physical_storage_buffer Extension.", + .description = "Enable SPV_EXT_physical_storage_buffer extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_replicated_composites)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_replicated_composites Extension.", + .description = "Enable SPV_EXT_replicated_composites extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_64bit_indexing)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_64bit_indexing Extension.", + .description = "Enable SPV_EXT_shader_64bit_indexing extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float16_add)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_atomic_float16_add Extension.", + .description = "Enable SPV_EXT_shader_atomic_float16_add extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float_add)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_atomic_float_add Extension.", + .description = "Enable SPV_EXT_shader_atomic_float_add extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_atomic_float_min_max)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_atomic_float_min_max Extension.", + .description = "Enable SPV_EXT_shader_atomic_float_min_max extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_image_int64)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_image_int64 Extension.", + .description = "Enable SPV_EXT_shader_image_int64 extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_invocation_reorder)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_invocation_reorder Extension.", + .description = "Enable SPV_EXT_shader_invocation_reorder extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_stencil_export)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_stencil_export Extension.", + .description = "Enable SPV_EXT_shader_stencil_export extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_subgroup_partitioned)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_subgroup_partitioned Extension.", + .description = "Enable SPV_EXT_shader_subgroup_partitioned extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_tile_image)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_tile_image Extension.", + .description = "Enable SPV_EXT_shader_tile_image extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_EXT_shader_viewport_index_layer)] = .{ .llvm_name = null, - .description = "Enable SPV_EXT_shader_viewport_index_layer Extension.", + .description = "Enable SPV_EXT_shader_viewport_index_layer extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_16bit_storage)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_16bit_storage Extension.", + .description = "Enable SPV_KHR_16bit_storage extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_8bit_storage)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_8bit_storage Extension.", + .description = "Enable SPV_KHR_8bit_storage extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_abort)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_abort Extension.", + .description = "Enable SPV_KHR_abort extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_bfloat16)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_bfloat16 Extension.", + .description = "Enable SPV_KHR_bfloat16 extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_bit_instructions)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_bit_instructions Extension.", + .description = "Enable SPV_KHR_bit_instructions extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_compute_shader_derivatives)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_compute_shader_derivatives Extension.", + .description = "Enable SPV_KHR_compute_shader_derivatives extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_constant_data)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_constant_data Extension.", + .description = "Enable SPV_KHR_constant_data extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_cooperative_matrix)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_cooperative_matrix Extension.", + .description = "Enable SPV_KHR_cooperative_matrix extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_device_group)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_device_group Extension.", + .description = "Enable SPV_KHR_device_group extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_expect_assume)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_expect_assume Extension.", + .description = "Enable SPV_KHR_expect_assume extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_float_controls)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_float_controls Extension.", + .description = "Enable SPV_KHR_float_controls extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_float_controls2)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_float_controls2 Extension.", + .description = "Enable SPV_KHR_float_controls2 extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_fma)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_fma Extension.", + .description = "Enable SPV_KHR_fma extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_fragment_shader_barycentric)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_fragment_shader_barycentric Extension.", + .description = "Enable SPV_KHR_fragment_shader_barycentric extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_fragment_shading_rate)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_fragment_shading_rate Extension.", + .description = "Enable SPV_KHR_fragment_shading_rate extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_integer_dot_product)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_integer_dot_product Extension.", + .description = "Enable SPV_KHR_integer_dot_product extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_multiview)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_multiview Extension.", - .dependencies = featureSet(&[_]Feature{}), - }; - result[@intFromEnum(Feature.SPV_KHR_physical_storage_buffer)] = .{ - .llvm_name = null, - .description = "Enable SPV_KHR_physical_storage_buffer Extension.", + .description = "Enable SPV_KHR_multiview extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_poison_freeze)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_poison_freeze Extension.", + .description = "Enable SPV_KHR_poison_freeze extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_post_depth_coverage)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_post_depth_coverage Extension.", + .description = "Enable SPV_KHR_post_depth_coverage extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_quad_control)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_quad_control Extension.", + .description = "Enable SPV_KHR_quad_control extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_ray_cull_mask)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_ray_cull_mask Extension.", + .description = "Enable SPV_KHR_ray_cull_mask extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_ray_query)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_ray_query Extension.", + .description = "Enable SPV_KHR_ray_query extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_ray_tracing)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_ray_tracing Extension.", + .description = "Enable SPV_KHR_ray_tracing extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_ray_tracing_position_fetch)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_ray_tracing_position_fetch Extension.", + .description = "Enable SPV_KHR_ray_tracing_position_fetch extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_shader_atomic_counter_ops)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_shader_atomic_counter_ops Extension.", + .description = "Enable SPV_KHR_shader_atomic_counter_ops extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_shader_ballot)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_shader_ballot Extension.", + .description = "Enable SPV_KHR_shader_ballot extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_shader_clock)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_shader_clock Extension.", + .description = "Enable SPV_KHR_shader_clock extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_shader_draw_parameters)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_shader_draw_parameters Extension.", + .description = "Enable SPV_KHR_shader_draw_parameters extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_subgroup_rotate)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_subgroup_rotate Extension.", + .description = "Enable SPV_KHR_subgroup_rotate extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_subgroup_vote)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_subgroup_vote Extension.", + .description = "Enable SPV_KHR_subgroup_vote extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_uniform_group_instructions)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_uniform_group_instructions Extension.", + .description = "Enable SPV_KHR_uniform_group_instructions extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_untyped_pointers)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_untyped_pointers Extension.", + .description = "Enable SPV_KHR_untyped_pointers extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_variable_pointers)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_variable_pointers Extension.", + .description = "Enable SPV_KHR_variable_pointers extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_vulkan_memory_model)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_vulkan_memory_model Extension.", + .description = "Enable SPV_KHR_vulkan_memory_model extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.SPV_KHR_workgroup_memory_explicit_layout)] = .{ .llvm_name = null, - .description = "Enable SPV_KHR_workgroup_memory_explicit_layout Extension.", + .description = "Enable SPV_KHR_workgroup_memory_explicit_layout extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.stencil_export_ext)] = .{ .llvm_name = null, - .description = "Enable stencil_export_ext Capability.", + .description = "Enable stencil_export_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_stencil_export, .v1_0, @@ -1516,7 +1468,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.storage_buffer16bit_access)] = .{ .llvm_name = null, - .description = "Enable storage_buffer16bit_access Capability.", + .description = "Enable storage_buffer16bit_access capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_16bit_storage, .v1_3, @@ -1524,7 +1476,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.storage_buffer8bit_access)] = .{ .llvm_name = null, - .description = "Enable storage_buffer8bit_access Capability.", + .description = "Enable storage_buffer8bit_access capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_8bit_storage, .v1_5, @@ -1532,14 +1484,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.storage_buffer_array_dynamic_indexing)] = .{ .llvm_name = null, - .description = "Enable storage_buffer_array_dynamic_indexing Capability.", + .description = "Enable storage_buffer_array_dynamic_indexing capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.storage_buffer_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable storage_buffer_array_non_uniform_indexing Capability.", + .description = "Enable storage_buffer_array_non_uniform_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1547,14 +1499,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.storage_image_array_dynamic_indexing)] = .{ .llvm_name = null, - .description = "Enable storage_image_array_dynamic_indexing Capability.", + .description = "Enable storage_image_array_dynamic_indexing capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.storage_image_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable storage_image_array_non_uniform_indexing Capability.", + .description = "Enable storage_image_array_non_uniform_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1562,35 +1514,35 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.storage_image_extended_formats)] = .{ .llvm_name = null, - .description = "Enable storage_image_extended_formats Capability.", + .description = "Enable storage_image_extended_formats capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.storage_image_multisample)] = .{ .llvm_name = null, - .description = "Enable storage_image_multisample Capability.", + .description = "Enable storage_image_multisample capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.storage_image_read_without_format)] = .{ .llvm_name = null, - .description = "Enable storage_image_read_without_format Capability.", + .description = "Enable storage_image_read_without_format capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.storage_image_write_without_format)] = .{ .llvm_name = null, - .description = "Enable storage_image_write_without_format Capability.", + .description = "Enable storage_image_write_without_format capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.storage_input_output16)] = .{ .llvm_name = null, - .description = "Enable storage_input_output16 Capability.", + .description = "Enable storage_input_output16 capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_16bit_storage, .v1_3, @@ -1598,7 +1550,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.storage_push_constant16)] = .{ .llvm_name = null, - .description = "Enable storage_push_constant16 Capability.", + .description = "Enable storage_push_constant16 capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_16bit_storage, .v1_3, @@ -1606,7 +1558,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.storage_push_constant8)] = .{ .llvm_name = null, - .description = "Enable storage_push_constant8 Capability.", + .description = "Enable storage_push_constant8 capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_8bit_storage, .v1_5, @@ -1614,7 +1566,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.storage_texel_buffer_array_dynamic_indexing)] = .{ .llvm_name = null, - .description = "Enable storage_texel_buffer_array_dynamic_indexing Capability.", + .description = "Enable storage_texel_buffer_array_dynamic_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1622,7 +1574,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.storage_texel_buffer_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable storage_texel_buffer_array_non_uniform_indexing Capability.", + .description = "Enable storage_texel_buffer_array_non_uniform_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1630,7 +1582,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.subgroup_ballot_khr)] = .{ .llvm_name = null, - .description = "Enable subgroup_ballot_khr Capability.", + .description = "Enable subgroup_ballot_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_shader_ballot, .v1_0, @@ -1638,14 +1590,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.subgroup_dispatch)] = .{ .llvm_name = null, - .description = "Enable subgroup_dispatch Capability.", + .description = "Enable subgroup_dispatch capability", .dependencies = featureSet(&[_]Feature{ .v1_1, }), }; result[@intFromEnum(Feature.subgroup_vote_khr)] = .{ .llvm_name = null, - .description = "Enable subgroup_vote_khr Capability.", + .description = "Enable subgroup_vote_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_subgroup_vote, .v1_0, @@ -1653,21 +1605,21 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.tessellation)] = .{ .llvm_name = null, - .description = "Enable tessellation Capability.", + .description = "Enable tessellation capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.tessellation_point_size)] = .{ .llvm_name = null, - .description = "Enable tessellation_point_size Capability.", + .description = "Enable tessellation_point_size capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.tile_image_color_read_access_ext)] = .{ .llvm_name = null, - .description = "Enable tile_image_color_read_access_ext Capability.", + .description = "Enable tile_image_color_read_access_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_tile_image, .v1_0, @@ -1675,7 +1627,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.tile_image_depth_read_access_ext)] = .{ .llvm_name = null, - .description = "Enable tile_image_depth_read_access_ext Capability.", + .description = "Enable tile_image_depth_read_access_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_tile_image, .v1_0, @@ -1683,7 +1635,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.tile_image_stencil_read_access_ext)] = .{ .llvm_name = null, - .description = "Enable tile_image_stencil_read_access_ext Capability.", + .description = "Enable tile_image_stencil_read_access_ext capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_shader_tile_image, .v1_0, @@ -1691,14 +1643,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.transform_feedback)] = .{ .llvm_name = null, - .description = "Enable transform_feedback Capability.", + .description = "Enable transform_feedback capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.uniform_and_storage_buffer16bit_access)] = .{ .llvm_name = null, - .description = "Enable uniform_and_storage_buffer16bit_access Capability.", + .description = "Enable uniform_and_storage_buffer16bit_access capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_16bit_storage, .v1_3, @@ -1706,7 +1658,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.uniform_and_storage_buffer8bit_access)] = .{ .llvm_name = null, - .description = "Enable uniform_and_storage_buffer8bit_access Capability.", + .description = "Enable uniform_and_storage_buffer8bit_access capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_8bit_storage, .v1_5, @@ -1714,14 +1666,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.uniform_buffer_array_dynamic_indexing)] = .{ .llvm_name = null, - .description = "Enable uniform_buffer_array_dynamic_indexing Capability.", + .description = "Enable uniform_buffer_array_dynamic_indexing capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.uniform_buffer_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable uniform_buffer_array_non_uniform_indexing Capability.", + .description = "Enable uniform_buffer_array_non_uniform_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1729,14 +1681,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.uniform_decoration)] = .{ .llvm_name = null, - .description = "Enable uniform_decoration Capability.", + .description = "Enable uniform_decoration capability", .dependencies = featureSet(&[_]Feature{ .v1_6, }), }; result[@intFromEnum(Feature.uniform_texel_buffer_array_dynamic_indexing)] = .{ .llvm_name = null, - .description = "Enable uniform_texel_buffer_array_dynamic_indexing Capability.", + .description = "Enable uniform_texel_buffer_array_dynamic_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1744,7 +1696,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.uniform_texel_buffer_array_non_uniform_indexing)] = .{ .llvm_name = null, - .description = "Enable uniform_texel_buffer_array_non_uniform_indexing Capability.", + .description = "Enable uniform_texel_buffer_array_non_uniform_indexing capability", .dependencies = featureSet(&[_]Feature{ .SPV_EXT_descriptor_indexing, .v1_5, @@ -1752,7 +1704,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.untyped_pointers_khr)] = .{ .llvm_name = null, - .description = "Enable untyped_pointers_khr Capability.", + .description = "Enable untyped_pointers_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_untyped_pointers, .v1_0, @@ -1760,54 +1712,54 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.v1_0)] = .{ .llvm_name = null, - .description = "Enable v1_0 Extension.", + .description = "Enable v1_0 extension", .dependencies = featureSet(&[_]Feature{}), }; result[@intFromEnum(Feature.v1_1)] = .{ .llvm_name = null, - .description = "Enable v1_1 Extension.", + .description = "Enable v1_1 extension", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.v1_2)] = .{ .llvm_name = null, - .description = "Enable v1_2 Extension.", + .description = "Enable v1_2 extension", .dependencies = featureSet(&[_]Feature{ .v1_1, }), }; result[@intFromEnum(Feature.v1_3)] = .{ .llvm_name = null, - .description = "Enable v1_3 Extension.", + .description = "Enable v1_3 extension", .dependencies = featureSet(&[_]Feature{ .v1_2, }), }; result[@intFromEnum(Feature.v1_4)] = .{ .llvm_name = null, - .description = "Enable v1_4 Extension.", + .description = "Enable v1_4 extension", .dependencies = featureSet(&[_]Feature{ .v1_3, }), }; result[@intFromEnum(Feature.v1_5)] = .{ .llvm_name = null, - .description = "Enable v1_5 Extension.", + .description = "Enable v1_5 extension", .dependencies = featureSet(&[_]Feature{ .v1_4, }), }; result[@intFromEnum(Feature.v1_6)] = .{ .llvm_name = null, - .description = "Enable v1_6 Extension.", + .description = "Enable v1_6 extension", .dependencies = featureSet(&[_]Feature{ .v1_5, }), }; result[@intFromEnum(Feature.variable_pointers)] = .{ .llvm_name = null, - .description = "Enable variable_pointers Capability.", + .description = "Enable variable_pointers capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_variable_pointers, .v1_3, @@ -1815,7 +1767,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.variable_pointers_storage_buffer)] = .{ .llvm_name = null, - .description = "Enable variable_pointers_storage_buffer Capability.", + .description = "Enable variable_pointers_storage_buffer capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_variable_pointers, .v1_3, @@ -1823,14 +1775,14 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.vector16)] = .{ .llvm_name = null, - .description = "Enable vector16 Capability.", + .description = "Enable vector16 capability", .dependencies = featureSet(&[_]Feature{ .v1_0, }), }; result[@intFromEnum(Feature.vulkan_memory_model)] = .{ .llvm_name = null, - .description = "Enable vulkan_memory_model Capability.", + .description = "Enable vulkan_memory_model capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_vulkan_memory_model, .v1_5, @@ -1838,7 +1790,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.vulkan_memory_model_device_scope)] = .{ .llvm_name = null, - .description = "Enable vulkan_memory_model_device_scope Capability.", + .description = "Enable vulkan_memory_model_device_scope capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_vulkan_memory_model, .v1_5, @@ -1846,7 +1798,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.workgroup_memory_explicit_layout16bit_access_khr)] = .{ .llvm_name = null, - .description = "Enable workgroup_memory_explicit_layout16bit_access_khr Capability.", + .description = "Enable workgroup_memory_explicit_layout16bit_access_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_workgroup_memory_explicit_layout, .v1_0, @@ -1854,7 +1806,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.workgroup_memory_explicit_layout8bit_access_khr)] = .{ .llvm_name = null, - .description = "Enable workgroup_memory_explicit_layout8bit_access_khr Capability.", + .description = "Enable workgroup_memory_explicit_layout8bit_access_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_workgroup_memory_explicit_layout, .v1_0, @@ -1862,7 +1814,7 @@ pub const all_features = blk: { }; result[@intFromEnum(Feature.workgroup_memory_explicit_layout_khr)] = .{ .llvm_name = null, - .description = "Enable workgroup_memory_explicit_layout_khr Capability.", + .description = "Enable workgroup_memory_explicit_layout_khr capability", .dependencies = featureSet(&[_]Feature{ .SPV_KHR_workgroup_memory_explicit_layout, .v1_0, diff --git a/src/link/SpirV.zig b/src/link/SpirV.zig index e6cdabd133e641406bfd0ef96328e9fe8e07469a..be2e2e47ec30e6fb699cf175d17994d392f34da5 100644 --- a/src/link/SpirV.zig +++ b/src/link/SpirV.zig @@ -628,14 +628,18 @@ fn emitPreamble( if (has_linkage) caps.insert(.linkage); inline for (@typeInfo(spec.Capability).@"enum".field_names) |cap_name| { - if (target.cpu.has(.spirv, @field(std.Target.spirv.Feature, cap_name))) - caps.insert(@field(spec.Capability, cap_name)); + if (@hasField(std.Target.spirv.Feature, cap_name)) { + if (target.cpu.has(.spirv, @field(std.Target.spirv.Feature, cap_name))) + caps.insert(@field(spec.Capability, cap_name)); + } } inline for (@typeInfo(spec.Extension).@"enum".field_names) |ext_name| { switch (@field(spec.Extension, ext_name)) { .v1_0, .v1_1, .v1_2, .v1_3, .v1_4, .v1_5, .v1_6 => {}, - else => if (target.cpu.has(.spirv, @field(std.Target.spirv.Feature, ext_name))) - try exts.put(gpa, ext_name, {}), + else => if (@hasField(std.Target.spirv.Feature, ext_name)) { + if (target.cpu.has(.spirv, @field(std.Target.spirv.Feature, ext_name))) + try exts.put(gpa, ext_name, {}); + }, } } diff --git a/tools/update_cpu_features.zig b/tools/update_cpu_features.zig index 7ee0fb9af538dc8aec13ec7cd98ac7d471f13299..f7b4de724bedebd4c770ce15b161ef1774c3c4e9 100644 --- a/tools/update_cpu_features.zig +++ b/tools/update_cpu_features.zig @@ -50,19 +50,29 @@ const ArchTarget = struct { branch_quota: ?usize = null, }; -const spirv_extra_features = blk: { - const caps_info = @typeInfo(spirv_spec.Capability).@"enum"; - const exts_info = @typeInfo(spirv_spec.Extension).@"enum"; - const caps_len = caps_info.field_names.len; - const exts_len = exts_info.field_names.len; +const spirv_omitted_capabilities = [_][]const u8{ + "shader", // implied by Vulkan/OpenGL targets + "kernel", // implied by OpenCL/AMDHSA targets + "addresses", // implied by OpenCL/AMDHSA targets + "physical_storage_buffer_addresses", // implied by spirv64-vulkan + "linkage", // automatically emitted when externs need linkage decorations +}; +const spirv_omitted_extensions = [_][]const u8{ + "SPV_KHR_physical_storage_buffer", // paired with physical_storage_buffer_addresses +}; - var features: [caps_len + exts_len]Feature = undefined; - for ( - caps_info.field_names, - caps_info.field_values, - features[0..caps_len], - ) |name, value, *feature| { - feature.* = .{ +const spirv_extra_features: []const Feature = blk: { + @setEvalBranchQuota(15_000); + var features: []const Feature = &.{}; + + cap: for ( + @typeInfo(spirv_spec.Capability).@"enum".field_names, + @typeInfo(spirv_spec.Capability).@"enum".field_values, + ) |name, value| { + for (spirv_omitted_capabilities) |omitted| { + if (std.mem.eql(u8, omitted, name)) continue :cap; + } + features = features ++ &[_]Feature{.{ .zig_name = name, .desc = "Enable " ++ name ++ " capability", .deps = &struct { @@ -73,11 +83,14 @@ const spirv_extra_features = blk: { break :inner out; }; }.deps, - }; + }}; } - for (exts_info.field_names, features[caps_len..]) |name, *feature| { - feature.* = .{ + ext: for (@typeInfo(spirv_spec.Extension).@"enum".field_names) |name| { + for (spirv_omitted_extensions) |omitted| { + if (std.mem.eql(u8, omitted, name)) continue :ext; + } + features = features ++ &[_]Feature{.{ .zig_name = name, .desc = "Enable " ++ name ++ " extension", .deps = if (std.mem.eql(u8, name, "v1_6")) @@ -94,7 +107,7 @@ const spirv_extra_features = blk: { &.{"v1_0"} else &.{}, - }; + }}; } break :blk features; @@ -1494,7 +1507,7 @@ const targets = [_]ArchTarget{ .td_name = "SPIRV", }, .branch_quota = 2000, - .extra_features = &spirv_extra_features, + .extra_features = spirv_extra_features, .extra_cpus = &.{ .{ .llvm_name = null, -- 2.54.0