authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2021-05-13 01:30:54+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2021-05-14 19:49:32+02:00
log98dc8eb7d97bd05ced6908c4da3c5e0a55e2c41b
treec0f48b1249eae3704771481247881542b9c716f8
parent4fe0a0b82b531d4ac44ed9a249137e9f6c186d0b

SPIR-V: Add generated SPIR-V features


2 files changed, 2138 insertions(+), 1 deletions(-)

lib/std/target.zig+3-1
...@@ -431,6 +431,7 @@ pub const Target = struct {...@@ -431,6 +431,7 @@ pub const Target = struct {
431 pub const powerpc = @import("target/powerpc.zig");431 pub const powerpc = @import("target/powerpc.zig");
432 pub const riscv = @import("target/riscv.zig");432 pub const riscv = @import("target/riscv.zig");
433 pub const sparc = @import("target/sparc.zig");433 pub const sparc = @import("target/sparc.zig");
434 pub const spirv = @import("target/spirv.zig");
434 pub const systemz = @import("target/systemz.zig");435 pub const systemz = @import("target/systemz.zig");
435 pub const ve = @import("target/ve.zig");436 pub const ve = @import("target/ve.zig");
436 pub const wasm = @import("target/wasm.zig");437 pub const wasm = @import("target/wasm.zig");
...@@ -594,7 +595,7 @@ pub const Target = struct {...@@ -594,7 +595,7 @@ pub const Target = struct {
594 pub const Set = struct {595 pub const Set = struct {
595 ints: [usize_count]usize,596 ints: [usize_count]usize,
596597
597 pub const needed_bit_count = 172;598 pub const needed_bit_count = 288;
598 pub const byte_count = (needed_bit_count + 7) / 8;599 pub const byte_count = (needed_bit_count + 7) / 8;
599 pub const usize_count = (byte_count + (@sizeOf(usize) - 1)) / @sizeOf(usize);600 pub const usize_count = (byte_count + (@sizeOf(usize) - 1)) / @sizeOf(usize);
600 pub const Index = std.math.Log2Int(std.meta.Int(.unsigned, usize_count * @bitSizeOf(usize)));601 pub const Index = std.math.Log2Int(std.meta.Int(.unsigned, usize_count * @bitSizeOf(usize)));
...@@ -1123,6 +1124,7 @@ pub const Target = struct {...@@ -1123,6 +1124,7 @@ pub const Target = struct {
1123 .amdgcn => &amdgpu.all_features,1124 .amdgcn => &amdgpu.all_features,
1124 .riscv32, .riscv64 => &riscv.all_features,1125 .riscv32, .riscv64 => &riscv.all_features,
1125 .sparc, .sparcv9, .sparcel => &sparc.all_features,1126 .sparc, .sparcv9, .sparcel => &sparc.all_features,
1127 .spirv32, .spirv64 => &spirv.all_features,
1126 .s390x => &systemz.all_features,1128 .s390x => &systemz.all_features,
1127 .i386, .x86_64 => &x86.all_features,1129 .i386, .x86_64 => &x86.all_features,
1128 .nvptx, .nvptx64 => &nvptx.all_features,1130 .nvptx, .nvptx64 => &nvptx.all_features,
lib/std/target/spirv.zig created+2135
...@@ -0,0 +1,2135 @@
1//! This file is auto-generated by tools/update_spirv_features.zig.
2//! TODO: Dependencies of capabilities on extensions.
3//! TODO: Dependencies of extensions on extensions.
4//! TODO: Dependencies of extensions on versions.
5
6const std = @import("../std.zig");
7const CpuFeature = std.Target.Cpu.Feature;
8const CpuModel = std.Target.Cpu.Model;
9
10pub const Feature = enum {
11 v1_1,
12 v1_2,
13 v1_3,
14 v1_4,
15 v1_5,
16 SPV_AMD_shader_fragment_mask,
17 SPV_AMD_gpu_shader_int16,
18 SPV_AMD_gpu_shader_half_float,
19 SPV_AMD_texture_gather_bias_lod,
20 SPV_AMD_shader_ballot,
21 SPV_AMD_gcn_shader,
22 SPV_AMD_shader_image_load_store_lod,
23 SPV_AMD_shader_explicit_vertex_parameter,
24 SPV_AMD_shader_trinary_minmax,
25 SPV_AMD_gpu_shader_half_float_fetch,
26 SPV_GOOGLE_hlsl_functionality1,
27 SPV_GOOGLE_user_type,
28 SPV_GOOGLE_decorate_string,
29 SPV_EXT_demote_to_helper_invocation,
30 SPV_EXT_descriptor_indexing,
31 SPV_EXT_fragment_fully_covered,
32 SPV_EXT_shader_stencil_export,
33 SPV_EXT_physical_storage_buffer,
34 SPV_EXT_shader_atomic_float_add,
35 SPV_EXT_shader_atomic_float_min_max,
36 SPV_EXT_shader_image_int64,
37 SPV_EXT_fragment_shader_interlock,
38 SPV_EXT_fragment_invocation_density,
39 SPV_EXT_shader_viewport_index_layer,
40 SPV_INTEL_loop_fuse,
41 SPV_INTEL_fpga_dsp_control,
42 SPV_INTEL_fpga_reg,
43 SPV_INTEL_fpga_memory_accesses,
44 SPV_INTEL_fpga_loop_controls,
45 SPV_INTEL_io_pipes,
46 SPV_INTEL_unstructured_loop_controls,
47 SPV_INTEL_blocking_pipes,
48 SPV_INTEL_device_side_avc_motion_estimation,
49 SPV_INTEL_fpga_memory_attributes,
50 SPV_INTEL_fp_fast_math_mode,
51 SPV_INTEL_media_block_io,
52 SPV_INTEL_shader_integer_functions2,
53 SPV_INTEL_subgroups,
54 SPV_INTEL_fpga_cluster_attributes,
55 SPV_INTEL_kernel_attributes,
56 SPV_INTEL_arbitrary_precision_integers,
57 SPV_KHR_8bit_storage,
58 SPV_KHR_shader_clock,
59 SPV_KHR_device_group,
60 SPV_KHR_16bit_storage,
61 SPV_KHR_variable_pointers,
62 SPV_KHR_no_integer_wrap_decoration,
63 SPV_KHR_subgroup_vote,
64 SPV_KHR_multiview,
65 SPV_KHR_shader_ballot,
66 SPV_KHR_vulkan_memory_model,
67 SPV_KHR_physical_storage_buffer,
68 SPV_KHR_workgroup_memory_explicit_layout,
69 SPV_KHR_fragment_shading_rate,
70 SPV_KHR_shader_atomic_counter_ops,
71 SPV_KHR_shader_draw_parameters,
72 SPV_KHR_storage_buffer_storage_class,
73 SPV_KHR_linkonce_odr,
74 SPV_KHR_terminate_invocation,
75 SPV_KHR_non_semantic_info,
76 SPV_KHR_post_depth_coverage,
77 SPV_KHR_expect_assume,
78 SPV_KHR_ray_tracing,
79 SPV_KHR_ray_query,
80 SPV_KHR_float_controls,
81 SPV_NV_viewport_array2,
82 SPV_NV_shader_subgroup_partitioned,
83 SPV_NVX_multiview_per_view_attributes,
84 SPV_NV_ray_tracing,
85 SPV_NV_shader_image_footprint,
86 SPV_NV_shading_rate,
87 SPV_NV_stereo_view_rendering,
88 SPV_NV_compute_shader_derivatives,
89 SPV_NV_shader_sm_builtins,
90 SPV_NV_mesh_shader,
91 SPV_NV_geometry_shader_passthrough,
92 SPV_NV_fragment_shader_barycentric,
93 SPV_NV_cooperative_matrix,
94 SPV_NV_sample_mask_override_coverage,
95 Matrix,
96 Shader,
97 Geometry,
98 Tessellation,
99 Addresses,
100 Linkage,
101 Kernel,
102 Vector16,
103 Float16Buffer,
104 Float16,
105 Float64,
106 Int64,
107 Int64Atomics,
108 ImageBasic,
109 ImageReadWrite,
110 ImageMipmap,
111 Pipes,
112 Groups,
113 DeviceEnqueue,
114 LiteralSampler,
115 AtomicStorage,
116 Int16,
117 TessellationPointSize,
118 GeometryPointSize,
119 ImageGatherExtended,
120 StorageImageMultisample,
121 UniformBufferArrayDynamicIndexing,
122 SampledImageArrayDynamicIndexing,
123 StorageBufferArrayDynamicIndexing,
124 StorageImageArrayDynamicIndexing,
125 ClipDistance,
126 CullDistance,
127 ImageCubeArray,
128 SampleRateShading,
129 ImageRect,
130 SampledRect,
131 GenericPointer,
132 Int8,
133 InputAttachment,
134 SparseResidency,
135 MinLod,
136 Sampled1D,
137 Image1D,
138 SampledCubeArray,
139 SampledBuffer,
140 ImageBuffer,
141 ImageMSArray,
142 StorageImageExtendedFormats,
143 ImageQuery,
144 DerivativeControl,
145 InterpolationFunction,
146 TransformFeedback,
147 GeometryStreams,
148 StorageImageReadWithoutFormat,
149 StorageImageWriteWithoutFormat,
150 MultiViewport,
151 SubgroupDispatch,
152 NamedBarrier,
153 PipeStorage,
154 GroupNonUniform,
155 GroupNonUniformVote,
156 GroupNonUniformArithmetic,
157 GroupNonUniformBallot,
158 GroupNonUniformShuffle,
159 GroupNonUniformShuffleRelative,
160 GroupNonUniformClustered,
161 GroupNonUniformQuad,
162 ShaderLayer,
163 ShaderViewportIndex,
164 FragmentShadingRateKHR,
165 SubgroupBallotKHR,
166 DrawParameters,
167 WorkgroupMemoryExplicitLayoutKHR,
168 WorkgroupMemoryExplicitLayout8BitAccessKHR,
169 WorkgroupMemoryExplicitLayout16BitAccessKHR,
170 SubgroupVoteKHR,
171 StorageBuffer16BitAccess,
172 StorageUniformBufferBlock16,
173 UniformAndStorageBuffer16BitAccess,
174 StorageUniform16,
175 StoragePushConstant16,
176 StorageInputOutput16,
177 DeviceGroup,
178 MultiView,
179 VariablePointersStorageBuffer,
180 VariablePointers,
181 AtomicStorageOps,
182 SampleMaskPostDepthCoverage,
183 StorageBuffer8BitAccess,
184 UniformAndStorageBuffer8BitAccess,
185 StoragePushConstant8,
186 DenormPreserve,
187 DenormFlushToZero,
188 SignedZeroInfNanPreserve,
189 RoundingModeRTE,
190 RoundingModeRTZ,
191 RayQueryProvisionalKHR,
192 RayQueryKHR,
193 RayTraversalPrimitiveCullingKHR,
194 RayTracingKHR,
195 Float16ImageAMD,
196 ImageGatherBiasLodAMD,
197 FragmentMaskAMD,
198 StencilExportEXT,
199 ImageReadWriteLodAMD,
200 Int64ImageEXT,
201 ShaderClockKHR,
202 SampleMaskOverrideCoverageNV,
203 GeometryShaderPassthroughNV,
204 ShaderViewportIndexLayerEXT,
205 ShaderViewportIndexLayerNV,
206 ShaderViewportMaskNV,
207 ShaderStereoViewNV,
208 PerViewAttributesNV,
209 FragmentFullyCoveredEXT,
210 MeshShadingNV,
211 ImageFootprintNV,
212 FragmentBarycentricNV,
213 ComputeDerivativeGroupQuadsNV,
214 FragmentDensityEXT,
215 ShadingRateNV,
216 GroupNonUniformPartitionedNV,
217 ShaderNonUniform,
218 ShaderNonUniformEXT,
219 RuntimeDescriptorArray,
220 RuntimeDescriptorArrayEXT,
221 InputAttachmentArrayDynamicIndexing,
222 InputAttachmentArrayDynamicIndexingEXT,
223 UniformTexelBufferArrayDynamicIndexing,
224 UniformTexelBufferArrayDynamicIndexingEXT,
225 StorageTexelBufferArrayDynamicIndexing,
226 StorageTexelBufferArrayDynamicIndexingEXT,
227 UniformBufferArrayNonUniformIndexing,
228 UniformBufferArrayNonUniformIndexingEXT,
229 SampledImageArrayNonUniformIndexing,
230 SampledImageArrayNonUniformIndexingEXT,
231 StorageBufferArrayNonUniformIndexing,
232 StorageBufferArrayNonUniformIndexingEXT,
233 StorageImageArrayNonUniformIndexing,
234 StorageImageArrayNonUniformIndexingEXT,
235 InputAttachmentArrayNonUniformIndexing,
236 InputAttachmentArrayNonUniformIndexingEXT,
237 UniformTexelBufferArrayNonUniformIndexing,
238 UniformTexelBufferArrayNonUniformIndexingEXT,
239 StorageTexelBufferArrayNonUniformIndexing,
240 StorageTexelBufferArrayNonUniformIndexingEXT,
241 RayTracingNV,
242 VulkanMemoryModel,
243 VulkanMemoryModelKHR,
244 VulkanMemoryModelDeviceScope,
245 VulkanMemoryModelDeviceScopeKHR,
246 PhysicalStorageBufferAddresses,
247 PhysicalStorageBufferAddressesEXT,
248 ComputeDerivativeGroupLinearNV,
249 RayTracingProvisionalKHR,
250 CooperativeMatrixNV,
251 FragmentShaderSampleInterlockEXT,
252 FragmentShaderShadingRateInterlockEXT,
253 ShaderSMBuiltinsNV,
254 FragmentShaderPixelInterlockEXT,
255 DemoteToHelperInvocationEXT,
256 SubgroupShuffleINTEL,
257 SubgroupBufferBlockIOINTEL,
258 SubgroupImageBlockIOINTEL,
259 SubgroupImageMediaBlockIOINTEL,
260 RoundToInfinityINTEL,
261 FloatingPointModeINTEL,
262 IntegerFunctions2INTEL,
263 FunctionPointersINTEL,
264 IndirectReferencesINTEL,
265 AsmINTEL,
266 AtomicFloat32MinMaxEXT,
267 AtomicFloat64MinMaxEXT,
268 AtomicFloat16MinMaxEXT,
269 VectorComputeINTEL,
270 VectorAnyINTEL,
271 ExpectAssumeKHR,
272 SubgroupAvcMotionEstimationINTEL,
273 SubgroupAvcMotionEstimationIntraINTEL,
274 SubgroupAvcMotionEstimationChromaINTEL,
275 VariableLengthArrayINTEL,
276 FunctionFloatControlINTEL,
277 FPGAMemoryAttributesINTEL,
278 FPFastMathModeINTEL,
279 ArbitraryPrecisionIntegersINTEL,
280 UnstructuredLoopControlsINTEL,
281 FPGALoopControlsINTEL,
282 KernelAttributesINTEL,
283 FPGAKernelAttributesINTEL,
284 FPGAMemoryAccessesINTEL,
285 FPGAClusterAttributesINTEL,
286 LoopFuseINTEL,
287 FPGABufferLocationINTEL,
288 USMStorageClassesINTEL,
289 IOPipesINTEL,
290 BlockingPipesINTEL,
291 FPGARegINTEL,
292 AtomicFloat32AddEXT,
293 AtomicFloat64AddEXT,
294 LongConstantCompositeINTEL,
295};
296
297pub usingnamespace CpuFeature.feature_set_fns(Feature);
298
299pub const all_features = blk: {
300 @setEvalBranchQuota(2000);
301 const len = @typeInfo(Feature).Enum.fields.len;
302 std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
303 var result: [len]CpuFeature = undefined;
304 result[@enumToInt(Feature.v1_1)] = .{
305 .llvm_name = null,
306 .description = "SPIR-V version 1.1",
307 .dependencies = featureSet(&[_]Feature{}),
308 };
309 result[@enumToInt(Feature.v1_2)] = .{
310 .llvm_name = null,
311 .description = "SPIR-V version 1.2",
312 .dependencies = featureSet(&[_]Feature{
313 .v1_1,
314 }),
315 };
316 result[@enumToInt(Feature.v1_3)] = .{
317 .llvm_name = null,
318 .description = "SPIR-V version 1.3",
319 .dependencies = featureSet(&[_]Feature{
320 .v1_2,
321 }),
322 };
323 result[@enumToInt(Feature.v1_4)] = .{
324 .llvm_name = null,
325 .description = "SPIR-V version 1.4",
326 .dependencies = featureSet(&[_]Feature{
327 .v1_3,
328 }),
329 };
330 result[@enumToInt(Feature.v1_5)] = .{
331 .llvm_name = null,
332 .description = "SPIR-V version 1.5",
333 .dependencies = featureSet(&[_]Feature{
334 .v1_4,
335 }),
336 };
337 result[@enumToInt(Feature.SPV_AMD_shader_fragment_mask)] = .{
338 .llvm_name = null,
339 .description = "SPIR-V extension SPV_AMD_shader_fragment_mask",
340 .dependencies = featureSet(&[_]Feature{}),
341 };
342 result[@enumToInt(Feature.SPV_AMD_gpu_shader_int16)] = .{
343 .llvm_name = null,
344 .description = "SPIR-V extension SPV_AMD_gpu_shader_int16",
345 .dependencies = featureSet(&[_]Feature{}),
346 };
347 result[@enumToInt(Feature.SPV_AMD_gpu_shader_half_float)] = .{
348 .llvm_name = null,
349 .description = "SPIR-V extension SPV_AMD_gpu_shader_half_float",
350 .dependencies = featureSet(&[_]Feature{}),
351 };
352 result[@enumToInt(Feature.SPV_AMD_texture_gather_bias_lod)] = .{
353 .llvm_name = null,
354 .description = "SPIR-V extension SPV_AMD_texture_gather_bias_lod",
355 .dependencies = featureSet(&[_]Feature{}),
356 };
357 result[@enumToInt(Feature.SPV_AMD_shader_ballot)] = .{
358 .llvm_name = null,
359 .description = "SPIR-V extension SPV_AMD_shader_ballot",
360 .dependencies = featureSet(&[_]Feature{}),
361 };
362 result[@enumToInt(Feature.SPV_AMD_gcn_shader)] = .{
363 .llvm_name = null,
364 .description = "SPIR-V extension SPV_AMD_gcn_shader",
365 .dependencies = featureSet(&[_]Feature{}),
366 };
367 result[@enumToInt(Feature.SPV_AMD_shader_image_load_store_lod)] = .{
368 .llvm_name = null,
369 .description = "SPIR-V extension SPV_AMD_shader_image_load_store_lod",
370 .dependencies = featureSet(&[_]Feature{}),
371 };
372 result[@enumToInt(Feature.SPV_AMD_shader_explicit_vertex_parameter)] = .{
373 .llvm_name = null,
374 .description = "SPIR-V extension SPV_AMD_shader_explicit_vertex_parameter",
375 .dependencies = featureSet(&[_]Feature{}),
376 };
377 result[@enumToInt(Feature.SPV_AMD_shader_trinary_minmax)] = .{
378 .llvm_name = null,
379 .description = "SPIR-V extension SPV_AMD_shader_trinary_minmax",
380 .dependencies = featureSet(&[_]Feature{}),
381 };
382 result[@enumToInt(Feature.SPV_AMD_gpu_shader_half_float_fetch)] = .{
383 .llvm_name = null,
384 .description = "SPIR-V extension SPV_AMD_gpu_shader_half_float_fetch",
385 .dependencies = featureSet(&[_]Feature{}),
386 };
387 result[@enumToInt(Feature.SPV_GOOGLE_hlsl_functionality1)] = .{
388 .llvm_name = null,
389 .description = "SPIR-V extension SPV_GOOGLE_hlsl_functionality1",
390 .dependencies = featureSet(&[_]Feature{}),
391 };
392 result[@enumToInt(Feature.SPV_GOOGLE_user_type)] = .{
393 .llvm_name = null,
394 .description = "SPIR-V extension SPV_GOOGLE_user_type",
395 .dependencies = featureSet(&[_]Feature{}),
396 };
397 result[@enumToInt(Feature.SPV_GOOGLE_decorate_string)] = .{
398 .llvm_name = null,
399 .description = "SPIR-V extension SPV_GOOGLE_decorate_string",
400 .dependencies = featureSet(&[_]Feature{}),
401 };
402 result[@enumToInt(Feature.SPV_EXT_demote_to_helper_invocation)] = .{
403 .llvm_name = null,
404 .description = "SPIR-V extension SPV_EXT_demote_to_helper_invocation",
405 .dependencies = featureSet(&[_]Feature{}),
406 };
407 result[@enumToInt(Feature.SPV_EXT_descriptor_indexing)] = .{
408 .llvm_name = null,
409 .description = "SPIR-V extension SPV_EXT_descriptor_indexing",
410 .dependencies = featureSet(&[_]Feature{}),
411 };
412 result[@enumToInt(Feature.SPV_EXT_fragment_fully_covered)] = .{
413 .llvm_name = null,
414 .description = "SPIR-V extension SPV_EXT_fragment_fully_covered",
415 .dependencies = featureSet(&[_]Feature{}),
416 };
417 result[@enumToInt(Feature.SPV_EXT_shader_stencil_export)] = .{
418 .llvm_name = null,
419 .description = "SPIR-V extension SPV_EXT_shader_stencil_export",
420 .dependencies = featureSet(&[_]Feature{}),
421 };
422 result[@enumToInt(Feature.SPV_EXT_physical_storage_buffer)] = .{
423 .llvm_name = null,
424 .description = "SPIR-V extension SPV_EXT_physical_storage_buffer",
425 .dependencies = featureSet(&[_]Feature{}),
426 };
427 result[@enumToInt(Feature.SPV_EXT_shader_atomic_float_add)] = .{
428 .llvm_name = null,
429 .description = "SPIR-V extension SPV_EXT_shader_atomic_float_add",
430 .dependencies = featureSet(&[_]Feature{}),
431 };
432 result[@enumToInt(Feature.SPV_EXT_shader_atomic_float_min_max)] = .{
433 .llvm_name = null,
434 .description = "SPIR-V extension SPV_EXT_shader_atomic_float_min_max",
435 .dependencies = featureSet(&[_]Feature{}),
436 };
437 result[@enumToInt(Feature.SPV_EXT_shader_image_int64)] = .{
438 .llvm_name = null,
439 .description = "SPIR-V extension SPV_EXT_shader_image_int64",
440 .dependencies = featureSet(&[_]Feature{}),
441 };
442 result[@enumToInt(Feature.SPV_EXT_fragment_shader_interlock)] = .{
443 .llvm_name = null,
444 .description = "SPIR-V extension SPV_EXT_fragment_shader_interlock",
445 .dependencies = featureSet(&[_]Feature{}),
446 };
447 result[@enumToInt(Feature.SPV_EXT_fragment_invocation_density)] = .{
448 .llvm_name = null,
449 .description = "SPIR-V extension SPV_EXT_fragment_invocation_density",
450 .dependencies = featureSet(&[_]Feature{}),
451 };
452 result[@enumToInt(Feature.SPV_EXT_shader_viewport_index_layer)] = .{
453 .llvm_name = null,
454 .description = "SPIR-V extension SPV_EXT_shader_viewport_index_layer",
455 .dependencies = featureSet(&[_]Feature{}),
456 };
457 result[@enumToInt(Feature.SPV_INTEL_loop_fuse)] = .{
458 .llvm_name = null,
459 .description = "SPIR-V extension SPV_INTEL_loop_fuse",
460 .dependencies = featureSet(&[_]Feature{}),
461 };
462 result[@enumToInt(Feature.SPV_INTEL_fpga_dsp_control)] = .{
463 .llvm_name = null,
464 .description = "SPIR-V extension SPV_INTEL_fpga_dsp_control",
465 .dependencies = featureSet(&[_]Feature{}),
466 };
467 result[@enumToInt(Feature.SPV_INTEL_fpga_reg)] = .{
468 .llvm_name = null,
469 .description = "SPIR-V extension SPV_INTEL_fpga_reg",
470 .dependencies = featureSet(&[_]Feature{}),
471 };
472 result[@enumToInt(Feature.SPV_INTEL_fpga_memory_accesses)] = .{
473 .llvm_name = null,
474 .description = "SPIR-V extension SPV_INTEL_fpga_memory_accesses",
475 .dependencies = featureSet(&[_]Feature{}),
476 };
477 result[@enumToInt(Feature.SPV_INTEL_fpga_loop_controls)] = .{
478 .llvm_name = null,
479 .description = "SPIR-V extension SPV_INTEL_fpga_loop_controls",
480 .dependencies = featureSet(&[_]Feature{}),
481 };
482 result[@enumToInt(Feature.SPV_INTEL_io_pipes)] = .{
483 .llvm_name = null,
484 .description = "SPIR-V extension SPV_INTEL_io_pipes",
485 .dependencies = featureSet(&[_]Feature{}),
486 };
487 result[@enumToInt(Feature.SPV_INTEL_unstructured_loop_controls)] = .{
488 .llvm_name = null,
489 .description = "SPIR-V extension SPV_INTEL_unstructured_loop_controls",
490 .dependencies = featureSet(&[_]Feature{}),
491 };
492 result[@enumToInt(Feature.SPV_INTEL_blocking_pipes)] = .{
493 .llvm_name = null,
494 .description = "SPIR-V extension SPV_INTEL_blocking_pipes",
495 .dependencies = featureSet(&[_]Feature{}),
496 };
497 result[@enumToInt(Feature.SPV_INTEL_device_side_avc_motion_estimation)] = .{
498 .llvm_name = null,
499 .description = "SPIR-V extension SPV_INTEL_device_side_avc_motion_estimation",
500 .dependencies = featureSet(&[_]Feature{}),
501 };
502 result[@enumToInt(Feature.SPV_INTEL_fpga_memory_attributes)] = .{
503 .llvm_name = null,
504 .description = "SPIR-V extension SPV_INTEL_fpga_memory_attributes",
505 .dependencies = featureSet(&[_]Feature{}),
506 };
507 result[@enumToInt(Feature.SPV_INTEL_fp_fast_math_mode)] = .{
508 .llvm_name = null,
509 .description = "SPIR-V extension SPV_INTEL_fp_fast_math_mode",
510 .dependencies = featureSet(&[_]Feature{}),
511 };
512 result[@enumToInt(Feature.SPV_INTEL_media_block_io)] = .{
513 .llvm_name = null,
514 .description = "SPIR-V extension SPV_INTEL_media_block_io",
515 .dependencies = featureSet(&[_]Feature{}),
516 };
517 result[@enumToInt(Feature.SPV_INTEL_shader_integer_functions2)] = .{
518 .llvm_name = null,
519 .description = "SPIR-V extension SPV_INTEL_shader_integer_functions2",
520 .dependencies = featureSet(&[_]Feature{}),
521 };
522 result[@enumToInt(Feature.SPV_INTEL_subgroups)] = .{
523 .llvm_name = null,
524 .description = "SPIR-V extension SPV_INTEL_subgroups",
525 .dependencies = featureSet(&[_]Feature{}),
526 };
527 result[@enumToInt(Feature.SPV_INTEL_fpga_cluster_attributes)] = .{
528 .llvm_name = null,
529 .description = "SPIR-V extension SPV_INTEL_fpga_cluster_attributes",
530 .dependencies = featureSet(&[_]Feature{}),
531 };
532 result[@enumToInt(Feature.SPV_INTEL_kernel_attributes)] = .{
533 .llvm_name = null,
534 .description = "SPIR-V extension SPV_INTEL_kernel_attributes",
535 .dependencies = featureSet(&[_]Feature{}),
536 };
537 result[@enumToInt(Feature.SPV_INTEL_arbitrary_precision_integers)] = .{
538 .llvm_name = null,
539 .description = "SPIR-V extension SPV_INTEL_arbitrary_precision_integers",
540 .dependencies = featureSet(&[_]Feature{}),
541 };
542 result[@enumToInt(Feature.SPV_KHR_8bit_storage)] = .{
543 .llvm_name = null,
544 .description = "SPIR-V extension SPV_KHR_8bit_storage",
545 .dependencies = featureSet(&[_]Feature{}),
546 };
547 result[@enumToInt(Feature.SPV_KHR_shader_clock)] = .{
548 .llvm_name = null,
549 .description = "SPIR-V extension SPV_KHR_shader_clock",
550 .dependencies = featureSet(&[_]Feature{}),
551 };
552 result[@enumToInt(Feature.SPV_KHR_device_group)] = .{
553 .llvm_name = null,
554 .description = "SPIR-V extension SPV_KHR_device_group",
555 .dependencies = featureSet(&[_]Feature{}),
556 };
557 result[@enumToInt(Feature.SPV_KHR_16bit_storage)] = .{
558 .llvm_name = null,
559 .description = "SPIR-V extension SPV_KHR_16bit_storage",
560 .dependencies = featureSet(&[_]Feature{}),
561 };
562 result[@enumToInt(Feature.SPV_KHR_variable_pointers)] = .{
563 .llvm_name = null,
564 .description = "SPIR-V extension SPV_KHR_variable_pointers",
565 .dependencies = featureSet(&[_]Feature{}),
566 };
567 result[@enumToInt(Feature.SPV_KHR_no_integer_wrap_decoration)] = .{
568 .llvm_name = null,
569 .description = "SPIR-V extension SPV_KHR_no_integer_wrap_decoration",
570 .dependencies = featureSet(&[_]Feature{}),
571 };
572 result[@enumToInt(Feature.SPV_KHR_subgroup_vote)] = .{
573 .llvm_name = null,
574 .description = "SPIR-V extension SPV_KHR_subgroup_vote",
575 .dependencies = featureSet(&[_]Feature{}),
576 };
577 result[@enumToInt(Feature.SPV_KHR_multiview)] = .{
578 .llvm_name = null,
579 .description = "SPIR-V extension SPV_KHR_multiview",
580 .dependencies = featureSet(&[_]Feature{}),
581 };
582 result[@enumToInt(Feature.SPV_KHR_shader_ballot)] = .{
583 .llvm_name = null,
584 .description = "SPIR-V extension SPV_KHR_shader_ballot",
585 .dependencies = featureSet(&[_]Feature{}),
586 };
587 result[@enumToInt(Feature.SPV_KHR_vulkan_memory_model)] = .{
588 .llvm_name = null,
589 .description = "SPIR-V extension SPV_KHR_vulkan_memory_model",
590 .dependencies = featureSet(&[_]Feature{}),
591 };
592 result[@enumToInt(Feature.SPV_KHR_physical_storage_buffer)] = .{
593 .llvm_name = null,
594 .description = "SPIR-V extension SPV_KHR_physical_storage_buffer",
595 .dependencies = featureSet(&[_]Feature{}),
596 };
597 result[@enumToInt(Feature.SPV_KHR_workgroup_memory_explicit_layout)] = .{
598 .llvm_name = null,
599 .description = "SPIR-V extension SPV_KHR_workgroup_memory_explicit_layout",
600 .dependencies = featureSet(&[_]Feature{}),
601 };
602 result[@enumToInt(Feature.SPV_KHR_fragment_shading_rate)] = .{
603 .llvm_name = null,
604 .description = "SPIR-V extension SPV_KHR_fragment_shading_rate",
605 .dependencies = featureSet(&[_]Feature{}),
606 };
607 result[@enumToInt(Feature.SPV_KHR_shader_atomic_counter_ops)] = .{
608 .llvm_name = null,
609 .description = "SPIR-V extension SPV_KHR_shader_atomic_counter_ops",
610 .dependencies = featureSet(&[_]Feature{}),
611 };
612 result[@enumToInt(Feature.SPV_KHR_shader_draw_parameters)] = .{
613 .llvm_name = null,
614 .description = "SPIR-V extension SPV_KHR_shader_draw_parameters",
615 .dependencies = featureSet(&[_]Feature{}),
616 };
617 result[@enumToInt(Feature.SPV_KHR_storage_buffer_storage_class)] = .{
618 .llvm_name = null,
619 .description = "SPIR-V extension SPV_KHR_storage_buffer_storage_class",
620 .dependencies = featureSet(&[_]Feature{}),
621 };
622 result[@enumToInt(Feature.SPV_KHR_linkonce_odr)] = .{
623 .llvm_name = null,
624 .description = "SPIR-V extension SPV_KHR_linkonce_odr",
625 .dependencies = featureSet(&[_]Feature{}),
626 };
627 result[@enumToInt(Feature.SPV_KHR_terminate_invocation)] = .{
628 .llvm_name = null,
629 .description = "SPIR-V extension SPV_KHR_terminate_invocation",
630 .dependencies = featureSet(&[_]Feature{}),
631 };
632 result[@enumToInt(Feature.SPV_KHR_non_semantic_info)] = .{
633 .llvm_name = null,
634 .description = "SPIR-V extension SPV_KHR_non_semantic_info",
635 .dependencies = featureSet(&[_]Feature{}),
636 };
637 result[@enumToInt(Feature.SPV_KHR_post_depth_coverage)] = .{
638 .llvm_name = null,
639 .description = "SPIR-V extension SPV_KHR_post_depth_coverage",
640 .dependencies = featureSet(&[_]Feature{}),
641 };
642 result[@enumToInt(Feature.SPV_KHR_expect_assume)] = .{
643 .llvm_name = null,
644 .description = "SPIR-V extension SPV_KHR_expect_assume",
645 .dependencies = featureSet(&[_]Feature{}),
646 };
647 result[@enumToInt(Feature.SPV_KHR_ray_tracing)] = .{
648 .llvm_name = null,
649 .description = "SPIR-V extension SPV_KHR_ray_tracing",
650 .dependencies = featureSet(&[_]Feature{}),
651 };
652 result[@enumToInt(Feature.SPV_KHR_ray_query)] = .{
653 .llvm_name = null,
654 .description = "SPIR-V extension SPV_KHR_ray_query",
655 .dependencies = featureSet(&[_]Feature{}),
656 };
657 result[@enumToInt(Feature.SPV_KHR_float_controls)] = .{
658 .llvm_name = null,
659 .description = "SPIR-V extension SPV_KHR_float_controls",
660 .dependencies = featureSet(&[_]Feature{}),
661 };
662 result[@enumToInt(Feature.SPV_NV_viewport_array2)] = .{
663 .llvm_name = null,
664 .description = "SPIR-V extension SPV_NV_viewport_array2",
665 .dependencies = featureSet(&[_]Feature{}),
666 };
667 result[@enumToInt(Feature.SPV_NV_shader_subgroup_partitioned)] = .{
668 .llvm_name = null,
669 .description = "SPIR-V extension SPV_NV_shader_subgroup_partitioned",
670 .dependencies = featureSet(&[_]Feature{}),
671 };
672 result[@enumToInt(Feature.SPV_NVX_multiview_per_view_attributes)] = .{
673 .llvm_name = null,
674 .description = "SPIR-V extension SPV_NVX_multiview_per_view_attributes",
675 .dependencies = featureSet(&[_]Feature{}),
676 };
677 result[@enumToInt(Feature.SPV_NV_ray_tracing)] = .{
678 .llvm_name = null,
679 .description = "SPIR-V extension SPV_NV_ray_tracing",
680 .dependencies = featureSet(&[_]Feature{}),
681 };
682 result[@enumToInt(Feature.SPV_NV_shader_image_footprint)] = .{
683 .llvm_name = null,
684 .description = "SPIR-V extension SPV_NV_shader_image_footprint",
685 .dependencies = featureSet(&[_]Feature{}),
686 };
687 result[@enumToInt(Feature.SPV_NV_shading_rate)] = .{
688 .llvm_name = null,
689 .description = "SPIR-V extension SPV_NV_shading_rate",
690 .dependencies = featureSet(&[_]Feature{}),
691 };
692 result[@enumToInt(Feature.SPV_NV_stereo_view_rendering)] = .{
693 .llvm_name = null,
694 .description = "SPIR-V extension SPV_NV_stereo_view_rendering",
695 .dependencies = featureSet(&[_]Feature{}),
696 };
697 result[@enumToInt(Feature.SPV_NV_compute_shader_derivatives)] = .{
698 .llvm_name = null,
699 .description = "SPIR-V extension SPV_NV_compute_shader_derivatives",
700 .dependencies = featureSet(&[_]Feature{}),
701 };
702 result[@enumToInt(Feature.SPV_NV_shader_sm_builtins)] = .{
703 .llvm_name = null,
704 .description = "SPIR-V extension SPV_NV_shader_sm_builtins",
705 .dependencies = featureSet(&[_]Feature{}),
706 };
707 result[@enumToInt(Feature.SPV_NV_mesh_shader)] = .{
708 .llvm_name = null,
709 .description = "SPIR-V extension SPV_NV_mesh_shader",
710 .dependencies = featureSet(&[_]Feature{}),
711 };
712 result[@enumToInt(Feature.SPV_NV_geometry_shader_passthrough)] = .{
713 .llvm_name = null,
714 .description = "SPIR-V extension SPV_NV_geometry_shader_passthrough",
715 .dependencies = featureSet(&[_]Feature{}),
716 };
717 result[@enumToInt(Feature.SPV_NV_fragment_shader_barycentric)] = .{
718 .llvm_name = null,
719 .description = "SPIR-V extension SPV_NV_fragment_shader_barycentric",
720 .dependencies = featureSet(&[_]Feature{}),
721 };
722 result[@enumToInt(Feature.SPV_NV_cooperative_matrix)] = .{
723 .llvm_name = null,
724 .description = "SPIR-V extension SPV_NV_cooperative_matrix",
725 .dependencies = featureSet(&[_]Feature{}),
726 };
727 result[@enumToInt(Feature.SPV_NV_sample_mask_override_coverage)] = .{
728 .llvm_name = null,
729 .description = "SPIR-V extension SPV_NV_sample_mask_override_coverage",
730 .dependencies = featureSet(&[_]Feature{}),
731 };
732 result[@enumToInt(Feature.Matrix)] = .{
733 .llvm_name = null,
734 .description = "Enable SPIR-V capability Matrix",
735 .dependencies = featureSet(&[_]Feature{
736 }),
737 };
738 result[@enumToInt(Feature.Shader)] = .{
739 .llvm_name = null,
740 .description = "Enable SPIR-V capability Shader",
741 .dependencies = featureSet(&[_]Feature{
742 .Matrix,
743 }),
744 };
745 result[@enumToInt(Feature.Geometry)] = .{
746 .llvm_name = null,
747 .description = "Enable SPIR-V capability Geometry",
748 .dependencies = featureSet(&[_]Feature{
749 .Shader,
750 }),
751 };
752 result[@enumToInt(Feature.Tessellation)] = .{
753 .llvm_name = null,
754 .description = "Enable SPIR-V capability Tessellation",
755 .dependencies = featureSet(&[_]Feature{
756 .Shader,
757 }),
758 };
759 result[@enumToInt(Feature.Addresses)] = .{
760 .llvm_name = null,
761 .description = "Enable SPIR-V capability Addresses",
762 .dependencies = featureSet(&[_]Feature{
763 }),
764 };
765 result[@enumToInt(Feature.Linkage)] = .{
766 .llvm_name = null,
767 .description = "Enable SPIR-V capability Linkage",
768 .dependencies = featureSet(&[_]Feature{
769 }),
770 };
771 result[@enumToInt(Feature.Kernel)] = .{
772 .llvm_name = null,
773 .description = "Enable SPIR-V capability Kernel",
774 .dependencies = featureSet(&[_]Feature{
775 }),
776 };
777 result[@enumToInt(Feature.Vector16)] = .{
778 .llvm_name = null,
779 .description = "Enable SPIR-V capability Vector16",
780 .dependencies = featureSet(&[_]Feature{
781 .Kernel,
782 }),
783 };
784 result[@enumToInt(Feature.Float16Buffer)] = .{
785 .llvm_name = null,
786 .description = "Enable SPIR-V capability Float16Buffer",
787 .dependencies = featureSet(&[_]Feature{
788 .Kernel,
789 }),
790 };
791 result[@enumToInt(Feature.Float16)] = .{
792 .llvm_name = null,
793 .description = "Enable SPIR-V capability Float16",
794 .dependencies = featureSet(&[_]Feature{
795 }),
796 };
797 result[@enumToInt(Feature.Float64)] = .{
798 .llvm_name = null,
799 .description = "Enable SPIR-V capability Float64",
800 .dependencies = featureSet(&[_]Feature{
801 }),
802 };
803 result[@enumToInt(Feature.Int64)] = .{
804 .llvm_name = null,
805 .description = "Enable SPIR-V capability Int64",
806 .dependencies = featureSet(&[_]Feature{
807 }),
808 };
809 result[@enumToInt(Feature.Int64Atomics)] = .{
810 .llvm_name = null,
811 .description = "Enable SPIR-V capability Int64Atomics",
812 .dependencies = featureSet(&[_]Feature{
813 .Int64,
814 }),
815 };
816 result[@enumToInt(Feature.ImageBasic)] = .{
817 .llvm_name = null,
818 .description = "Enable SPIR-V capability ImageBasic",
819 .dependencies = featureSet(&[_]Feature{
820 .Kernel,
821 }),
822 };
823 result[@enumToInt(Feature.ImageReadWrite)] = .{
824 .llvm_name = null,
825 .description = "Enable SPIR-V capability ImageReadWrite",
826 .dependencies = featureSet(&[_]Feature{
827 .ImageBasic,
828 }),
829 };
830 result[@enumToInt(Feature.ImageMipmap)] = .{
831 .llvm_name = null,
832 .description = "Enable SPIR-V capability ImageMipmap",
833 .dependencies = featureSet(&[_]Feature{
834 .ImageBasic,
835 }),
836 };
837 result[@enumToInt(Feature.Pipes)] = .{
838 .llvm_name = null,
839 .description = "Enable SPIR-V capability Pipes",
840 .dependencies = featureSet(&[_]Feature{
841 .Kernel,
842 }),
843 };
844 result[@enumToInt(Feature.Groups)] = .{
845 .llvm_name = null,
846 .description = "Enable SPIR-V capability Groups",
847 .dependencies = featureSet(&[_]Feature{
848 }),
849 };
850 result[@enumToInt(Feature.DeviceEnqueue)] = .{
851 .llvm_name = null,
852 .description = "Enable SPIR-V capability DeviceEnqueue",
853 .dependencies = featureSet(&[_]Feature{
854 .Kernel,
855 }),
856 };
857 result[@enumToInt(Feature.LiteralSampler)] = .{
858 .llvm_name = null,
859 .description = "Enable SPIR-V capability LiteralSampler",
860 .dependencies = featureSet(&[_]Feature{
861 .Kernel,
862 }),
863 };
864 result[@enumToInt(Feature.AtomicStorage)] = .{
865 .llvm_name = null,
866 .description = "Enable SPIR-V capability AtomicStorage",
867 .dependencies = featureSet(&[_]Feature{
868 .Shader,
869 }),
870 };
871 result[@enumToInt(Feature.Int16)] = .{
872 .llvm_name = null,
873 .description = "Enable SPIR-V capability Int16",
874 .dependencies = featureSet(&[_]Feature{
875 }),
876 };
877 result[@enumToInt(Feature.TessellationPointSize)] = .{
878 .llvm_name = null,
879 .description = "Enable SPIR-V capability TessellationPointSize",
880 .dependencies = featureSet(&[_]Feature{
881 .Tessellation,
882 }),
883 };
884 result[@enumToInt(Feature.GeometryPointSize)] = .{
885 .llvm_name = null,
886 .description = "Enable SPIR-V capability GeometryPointSize",
887 .dependencies = featureSet(&[_]Feature{
888 .Geometry,
889 }),
890 };
891 result[@enumToInt(Feature.ImageGatherExtended)] = .{
892 .llvm_name = null,
893 .description = "Enable SPIR-V capability ImageGatherExtended",
894 .dependencies = featureSet(&[_]Feature{
895 .Shader,
896 }),
897 };
898 result[@enumToInt(Feature.StorageImageMultisample)] = .{
899 .llvm_name = null,
900 .description = "Enable SPIR-V capability StorageImageMultisample",
901 .dependencies = featureSet(&[_]Feature{
902 .Shader,
903 }),
904 };
905 result[@enumToInt(Feature.UniformBufferArrayDynamicIndexing)] = .{
906 .llvm_name = null,
907 .description = "Enable SPIR-V capability UniformBufferArrayDynamicIndexing",
908 .dependencies = featureSet(&[_]Feature{
909 .Shader,
910 }),
911 };
912 result[@enumToInt(Feature.SampledImageArrayDynamicIndexing)] = .{
913 .llvm_name = null,
914 .description = "Enable SPIR-V capability SampledImageArrayDynamicIndexing",
915 .dependencies = featureSet(&[_]Feature{
916 .Shader,
917 }),
918 };
919 result[@enumToInt(Feature.StorageBufferArrayDynamicIndexing)] = .{
920 .llvm_name = null,
921 .description = "Enable SPIR-V capability StorageBufferArrayDynamicIndexing",
922 .dependencies = featureSet(&[_]Feature{
923 .Shader,
924 }),
925 };
926 result[@enumToInt(Feature.StorageImageArrayDynamicIndexing)] = .{
927 .llvm_name = null,
928 .description = "Enable SPIR-V capability StorageImageArrayDynamicIndexing",
929 .dependencies = featureSet(&[_]Feature{
930 .Shader,
931 }),
932 };
933 result[@enumToInt(Feature.ClipDistance)] = .{
934 .llvm_name = null,
935 .description = "Enable SPIR-V capability ClipDistance",
936 .dependencies = featureSet(&[_]Feature{
937 .Shader,
938 }),
939 };
940 result[@enumToInt(Feature.CullDistance)] = .{
941 .llvm_name = null,
942 .description = "Enable SPIR-V capability CullDistance",
943 .dependencies = featureSet(&[_]Feature{
944 .Shader,
945 }),
946 };
947 result[@enumToInt(Feature.ImageCubeArray)] = .{
948 .llvm_name = null,
949 .description = "Enable SPIR-V capability ImageCubeArray",
950 .dependencies = featureSet(&[_]Feature{
951 .SampledCubeArray,
952 }),
953 };
954 result[@enumToInt(Feature.SampleRateShading)] = .{
955 .llvm_name = null,
956 .description = "Enable SPIR-V capability SampleRateShading",
957 .dependencies = featureSet(&[_]Feature{
958 .Shader,
959 }),
960 };
961 result[@enumToInt(Feature.ImageRect)] = .{
962 .llvm_name = null,
963 .description = "Enable SPIR-V capability ImageRect",
964 .dependencies = featureSet(&[_]Feature{
965 .SampledRect,
966 }),
967 };
968 result[@enumToInt(Feature.SampledRect)] = .{
969 .llvm_name = null,
970 .description = "Enable SPIR-V capability SampledRect",
971 .dependencies = featureSet(&[_]Feature{
972 .Shader,
973 }),
974 };
975 result[@enumToInt(Feature.GenericPointer)] = .{
976 .llvm_name = null,
977 .description = "Enable SPIR-V capability GenericPointer",
978 .dependencies = featureSet(&[_]Feature{
979 .Addresses,
980 }),
981 };
982 result[@enumToInt(Feature.Int8)] = .{
983 .llvm_name = null,
984 .description = "Enable SPIR-V capability Int8",
985 .dependencies = featureSet(&[_]Feature{
986 }),
987 };
988 result[@enumToInt(Feature.InputAttachment)] = .{
989 .llvm_name = null,
990 .description = "Enable SPIR-V capability InputAttachment",
991 .dependencies = featureSet(&[_]Feature{
992 .Shader,
993 }),
994 };
995 result[@enumToInt(Feature.SparseResidency)] = .{
996 .llvm_name = null,
997 .description = "Enable SPIR-V capability SparseResidency",
998 .dependencies = featureSet(&[_]Feature{
999 .Shader,
1000 }),
1001 };
1002 result[@enumToInt(Feature.MinLod)] = .{
1003 .llvm_name = null,
1004 .description = "Enable SPIR-V capability MinLod",
1005 .dependencies = featureSet(&[_]Feature{
1006 .Shader,
1007 }),
1008 };
1009 result[@enumToInt(Feature.Sampled1D)] = .{
1010 .llvm_name = null,
1011 .description = "Enable SPIR-V capability Sampled1D",
1012 .dependencies = featureSet(&[_]Feature{
1013 }),
1014 };
1015 result[@enumToInt(Feature.Image1D)] = .{
1016 .llvm_name = null,
1017 .description = "Enable SPIR-V capability Image1D",
1018 .dependencies = featureSet(&[_]Feature{
1019 .Sampled1D,
1020 }),
1021 };
1022 result[@enumToInt(Feature.SampledCubeArray)] = .{
1023 .llvm_name = null,
1024 .description = "Enable SPIR-V capability SampledCubeArray",
1025 .dependencies = featureSet(&[_]Feature{
1026 .Shader,
1027 }),
1028 };
1029 result[@enumToInt(Feature.SampledBuffer)] = .{
1030 .llvm_name = null,
1031 .description = "Enable SPIR-V capability SampledBuffer",
1032 .dependencies = featureSet(&[_]Feature{
1033 }),
1034 };
1035 result[@enumToInt(Feature.ImageBuffer)] = .{
1036 .llvm_name = null,
1037 .description = "Enable SPIR-V capability ImageBuffer",
1038 .dependencies = featureSet(&[_]Feature{
1039 .SampledBuffer,
1040 }),
1041 };
1042 result[@enumToInt(Feature.ImageMSArray)] = .{
1043 .llvm_name = null,
1044 .description = "Enable SPIR-V capability ImageMSArray",
1045 .dependencies = featureSet(&[_]Feature{
1046 .Shader,
1047 }),
1048 };
1049 result[@enumToInt(Feature.StorageImageExtendedFormats)] = .{
1050 .llvm_name = null,
1051 .description = "Enable SPIR-V capability StorageImageExtendedFormats",
1052 .dependencies = featureSet(&[_]Feature{
1053 .Shader,
1054 }),
1055 };
1056 result[@enumToInt(Feature.ImageQuery)] = .{
1057 .llvm_name = null,
1058 .description = "Enable SPIR-V capability ImageQuery",
1059 .dependencies = featureSet(&[_]Feature{
1060 .Shader,
1061 }),
1062 };
1063 result[@enumToInt(Feature.DerivativeControl)] = .{
1064 .llvm_name = null,
1065 .description = "Enable SPIR-V capability DerivativeControl",
1066 .dependencies = featureSet(&[_]Feature{
1067 .Shader,
1068 }),
1069 };
1070 result[@enumToInt(Feature.InterpolationFunction)] = .{
1071 .llvm_name = null,
1072 .description = "Enable SPIR-V capability InterpolationFunction",
1073 .dependencies = featureSet(&[_]Feature{
1074 .Shader,
1075 }),
1076 };
1077 result[@enumToInt(Feature.TransformFeedback)] = .{
1078 .llvm_name = null,
1079 .description = "Enable SPIR-V capability TransformFeedback",
1080 .dependencies = featureSet(&[_]Feature{
1081 .Shader,
1082 }),
1083 };
1084 result[@enumToInt(Feature.GeometryStreams)] = .{
1085 .llvm_name = null,
1086 .description = "Enable SPIR-V capability GeometryStreams",
1087 .dependencies = featureSet(&[_]Feature{
1088 .Geometry,
1089 }),
1090 };
1091 result[@enumToInt(Feature.StorageImageReadWithoutFormat)] = .{
1092 .llvm_name = null,
1093 .description = "Enable SPIR-V capability StorageImageReadWithoutFormat",
1094 .dependencies = featureSet(&[_]Feature{
1095 .Shader,
1096 }),
1097 };
1098 result[@enumToInt(Feature.StorageImageWriteWithoutFormat)] = .{
1099 .llvm_name = null,
1100 .description = "Enable SPIR-V capability StorageImageWriteWithoutFormat",
1101 .dependencies = featureSet(&[_]Feature{
1102 .Shader,
1103 }),
1104 };
1105 result[@enumToInt(Feature.MultiViewport)] = .{
1106 .llvm_name = null,
1107 .description = "Enable SPIR-V capability MultiViewport",
1108 .dependencies = featureSet(&[_]Feature{
1109 .Geometry,
1110 }),
1111 };
1112 result[@enumToInt(Feature.SubgroupDispatch)] = .{
1113 .llvm_name = null,
1114 .description = "Enable SPIR-V capability SubgroupDispatch",
1115 .dependencies = featureSet(&[_]Feature{
1116 .v1_1,
1117 .DeviceEnqueue,
1118 }),
1119 };
1120 result[@enumToInt(Feature.NamedBarrier)] = .{
1121 .llvm_name = null,
1122 .description = "Enable SPIR-V capability NamedBarrier",
1123 .dependencies = featureSet(&[_]Feature{
1124 .v1_1,
1125 .Kernel,
1126 }),
1127 };
1128 result[@enumToInt(Feature.PipeStorage)] = .{
1129 .llvm_name = null,
1130 .description = "Enable SPIR-V capability PipeStorage",
1131 .dependencies = featureSet(&[_]Feature{
1132 .v1_1,
1133 .Pipes,
1134 }),
1135 };
1136 result[@enumToInt(Feature.GroupNonUniform)] = .{
1137 .llvm_name = null,
1138 .description = "Enable SPIR-V capability GroupNonUniform",
1139 .dependencies = featureSet(&[_]Feature{
1140 .v1_3,
1141 }),
1142 };
1143 result[@enumToInt(Feature.GroupNonUniformVote)] = .{
1144 .llvm_name = null,
1145 .description = "Enable SPIR-V capability GroupNonUniformVote",
1146 .dependencies = featureSet(&[_]Feature{
1147 .v1_3,
1148 .GroupNonUniform,
1149 }),
1150 };
1151 result[@enumToInt(Feature.GroupNonUniformArithmetic)] = .{
1152 .llvm_name = null,
1153 .description = "Enable SPIR-V capability GroupNonUniformArithmetic",
1154 .dependencies = featureSet(&[_]Feature{
1155 .v1_3,
1156 .GroupNonUniform,
1157 }),
1158 };
1159 result[@enumToInt(Feature.GroupNonUniformBallot)] = .{
1160 .llvm_name = null,
1161 .description = "Enable SPIR-V capability GroupNonUniformBallot",
1162 .dependencies = featureSet(&[_]Feature{
1163 .v1_3,
1164 .GroupNonUniform,
1165 }),
1166 };
1167 result[@enumToInt(Feature.GroupNonUniformShuffle)] = .{
1168 .llvm_name = null,
1169 .description = "Enable SPIR-V capability GroupNonUniformShuffle",
1170 .dependencies = featureSet(&[_]Feature{
1171 .v1_3,
1172 .GroupNonUniform,
1173 }),
1174 };
1175 result[@enumToInt(Feature.GroupNonUniformShuffleRelative)] = .{
1176 .llvm_name = null,
1177 .description = "Enable SPIR-V capability GroupNonUniformShuffleRelative",
1178 .dependencies = featureSet(&[_]Feature{
1179 .v1_3,
1180 .GroupNonUniform,
1181 }),
1182 };
1183 result[@enumToInt(Feature.GroupNonUniformClustered)] = .{
1184 .llvm_name = null,
1185 .description = "Enable SPIR-V capability GroupNonUniformClustered",
1186 .dependencies = featureSet(&[_]Feature{
1187 .v1_3,
1188 .GroupNonUniform,
1189 }),
1190 };
1191 result[@enumToInt(Feature.GroupNonUniformQuad)] = .{
1192 .llvm_name = null,
1193 .description = "Enable SPIR-V capability GroupNonUniformQuad",
1194 .dependencies = featureSet(&[_]Feature{
1195 .v1_3,
1196 .GroupNonUniform,
1197 }),
1198 };
1199 result[@enumToInt(Feature.ShaderLayer)] = .{
1200 .llvm_name = null,
1201 .description = "Enable SPIR-V capability ShaderLayer",
1202 .dependencies = featureSet(&[_]Feature{
1203 .v1_5,
1204 }),
1205 };
1206 result[@enumToInt(Feature.ShaderViewportIndex)] = .{
1207 .llvm_name = null,
1208 .description = "Enable SPIR-V capability ShaderViewportIndex",
1209 .dependencies = featureSet(&[_]Feature{
1210 .v1_5,
1211 }),
1212 };
1213 result[@enumToInt(Feature.FragmentShadingRateKHR)] = .{
1214 .llvm_name = null,
1215 .description = "Enable SPIR-V capability FragmentShadingRateKHR",
1216 .dependencies = featureSet(&[_]Feature{
1217 .Shader,
1218 }),
1219 };
1220 result[@enumToInt(Feature.SubgroupBallotKHR)] = .{
1221 .llvm_name = null,
1222 .description = "Enable SPIR-V capability SubgroupBallotKHR",
1223 .dependencies = featureSet(&[_]Feature{
1224 }),
1225 };
1226 result[@enumToInt(Feature.DrawParameters)] = .{
1227 .llvm_name = null,
1228 .description = "Enable SPIR-V capability DrawParameters",
1229 .dependencies = featureSet(&[_]Feature{
1230 .v1_3,
1231 .Shader,
1232 }),
1233 };
1234 result[@enumToInt(Feature.WorkgroupMemoryExplicitLayoutKHR)] = .{
1235 .llvm_name = null,
1236 .description = "Enable SPIR-V capability WorkgroupMemoryExplicitLayoutKHR",
1237 .dependencies = featureSet(&[_]Feature{
1238 .Shader,
1239 }),
1240 };
1241 result[@enumToInt(Feature.WorkgroupMemoryExplicitLayout8BitAccessKHR)] = .{
1242 .llvm_name = null,
1243 .description = "Enable SPIR-V capability WorkgroupMemoryExplicitLayout8BitAccessKHR",
1244 .dependencies = featureSet(&[_]Feature{
1245 .WorkgroupMemoryExplicitLayoutKHR,
1246 }),
1247 };
1248 result[@enumToInt(Feature.WorkgroupMemoryExplicitLayout16BitAccessKHR)] = .{
1249 .llvm_name = null,
1250 .description = "Enable SPIR-V capability WorkgroupMemoryExplicitLayout16BitAccessKHR",
1251 .dependencies = featureSet(&[_]Feature{
1252 .Shader,
1253 }),
1254 };
1255 result[@enumToInt(Feature.SubgroupVoteKHR)] = .{
1256 .llvm_name = null,
1257 .description = "Enable SPIR-V capability SubgroupVoteKHR",
1258 .dependencies = featureSet(&[_]Feature{
1259 }),
1260 };
1261 result[@enumToInt(Feature.StorageBuffer16BitAccess)] = .{
1262 .llvm_name = null,
1263 .description = "Enable SPIR-V capability StorageBuffer16BitAccess",
1264 .dependencies = featureSet(&[_]Feature{
1265 .v1_3,
1266 }),
1267 };
1268 result[@enumToInt(Feature.StorageUniformBufferBlock16)] = .{
1269 .llvm_name = null,
1270 .description = "Enable SPIR-V capability StorageUniformBufferBlock16",
1271 .dependencies = featureSet(&[_]Feature{
1272 .v1_3,
1273 }),
1274 };
1275 result[@enumToInt(Feature.UniformAndStorageBuffer16BitAccess)] = .{
1276 .llvm_name = null,
1277 .description = "Enable SPIR-V capability UniformAndStorageBuffer16BitAccess",
1278 .dependencies = featureSet(&[_]Feature{
1279 .v1_3,
1280 .StorageBuffer16BitAccess,
1281 .StorageUniformBufferBlock16,
1282 }),
1283 };
1284 result[@enumToInt(Feature.StorageUniform16)] = .{
1285 .llvm_name = null,
1286 .description = "Enable SPIR-V capability StorageUniform16",
1287 .dependencies = featureSet(&[_]Feature{
1288 .v1_3,
1289 .StorageBuffer16BitAccess,
1290 .StorageUniformBufferBlock16,
1291 }),
1292 };
1293 result[@enumToInt(Feature.StoragePushConstant16)] = .{
1294 .llvm_name = null,
1295 .description = "Enable SPIR-V capability StoragePushConstant16",
1296 .dependencies = featureSet(&[_]Feature{
1297 .v1_3,
1298 }),
1299 };
1300 result[@enumToInt(Feature.StorageInputOutput16)] = .{
1301 .llvm_name = null,
1302 .description = "Enable SPIR-V capability StorageInputOutput16",
1303 .dependencies = featureSet(&[_]Feature{
1304 .v1_3,
1305 }),
1306 };
1307 result[@enumToInt(Feature.DeviceGroup)] = .{
1308 .llvm_name = null,
1309 .description = "Enable SPIR-V capability DeviceGroup",
1310 .dependencies = featureSet(&[_]Feature{
1311 .v1_3,
1312 }),
1313 };
1314 result[@enumToInt(Feature.MultiView)] = .{
1315 .llvm_name = null,
1316 .description = "Enable SPIR-V capability MultiView",
1317 .dependencies = featureSet(&[_]Feature{
1318 .v1_3,
1319 .Shader,
1320 }),
1321 };
1322 result[@enumToInt(Feature.VariablePointersStorageBuffer)] = .{
1323 .llvm_name = null,
1324 .description = "Enable SPIR-V capability VariablePointersStorageBuffer",
1325 .dependencies = featureSet(&[_]Feature{
1326 .v1_3,
1327 .Shader,
1328 }),
1329 };
1330 result[@enumToInt(Feature.VariablePointers)] = .{
1331 .llvm_name = null,
1332 .description = "Enable SPIR-V capability VariablePointers",
1333 .dependencies = featureSet(&[_]Feature{
1334 .v1_3,
1335 .VariablePointersStorageBuffer,
1336 }),
1337 };
1338 result[@enumToInt(Feature.AtomicStorageOps)] = .{
1339 .llvm_name = null,
1340 .description = "Enable SPIR-V capability AtomicStorageOps",
1341 .dependencies = featureSet(&[_]Feature{
1342 }),
1343 };
1344 result[@enumToInt(Feature.SampleMaskPostDepthCoverage)] = .{
1345 .llvm_name = null,
1346 .description = "Enable SPIR-V capability SampleMaskPostDepthCoverage",
1347 .dependencies = featureSet(&[_]Feature{
1348 }),
1349 };
1350 result[@enumToInt(Feature.StorageBuffer8BitAccess)] = .{
1351 .llvm_name = null,
1352 .description = "Enable SPIR-V capability StorageBuffer8BitAccess",
1353 .dependencies = featureSet(&[_]Feature{
1354 .v1_5,
1355 }),
1356 };
1357 result[@enumToInt(Feature.UniformAndStorageBuffer8BitAccess)] = .{
1358 .llvm_name = null,
1359 .description = "Enable SPIR-V capability UniformAndStorageBuffer8BitAccess",
1360 .dependencies = featureSet(&[_]Feature{
1361 .v1_5,
1362 .StorageBuffer8BitAccess,
1363 }),
1364 };
1365 result[@enumToInt(Feature.StoragePushConstant8)] = .{
1366 .llvm_name = null,
1367 .description = "Enable SPIR-V capability StoragePushConstant8",
1368 .dependencies = featureSet(&[_]Feature{
1369 .v1_5,
1370 }),
1371 };
1372 result[@enumToInt(Feature.DenormPreserve)] = .{
1373 .llvm_name = null,
1374 .description = "Enable SPIR-V capability DenormPreserve",
1375 .dependencies = featureSet(&[_]Feature{
1376 .v1_4,
1377 }),
1378 };
1379 result[@enumToInt(Feature.DenormFlushToZero)] = .{
1380 .llvm_name = null,
1381 .description = "Enable SPIR-V capability DenormFlushToZero",
1382 .dependencies = featureSet(&[_]Feature{
1383 .v1_4,
1384 }),
1385 };
1386 result[@enumToInt(Feature.SignedZeroInfNanPreserve)] = .{
1387 .llvm_name = null,
1388 .description = "Enable SPIR-V capability SignedZeroInfNanPreserve",
1389 .dependencies = featureSet(&[_]Feature{
1390 .v1_4,
1391 }),
1392 };
1393 result[@enumToInt(Feature.RoundingModeRTE)] = .{
1394 .llvm_name = null,
1395 .description = "Enable SPIR-V capability RoundingModeRTE",
1396 .dependencies = featureSet(&[_]Feature{
1397 .v1_4,
1398 }),
1399 };
1400 result[@enumToInt(Feature.RoundingModeRTZ)] = .{
1401 .llvm_name = null,
1402 .description = "Enable SPIR-V capability RoundingModeRTZ",
1403 .dependencies = featureSet(&[_]Feature{
1404 .v1_4,
1405 }),
1406 };
1407 result[@enumToInt(Feature.RayQueryProvisionalKHR)] = .{
1408 .llvm_name = null,
1409 .description = "Enable SPIR-V capability RayQueryProvisionalKHR",
1410 .dependencies = featureSet(&[_]Feature{
1411 .Shader,
1412 }),
1413 };
1414 result[@enumToInt(Feature.RayQueryKHR)] = .{
1415 .llvm_name = null,
1416 .description = "Enable SPIR-V capability RayQueryKHR",
1417 .dependencies = featureSet(&[_]Feature{
1418 .Shader,
1419 }),
1420 };
1421 result[@enumToInt(Feature.RayTraversalPrimitiveCullingKHR)] = .{
1422 .llvm_name = null,
1423 .description = "Enable SPIR-V capability RayTraversalPrimitiveCullingKHR",
1424 .dependencies = featureSet(&[_]Feature{
1425 .RayQueryKHR,
1426 .RayTracingKHR,
1427 }),
1428 };
1429 result[@enumToInt(Feature.RayTracingKHR)] = .{
1430 .llvm_name = null,
1431 .description = "Enable SPIR-V capability RayTracingKHR",
1432 .dependencies = featureSet(&[_]Feature{
1433 .Shader,
1434 }),
1435 };
1436 result[@enumToInt(Feature.Float16ImageAMD)] = .{
1437 .llvm_name = null,
1438 .description = "Enable SPIR-V capability Float16ImageAMD",
1439 .dependencies = featureSet(&[_]Feature{
1440 .Shader,
1441 }),
1442 };
1443 result[@enumToInt(Feature.ImageGatherBiasLodAMD)] = .{
1444 .llvm_name = null,
1445 .description = "Enable SPIR-V capability ImageGatherBiasLodAMD",
1446 .dependencies = featureSet(&[_]Feature{
1447 .Shader,
1448 }),
1449 };
1450 result[@enumToInt(Feature.FragmentMaskAMD)] = .{
1451 .llvm_name = null,
1452 .description = "Enable SPIR-V capability FragmentMaskAMD",
1453 .dependencies = featureSet(&[_]Feature{
1454 .Shader,
1455 }),
1456 };
1457 result[@enumToInt(Feature.StencilExportEXT)] = .{
1458 .llvm_name = null,
1459 .description = "Enable SPIR-V capability StencilExportEXT",
1460 .dependencies = featureSet(&[_]Feature{
1461 .Shader,
1462 }),
1463 };
1464 result[@enumToInt(Feature.ImageReadWriteLodAMD)] = .{
1465 .llvm_name = null,
1466 .description = "Enable SPIR-V capability ImageReadWriteLodAMD",
1467 .dependencies = featureSet(&[_]Feature{
1468 .Shader,
1469 }),
1470 };
1471 result[@enumToInt(Feature.Int64ImageEXT)] = .{
1472 .llvm_name = null,
1473 .description = "Enable SPIR-V capability Int64ImageEXT",
1474 .dependencies = featureSet(&[_]Feature{
1475 .Shader,
1476 }),
1477 };
1478 result[@enumToInt(Feature.ShaderClockKHR)] = .{
1479 .llvm_name = null,
1480 .description = "Enable SPIR-V capability ShaderClockKHR",
1481 .dependencies = featureSet(&[_]Feature{
1482 .Shader,
1483 }),
1484 };
1485 result[@enumToInt(Feature.SampleMaskOverrideCoverageNV)] = .{
1486 .llvm_name = null,
1487 .description = "Enable SPIR-V capability SampleMaskOverrideCoverageNV",
1488 .dependencies = featureSet(&[_]Feature{
1489 .SampleRateShading,
1490 }),
1491 };
1492 result[@enumToInt(Feature.GeometryShaderPassthroughNV)] = .{
1493 .llvm_name = null,
1494 .description = "Enable SPIR-V capability GeometryShaderPassthroughNV",
1495 .dependencies = featureSet(&[_]Feature{
1496 .Geometry,
1497 }),
1498 };
1499 result[@enumToInt(Feature.ShaderViewportIndexLayerEXT)] = .{
1500 .llvm_name = null,
1501 .description = "Enable SPIR-V capability ShaderViewportIndexLayerEXT",
1502 .dependencies = featureSet(&[_]Feature{
1503 .MultiViewport,
1504 }),
1505 };
1506 result[@enumToInt(Feature.ShaderViewportIndexLayerNV)] = .{
1507 .llvm_name = null,
1508 .description = "Enable SPIR-V capability ShaderViewportIndexLayerNV",
1509 .dependencies = featureSet(&[_]Feature{
1510 .MultiViewport,
1511 }),
1512 };
1513 result[@enumToInt(Feature.ShaderViewportMaskNV)] = .{
1514 .llvm_name = null,
1515 .description = "Enable SPIR-V capability ShaderViewportMaskNV",
1516 .dependencies = featureSet(&[_]Feature{
1517 .ShaderViewportIndexLayerNV,
1518 }),
1519 };
1520 result[@enumToInt(Feature.ShaderStereoViewNV)] = .{
1521 .llvm_name = null,
1522 .description = "Enable SPIR-V capability ShaderStereoViewNV",
1523 .dependencies = featureSet(&[_]Feature{
1524 .ShaderViewportMaskNV,
1525 }),
1526 };
1527 result[@enumToInt(Feature.PerViewAttributesNV)] = .{
1528 .llvm_name = null,
1529 .description = "Enable SPIR-V capability PerViewAttributesNV",
1530 .dependencies = featureSet(&[_]Feature{
1531 .MultiView,
1532 }),
1533 };
1534 result[@enumToInt(Feature.FragmentFullyCoveredEXT)] = .{
1535 .llvm_name = null,
1536 .description = "Enable SPIR-V capability FragmentFullyCoveredEXT",
1537 .dependencies = featureSet(&[_]Feature{
1538 .Shader,
1539 }),
1540 };
1541 result[@enumToInt(Feature.MeshShadingNV)] = .{
1542 .llvm_name = null,
1543 .description = "Enable SPIR-V capability MeshShadingNV",
1544 .dependencies = featureSet(&[_]Feature{
1545 .Shader,
1546 }),
1547 };
1548 result[@enumToInt(Feature.ImageFootprintNV)] = .{
1549 .llvm_name = null,
1550 .description = "Enable SPIR-V capability ImageFootprintNV",
1551 .dependencies = featureSet(&[_]Feature{
1552 }),
1553 };
1554 result[@enumToInt(Feature.FragmentBarycentricNV)] = .{
1555 .llvm_name = null,
1556 .description = "Enable SPIR-V capability FragmentBarycentricNV",
1557 .dependencies = featureSet(&[_]Feature{
1558 }),
1559 };
1560 result[@enumToInt(Feature.ComputeDerivativeGroupQuadsNV)] = .{
1561 .llvm_name = null,
1562 .description = "Enable SPIR-V capability ComputeDerivativeGroupQuadsNV",
1563 .dependencies = featureSet(&[_]Feature{
1564 }),
1565 };
1566 result[@enumToInt(Feature.FragmentDensityEXT)] = .{
1567 .llvm_name = null,
1568 .description = "Enable SPIR-V capability FragmentDensityEXT",
1569 .dependencies = featureSet(&[_]Feature{
1570 .Shader,
1571 }),
1572 };
1573 result[@enumToInt(Feature.ShadingRateNV)] = .{
1574 .llvm_name = null,
1575 .description = "Enable SPIR-V capability ShadingRateNV",
1576 .dependencies = featureSet(&[_]Feature{
1577 .Shader,
1578 }),
1579 };
1580 result[@enumToInt(Feature.GroupNonUniformPartitionedNV)] = .{
1581 .llvm_name = null,
1582 .description = "Enable SPIR-V capability GroupNonUniformPartitionedNV",
1583 .dependencies = featureSet(&[_]Feature{
1584 }),
1585 };
1586 result[@enumToInt(Feature.ShaderNonUniform)] = .{
1587 .llvm_name = null,
1588 .description = "Enable SPIR-V capability ShaderNonUniform",
1589 .dependencies = featureSet(&[_]Feature{
1590 .v1_5,
1591 .Shader,
1592 }),
1593 };
1594 result[@enumToInt(Feature.ShaderNonUniformEXT)] = .{
1595 .llvm_name = null,
1596 .description = "Enable SPIR-V capability ShaderNonUniformEXT",
1597 .dependencies = featureSet(&[_]Feature{
1598 .v1_5,
1599 .Shader,
1600 }),
1601 };
1602 result[@enumToInt(Feature.RuntimeDescriptorArray)] = .{
1603 .llvm_name = null,
1604 .description = "Enable SPIR-V capability RuntimeDescriptorArray",
1605 .dependencies = featureSet(&[_]Feature{
1606 .v1_5,
1607 .Shader,
1608 }),
1609 };
1610 result[@enumToInt(Feature.RuntimeDescriptorArrayEXT)] = .{
1611 .llvm_name = null,
1612 .description = "Enable SPIR-V capability RuntimeDescriptorArrayEXT",
1613 .dependencies = featureSet(&[_]Feature{
1614 .v1_5,
1615 .Shader,
1616 }),
1617 };
1618 result[@enumToInt(Feature.InputAttachmentArrayDynamicIndexing)] = .{
1619 .llvm_name = null,
1620 .description = "Enable SPIR-V capability InputAttachmentArrayDynamicIndexing",
1621 .dependencies = featureSet(&[_]Feature{
1622 .v1_5,
1623 .InputAttachment,
1624 }),
1625 };
1626 result[@enumToInt(Feature.InputAttachmentArrayDynamicIndexingEXT)] = .{
1627 .llvm_name = null,
1628 .description = "Enable SPIR-V capability InputAttachmentArrayDynamicIndexingEXT",
1629 .dependencies = featureSet(&[_]Feature{
1630 .v1_5,
1631 .InputAttachment,
1632 }),
1633 };
1634 result[@enumToInt(Feature.UniformTexelBufferArrayDynamicIndexing)] = .{
1635 .llvm_name = null,
1636 .description = "Enable SPIR-V capability UniformTexelBufferArrayDynamicIndexing",
1637 .dependencies = featureSet(&[_]Feature{
1638 .v1_5,
1639 .SampledBuffer,
1640 }),
1641 };
1642 result[@enumToInt(Feature.UniformTexelBufferArrayDynamicIndexingEXT)] = .{
1643 .llvm_name = null,
1644 .description = "Enable SPIR-V capability UniformTexelBufferArrayDynamicIndexingEXT",
1645 .dependencies = featureSet(&[_]Feature{
1646 .v1_5,
1647 .SampledBuffer,
1648 }),
1649 };
1650 result[@enumToInt(Feature.StorageTexelBufferArrayDynamicIndexing)] = .{
1651 .llvm_name = null,
1652 .description = "Enable SPIR-V capability StorageTexelBufferArrayDynamicIndexing",
1653 .dependencies = featureSet(&[_]Feature{
1654 .v1_5,
1655 .ImageBuffer,
1656 }),
1657 };
1658 result[@enumToInt(Feature.StorageTexelBufferArrayDynamicIndexingEXT)] = .{
1659 .llvm_name = null,
1660 .description = "Enable SPIR-V capability StorageTexelBufferArrayDynamicIndexingEXT",
1661 .dependencies = featureSet(&[_]Feature{
1662 .v1_5,
1663 .ImageBuffer,
1664 }),
1665 };
1666 result[@enumToInt(Feature.UniformBufferArrayNonUniformIndexing)] = .{
1667 .llvm_name = null,
1668 .description = "Enable SPIR-V capability UniformBufferArrayNonUniformIndexing",
1669 .dependencies = featureSet(&[_]Feature{
1670 .v1_5,
1671 .ShaderNonUniform,
1672 }),
1673 };
1674 result[@enumToInt(Feature.UniformBufferArrayNonUniformIndexingEXT)] = .{
1675 .llvm_name = null,
1676 .description = "Enable SPIR-V capability UniformBufferArrayNonUniformIndexingEXT",
1677 .dependencies = featureSet(&[_]Feature{
1678 .v1_5,
1679 .ShaderNonUniform,
1680 }),
1681 };
1682 result[@enumToInt(Feature.SampledImageArrayNonUniformIndexing)] = .{
1683 .llvm_name = null,
1684 .description = "Enable SPIR-V capability SampledImageArrayNonUniformIndexing",
1685 .dependencies = featureSet(&[_]Feature{
1686 .v1_5,
1687 .ShaderNonUniform,
1688 }),
1689 };
1690 result[@enumToInt(Feature.SampledImageArrayNonUniformIndexingEXT)] = .{
1691 .llvm_name = null,
1692 .description = "Enable SPIR-V capability SampledImageArrayNonUniformIndexingEXT",
1693 .dependencies = featureSet(&[_]Feature{
1694 .v1_5,
1695 .ShaderNonUniform,
1696 }),
1697 };
1698 result[@enumToInt(Feature.StorageBufferArrayNonUniformIndexing)] = .{
1699 .llvm_name = null,
1700 .description = "Enable SPIR-V capability StorageBufferArrayNonUniformIndexing",
1701 .dependencies = featureSet(&[_]Feature{
1702 .v1_5,
1703 .ShaderNonUniform,
1704 }),
1705 };
1706 result[@enumToInt(Feature.StorageBufferArrayNonUniformIndexingEXT)] = .{
1707 .llvm_name = null,
1708 .description = "Enable SPIR-V capability StorageBufferArrayNonUniformIndexingEXT",
1709 .dependencies = featureSet(&[_]Feature{
1710 .v1_5,
1711 .ShaderNonUniform,
1712 }),
1713 };
1714 result[@enumToInt(Feature.StorageImageArrayNonUniformIndexing)] = .{
1715 .llvm_name = null,
1716 .description = "Enable SPIR-V capability StorageImageArrayNonUniformIndexing",
1717 .dependencies = featureSet(&[_]Feature{
1718 .v1_5,
1719 .ShaderNonUniform,
1720 }),
1721 };
1722 result[@enumToInt(Feature.StorageImageArrayNonUniformIndexingEXT)] = .{
1723 .llvm_name = null,
1724 .description = "Enable SPIR-V capability StorageImageArrayNonUniformIndexingEXT",
1725 .dependencies = featureSet(&[_]Feature{
1726 .v1_5,
1727 .ShaderNonUniform,
1728 }),
1729 };
1730 result[@enumToInt(Feature.InputAttachmentArrayNonUniformIndexing)] = .{
1731 .llvm_name = null,
1732 .description = "Enable SPIR-V capability InputAttachmentArrayNonUniformIndexing",
1733 .dependencies = featureSet(&[_]Feature{
1734 .v1_5,
1735 .InputAttachment,
1736 .ShaderNonUniform,
1737 }),
1738 };
1739 result[@enumToInt(Feature.InputAttachmentArrayNonUniformIndexingEXT)] = .{
1740 .llvm_name = null,
1741 .description = "Enable SPIR-V capability InputAttachmentArrayNonUniformIndexingEXT",
1742 .dependencies = featureSet(&[_]Feature{
1743 .v1_5,
1744 .InputAttachment,
1745 .ShaderNonUniform,
1746 }),
1747 };
1748 result[@enumToInt(Feature.UniformTexelBufferArrayNonUniformIndexing)] = .{
1749 .llvm_name = null,
1750 .description = "Enable SPIR-V capability UniformTexelBufferArrayNonUniformIndexing",
1751 .dependencies = featureSet(&[_]Feature{
1752 .v1_5,
1753 .SampledBuffer,
1754 .ShaderNonUniform,
1755 }),
1756 };
1757 result[@enumToInt(Feature.UniformTexelBufferArrayNonUniformIndexingEXT)] = .{
1758 .llvm_name = null,
1759 .description = "Enable SPIR-V capability UniformTexelBufferArrayNonUniformIndexingEXT",
1760 .dependencies = featureSet(&[_]Feature{
1761 .v1_5,
1762 .SampledBuffer,
1763 .ShaderNonUniform,
1764 }),
1765 };
1766 result[@enumToInt(Feature.StorageTexelBufferArrayNonUniformIndexing)] = .{
1767 .llvm_name = null,
1768 .description = "Enable SPIR-V capability StorageTexelBufferArrayNonUniformIndexing",
1769 .dependencies = featureSet(&[_]Feature{
1770 .v1_5,
1771 .ImageBuffer,
1772 .ShaderNonUniform,
1773 }),
1774 };
1775 result[@enumToInt(Feature.StorageTexelBufferArrayNonUniformIndexingEXT)] = .{
1776 .llvm_name = null,
1777 .description = "Enable SPIR-V capability StorageTexelBufferArrayNonUniformIndexingEXT",
1778 .dependencies = featureSet(&[_]Feature{
1779 .v1_5,
1780 .ImageBuffer,
1781 .ShaderNonUniform,
1782 }),
1783 };
1784 result[@enumToInt(Feature.RayTracingNV)] = .{
1785 .llvm_name = null,
1786 .description = "Enable SPIR-V capability RayTracingNV",
1787 .dependencies = featureSet(&[_]Feature{
1788 .Shader,
1789 }),
1790 };
1791 result[@enumToInt(Feature.VulkanMemoryModel)] = .{
1792 .llvm_name = null,
1793 .description = "Enable SPIR-V capability VulkanMemoryModel",
1794 .dependencies = featureSet(&[_]Feature{
1795 .v1_5,
1796 }),
1797 };
1798 result[@enumToInt(Feature.VulkanMemoryModelKHR)] = .{
1799 .llvm_name = null,
1800 .description = "Enable SPIR-V capability VulkanMemoryModelKHR",
1801 .dependencies = featureSet(&[_]Feature{
1802 .v1_5,
1803 }),
1804 };
1805 result[@enumToInt(Feature.VulkanMemoryModelDeviceScope)] = .{
1806 .llvm_name = null,
1807 .description = "Enable SPIR-V capability VulkanMemoryModelDeviceScope",
1808 .dependencies = featureSet(&[_]Feature{
1809 .v1_5,
1810 }),
1811 };
1812 result[@enumToInt(Feature.VulkanMemoryModelDeviceScopeKHR)] = .{
1813 .llvm_name = null,
1814 .description = "Enable SPIR-V capability VulkanMemoryModelDeviceScopeKHR",
1815 .dependencies = featureSet(&[_]Feature{
1816 .v1_5,
1817 }),
1818 };
1819 result[@enumToInt(Feature.PhysicalStorageBufferAddresses)] = .{
1820 .llvm_name = null,
1821 .description = "Enable SPIR-V capability PhysicalStorageBufferAddresses",
1822 .dependencies = featureSet(&[_]Feature{
1823 .v1_5,
1824 .Shader,
1825 }),
1826 };
1827 result[@enumToInt(Feature.PhysicalStorageBufferAddressesEXT)] = .{
1828 .llvm_name = null,
1829 .description = "Enable SPIR-V capability PhysicalStorageBufferAddressesEXT",
1830 .dependencies = featureSet(&[_]Feature{
1831 .v1_5,
1832 .Shader,
1833 }),
1834 };
1835 result[@enumToInt(Feature.ComputeDerivativeGroupLinearNV)] = .{
1836 .llvm_name = null,
1837 .description = "Enable SPIR-V capability ComputeDerivativeGroupLinearNV",
1838 .dependencies = featureSet(&[_]Feature{
1839 }),
1840 };
1841 result[@enumToInt(Feature.RayTracingProvisionalKHR)] = .{
1842 .llvm_name = null,
1843 .description = "Enable SPIR-V capability RayTracingProvisionalKHR",
1844 .dependencies = featureSet(&[_]Feature{
1845 .Shader,
1846 }),
1847 };
1848 result[@enumToInt(Feature.CooperativeMatrixNV)] = .{
1849 .llvm_name = null,
1850 .description = "Enable SPIR-V capability CooperativeMatrixNV",
1851 .dependencies = featureSet(&[_]Feature{
1852 .Shader,
1853 }),
1854 };
1855 result[@enumToInt(Feature.FragmentShaderSampleInterlockEXT)] = .{
1856 .llvm_name = null,
1857 .description = "Enable SPIR-V capability FragmentShaderSampleInterlockEXT",
1858 .dependencies = featureSet(&[_]Feature{
1859 .Shader,
1860 }),
1861 };
1862 result[@enumToInt(Feature.FragmentShaderShadingRateInterlockEXT)] = .{
1863 .llvm_name = null,
1864 .description = "Enable SPIR-V capability FragmentShaderShadingRateInterlockEXT",
1865 .dependencies = featureSet(&[_]Feature{
1866 .Shader,
1867 }),
1868 };
1869 result[@enumToInt(Feature.ShaderSMBuiltinsNV)] = .{
1870 .llvm_name = null,
1871 .description = "Enable SPIR-V capability ShaderSMBuiltinsNV",
1872 .dependencies = featureSet(&[_]Feature{
1873 .Shader,
1874 }),
1875 };
1876 result[@enumToInt(Feature.FragmentShaderPixelInterlockEXT)] = .{
1877 .llvm_name = null,
1878 .description = "Enable SPIR-V capability FragmentShaderPixelInterlockEXT",
1879 .dependencies = featureSet(&[_]Feature{
1880 .Shader,
1881 }),
1882 };
1883 result[@enumToInt(Feature.DemoteToHelperInvocationEXT)] = .{
1884 .llvm_name = null,
1885 .description = "Enable SPIR-V capability DemoteToHelperInvocationEXT",
1886 .dependencies = featureSet(&[_]Feature{
1887 .Shader,
1888 }),
1889 };
1890 result[@enumToInt(Feature.SubgroupShuffleINTEL)] = .{
1891 .llvm_name = null,
1892 .description = "Enable SPIR-V capability SubgroupShuffleINTEL",
1893 .dependencies = featureSet(&[_]Feature{
1894 }),
1895 };
1896 result[@enumToInt(Feature.SubgroupBufferBlockIOINTEL)] = .{
1897 .llvm_name = null,
1898 .description = "Enable SPIR-V capability SubgroupBufferBlockIOINTEL",
1899 .dependencies = featureSet(&[_]Feature{
1900 }),
1901 };
1902 result[@enumToInt(Feature.SubgroupImageBlockIOINTEL)] = .{
1903 .llvm_name = null,
1904 .description = "Enable SPIR-V capability SubgroupImageBlockIOINTEL",
1905 .dependencies = featureSet(&[_]Feature{
1906 }),
1907 };
1908 result[@enumToInt(Feature.SubgroupImageMediaBlockIOINTEL)] = .{
1909 .llvm_name = null,
1910 .description = "Enable SPIR-V capability SubgroupImageMediaBlockIOINTEL",
1911 .dependencies = featureSet(&[_]Feature{
1912 }),
1913 };
1914 result[@enumToInt(Feature.RoundToInfinityINTEL)] = .{
1915 .llvm_name = null,
1916 .description = "Enable SPIR-V capability RoundToInfinityINTEL",
1917 .dependencies = featureSet(&[_]Feature{
1918 }),
1919 };
1920 result[@enumToInt(Feature.FloatingPointModeINTEL)] = .{
1921 .llvm_name = null,
1922 .description = "Enable SPIR-V capability FloatingPointModeINTEL",
1923 .dependencies = featureSet(&[_]Feature{
1924 }),
1925 };
1926 result[@enumToInt(Feature.IntegerFunctions2INTEL)] = .{
1927 .llvm_name = null,
1928 .description = "Enable SPIR-V capability IntegerFunctions2INTEL",
1929 .dependencies = featureSet(&[_]Feature{
1930 .Shader,
1931 }),
1932 };
1933 result[@enumToInt(Feature.FunctionPointersINTEL)] = .{
1934 .llvm_name = null,
1935 .description = "Enable SPIR-V capability FunctionPointersINTEL",
1936 .dependencies = featureSet(&[_]Feature{
1937 }),
1938 };
1939 result[@enumToInt(Feature.IndirectReferencesINTEL)] = .{
1940 .llvm_name = null,
1941 .description = "Enable SPIR-V capability IndirectReferencesINTEL",
1942 .dependencies = featureSet(&[_]Feature{
1943 }),
1944 };
1945 result[@enumToInt(Feature.AsmINTEL)] = .{
1946 .llvm_name = null,
1947 .description = "Enable SPIR-V capability AsmINTEL",
1948 .dependencies = featureSet(&[_]Feature{
1949 }),
1950 };
1951 result[@enumToInt(Feature.AtomicFloat32MinMaxEXT)] = .{
1952 .llvm_name = null,
1953 .description = "Enable SPIR-V capability AtomicFloat32MinMaxEXT",
1954 .dependencies = featureSet(&[_]Feature{
1955 }),
1956 };
1957 result[@enumToInt(Feature.AtomicFloat64MinMaxEXT)] = .{
1958 .llvm_name = null,
1959 .description = "Enable SPIR-V capability AtomicFloat64MinMaxEXT",
1960 .dependencies = featureSet(&[_]Feature{
1961 }),
1962 };
1963 result[@enumToInt(Feature.AtomicFloat16MinMaxEXT)] = .{
1964 .llvm_name = null,
1965 .description = "Enable SPIR-V capability AtomicFloat16MinMaxEXT",
1966 .dependencies = featureSet(&[_]Feature{
1967 }),
1968 };
1969 result[@enumToInt(Feature.VectorComputeINTEL)] = .{
1970 .llvm_name = null,
1971 .description = "Enable SPIR-V capability VectorComputeINTEL",
1972 .dependencies = featureSet(&[_]Feature{
1973 .VectorAnyINTEL,
1974 }),
1975 };
1976 result[@enumToInt(Feature.VectorAnyINTEL)] = .{
1977 .llvm_name = null,
1978 .description = "Enable SPIR-V capability VectorAnyINTEL",
1979 .dependencies = featureSet(&[_]Feature{
1980 }),
1981 };
1982 result[@enumToInt(Feature.ExpectAssumeKHR)] = .{
1983 .llvm_name = null,
1984 .description = "Enable SPIR-V capability ExpectAssumeKHR",
1985 .dependencies = featureSet(&[_]Feature{
1986 }),
1987 };
1988 result[@enumToInt(Feature.SubgroupAvcMotionEstimationINTEL)] = .{
1989 .llvm_name = null,
1990 .description = "Enable SPIR-V capability SubgroupAvcMotionEstimationINTEL",
1991 .dependencies = featureSet(&[_]Feature{
1992 }),
1993 };
1994 result[@enumToInt(Feature.SubgroupAvcMotionEstimationIntraINTEL)] = .{
1995 .llvm_name = null,
1996 .description = "Enable SPIR-V capability SubgroupAvcMotionEstimationIntraINTEL",
1997 .dependencies = featureSet(&[_]Feature{
1998 }),
1999 };
2000 result[@enumToInt(Feature.SubgroupAvcMotionEstimationChromaINTEL)] = .{
2001 .llvm_name = null,
2002 .description = "Enable SPIR-V capability SubgroupAvcMotionEstimationChromaINTEL",
2003 .dependencies = featureSet(&[_]Feature{
2004 }),
2005 };
2006 result[@enumToInt(Feature.VariableLengthArrayINTEL)] = .{
2007 .llvm_name = null,
2008 .description = "Enable SPIR-V capability VariableLengthArrayINTEL",
2009 .dependencies = featureSet(&[_]Feature{
2010 }),
2011 };
2012 result[@enumToInt(Feature.FunctionFloatControlINTEL)] = .{
2013 .llvm_name = null,
2014 .description = "Enable SPIR-V capability FunctionFloatControlINTEL",
2015 .dependencies = featureSet(&[_]Feature{
2016 }),
2017 };
2018 result[@enumToInt(Feature.FPGAMemoryAttributesINTEL)] = .{
2019 .llvm_name = null,
2020 .description = "Enable SPIR-V capability FPGAMemoryAttributesINTEL",
2021 .dependencies = featureSet(&[_]Feature{
2022 }),
2023 };
2024 result[@enumToInt(Feature.FPFastMathModeINTEL)] = .{
2025 .llvm_name = null,
2026 .description = "Enable SPIR-V capability FPFastMathModeINTEL",
2027 .dependencies = featureSet(&[_]Feature{
2028 .Kernel,
2029 }),
2030 };
2031 result[@enumToInt(Feature.ArbitraryPrecisionIntegersINTEL)] = .{
2032 .llvm_name = null,
2033 .description = "Enable SPIR-V capability ArbitraryPrecisionIntegersINTEL",
2034 .dependencies = featureSet(&[_]Feature{
2035 }),
2036 };
2037 result[@enumToInt(Feature.UnstructuredLoopControlsINTEL)] = .{
2038 .llvm_name = null,
2039 .description = "Enable SPIR-V capability UnstructuredLoopControlsINTEL",
2040 .dependencies = featureSet(&[_]Feature{
2041 }),
2042 };
2043 result[@enumToInt(Feature.FPGALoopControlsINTEL)] = .{
2044 .llvm_name = null,
2045 .description = "Enable SPIR-V capability FPGALoopControlsINTEL",
2046 .dependencies = featureSet(&[_]Feature{
2047 }),
2048 };
2049 result[@enumToInt(Feature.KernelAttributesINTEL)] = .{
2050 .llvm_name = null,
2051 .description = "Enable SPIR-V capability KernelAttributesINTEL",
2052 .dependencies = featureSet(&[_]Feature{
2053 }),
2054 };
2055 result[@enumToInt(Feature.FPGAKernelAttributesINTEL)] = .{
2056 .llvm_name = null,
2057 .description = "Enable SPIR-V capability FPGAKernelAttributesINTEL",
2058 .dependencies = featureSet(&[_]Feature{
2059 }),
2060 };
2061 result[@enumToInt(Feature.FPGAMemoryAccessesINTEL)] = .{
2062 .llvm_name = null,
2063 .description = "Enable SPIR-V capability FPGAMemoryAccessesINTEL",
2064 .dependencies = featureSet(&[_]Feature{
2065 }),
2066 };
2067 result[@enumToInt(Feature.FPGAClusterAttributesINTEL)] = .{
2068 .llvm_name = null,
2069 .description = "Enable SPIR-V capability FPGAClusterAttributesINTEL",
2070 .dependencies = featureSet(&[_]Feature{
2071 }),
2072 };
2073 result[@enumToInt(Feature.LoopFuseINTEL)] = .{
2074 .llvm_name = null,
2075 .description = "Enable SPIR-V capability LoopFuseINTEL",
2076 .dependencies = featureSet(&[_]Feature{
2077 }),
2078 };
2079 result[@enumToInt(Feature.FPGABufferLocationINTEL)] = .{
2080 .llvm_name = null,
2081 .description = "Enable SPIR-V capability FPGABufferLocationINTEL",
2082 .dependencies = featureSet(&[_]Feature{
2083 }),
2084 };
2085 result[@enumToInt(Feature.USMStorageClassesINTEL)] = .{
2086 .llvm_name = null,
2087 .description = "Enable SPIR-V capability USMStorageClassesINTEL",
2088 .dependencies = featureSet(&[_]Feature{
2089 }),
2090 };
2091 result[@enumToInt(Feature.IOPipesINTEL)] = .{
2092 .llvm_name = null,
2093 .description = "Enable SPIR-V capability IOPipesINTEL",
2094 .dependencies = featureSet(&[_]Feature{
2095 }),
2096 };
2097 result[@enumToInt(Feature.BlockingPipesINTEL)] = .{
2098 .llvm_name = null,
2099 .description = "Enable SPIR-V capability BlockingPipesINTEL",
2100 .dependencies = featureSet(&[_]Feature{
2101 }),
2102 };
2103 result[@enumToInt(Feature.FPGARegINTEL)] = .{
2104 .llvm_name = null,
2105 .description = "Enable SPIR-V capability FPGARegINTEL",
2106 .dependencies = featureSet(&[_]Feature{
2107 }),
2108 };
2109 result[@enumToInt(Feature.AtomicFloat32AddEXT)] = .{
2110 .llvm_name = null,
2111 .description = "Enable SPIR-V capability AtomicFloat32AddEXT",
2112 .dependencies = featureSet(&[_]Feature{
2113 .Shader,
2114 }),
2115 };
2116 result[@enumToInt(Feature.AtomicFloat64AddEXT)] = .{
2117 .llvm_name = null,
2118 .description = "Enable SPIR-V capability AtomicFloat64AddEXT",
2119 .dependencies = featureSet(&[_]Feature{
2120 .Shader,
2121 }),
2122 };
2123 result[@enumToInt(Feature.LongConstantCompositeINTEL)] = .{
2124 .llvm_name = null,
2125 .description = "Enable SPIR-V capability LongConstantCompositeINTEL",
2126 .dependencies = featureSet(&[_]Feature{
2127 }),
2128 };
2129 const ti = @typeInfo(Feature);
2130 for (result) |*elem, i| {
2131 elem.index = i;
2132 elem.name = ti.Enum.fields[i].name;
2133 }
2134 break :blk result;
2135};