1 | const char* ExtensionToString(Extension extension) { |
2 | switch (extension) { |
3 | case Extension::kSPV_AMD_gcn_shader: |
4 | return "SPV_AMD_gcn_shader" ; |
5 | case Extension::kSPV_AMD_gpu_shader_half_float: |
6 | return "SPV_AMD_gpu_shader_half_float" ; |
7 | case Extension::kSPV_AMD_gpu_shader_half_float_fetch: |
8 | return "SPV_AMD_gpu_shader_half_float_fetch" ; |
9 | case Extension::kSPV_AMD_gpu_shader_int16: |
10 | return "SPV_AMD_gpu_shader_int16" ; |
11 | case Extension::kSPV_AMD_shader_ballot: |
12 | return "SPV_AMD_shader_ballot" ; |
13 | case Extension::kSPV_AMD_shader_explicit_vertex_parameter: |
14 | return "SPV_AMD_shader_explicit_vertex_parameter" ; |
15 | case Extension::kSPV_AMD_shader_fragment_mask: |
16 | return "SPV_AMD_shader_fragment_mask" ; |
17 | case Extension::kSPV_AMD_shader_image_load_store_lod: |
18 | return "SPV_AMD_shader_image_load_store_lod" ; |
19 | case Extension::kSPV_AMD_shader_trinary_minmax: |
20 | return "SPV_AMD_shader_trinary_minmax" ; |
21 | case Extension::kSPV_AMD_texture_gather_bias_lod: |
22 | return "SPV_AMD_texture_gather_bias_lod" ; |
23 | case Extension::kSPV_EXT_demote_to_helper_invocation: |
24 | return "SPV_EXT_demote_to_helper_invocation" ; |
25 | case Extension::kSPV_EXT_descriptor_indexing: |
26 | return "SPV_EXT_descriptor_indexing" ; |
27 | case Extension::kSPV_EXT_fragment_fully_covered: |
28 | return "SPV_EXT_fragment_fully_covered" ; |
29 | case Extension::kSPV_EXT_fragment_invocation_density: |
30 | return "SPV_EXT_fragment_invocation_density" ; |
31 | case Extension::kSPV_EXT_fragment_shader_interlock: |
32 | return "SPV_EXT_fragment_shader_interlock" ; |
33 | case Extension::kSPV_EXT_physical_storage_buffer: |
34 | return "SPV_EXT_physical_storage_buffer" ; |
35 | case Extension::kSPV_EXT_shader_stencil_export: |
36 | return "SPV_EXT_shader_stencil_export" ; |
37 | case Extension::kSPV_EXT_shader_viewport_index_layer: |
38 | return "SPV_EXT_shader_viewport_index_layer" ; |
39 | case Extension::kSPV_GOOGLE_decorate_string: |
40 | return "SPV_GOOGLE_decorate_string" ; |
41 | case Extension::kSPV_GOOGLE_hlsl_functionality1: |
42 | return "SPV_GOOGLE_hlsl_functionality1" ; |
43 | case Extension::kSPV_GOOGLE_user_type: |
44 | return "SPV_GOOGLE_user_type" ; |
45 | case Extension::kSPV_INTEL_device_side_avc_motion_estimation: |
46 | return "SPV_INTEL_device_side_avc_motion_estimation" ; |
47 | case Extension::kSPV_INTEL_media_block_io: |
48 | return "SPV_INTEL_media_block_io" ; |
49 | case Extension::kSPV_INTEL_shader_integer_functions2: |
50 | return "SPV_INTEL_shader_integer_functions2" ; |
51 | case Extension::kSPV_INTEL_subgroups: |
52 | return "SPV_INTEL_subgroups" ; |
53 | case Extension::kSPV_KHR_16bit_storage: |
54 | return "SPV_KHR_16bit_storage" ; |
55 | case Extension::kSPV_KHR_8bit_storage: |
56 | return "SPV_KHR_8bit_storage" ; |
57 | case Extension::kSPV_KHR_device_group: |
58 | return "SPV_KHR_device_group" ; |
59 | case Extension::kSPV_KHR_float_controls: |
60 | return "SPV_KHR_float_controls" ; |
61 | case Extension::kSPV_KHR_multiview: |
62 | return "SPV_KHR_multiview" ; |
63 | case Extension::kSPV_KHR_no_integer_wrap_decoration: |
64 | return "SPV_KHR_no_integer_wrap_decoration" ; |
65 | case Extension::kSPV_KHR_non_semantic_info: |
66 | return "SPV_KHR_non_semantic_info" ; |
67 | case Extension::kSPV_KHR_physical_storage_buffer: |
68 | return "SPV_KHR_physical_storage_buffer" ; |
69 | case Extension::kSPV_KHR_post_depth_coverage: |
70 | return "SPV_KHR_post_depth_coverage" ; |
71 | case Extension::kSPV_KHR_ray_query: |
72 | return "SPV_KHR_ray_query" ; |
73 | case Extension::kSPV_KHR_ray_tracing: |
74 | return "SPV_KHR_ray_tracing" ; |
75 | case Extension::kSPV_KHR_shader_atomic_counter_ops: |
76 | return "SPV_KHR_shader_atomic_counter_ops" ; |
77 | case Extension::kSPV_KHR_shader_ballot: |
78 | return "SPV_KHR_shader_ballot" ; |
79 | case Extension::kSPV_KHR_shader_clock: |
80 | return "SPV_KHR_shader_clock" ; |
81 | case Extension::kSPV_KHR_shader_draw_parameters: |
82 | return "SPV_KHR_shader_draw_parameters" ; |
83 | case Extension::kSPV_KHR_storage_buffer_storage_class: |
84 | return "SPV_KHR_storage_buffer_storage_class" ; |
85 | case Extension::kSPV_KHR_subgroup_vote: |
86 | return "SPV_KHR_subgroup_vote" ; |
87 | case Extension::kSPV_KHR_variable_pointers: |
88 | return "SPV_KHR_variable_pointers" ; |
89 | case Extension::kSPV_KHR_vulkan_memory_model: |
90 | return "SPV_KHR_vulkan_memory_model" ; |
91 | case Extension::kSPV_NVX_multiview_per_view_attributes: |
92 | return "SPV_NVX_multiview_per_view_attributes" ; |
93 | case Extension::kSPV_NV_compute_shader_derivatives: |
94 | return "SPV_NV_compute_shader_derivatives" ; |
95 | case Extension::kSPV_NV_cooperative_matrix: |
96 | return "SPV_NV_cooperative_matrix" ; |
97 | case Extension::kSPV_NV_fragment_shader_barycentric: |
98 | return "SPV_NV_fragment_shader_barycentric" ; |
99 | case Extension::kSPV_NV_geometry_shader_passthrough: |
100 | return "SPV_NV_geometry_shader_passthrough" ; |
101 | case Extension::kSPV_NV_mesh_shader: |
102 | return "SPV_NV_mesh_shader" ; |
103 | case Extension::kSPV_NV_ray_tracing: |
104 | return "SPV_NV_ray_tracing" ; |
105 | case Extension::kSPV_NV_sample_mask_override_coverage: |
106 | return "SPV_NV_sample_mask_override_coverage" ; |
107 | case Extension::kSPV_NV_shader_image_footprint: |
108 | return "SPV_NV_shader_image_footprint" ; |
109 | case Extension::kSPV_NV_shader_sm_builtins: |
110 | return "SPV_NV_shader_sm_builtins" ; |
111 | case Extension::kSPV_NV_shader_subgroup_partitioned: |
112 | return "SPV_NV_shader_subgroup_partitioned" ; |
113 | case Extension::kSPV_NV_shading_rate: |
114 | return "SPV_NV_shading_rate" ; |
115 | case Extension::kSPV_NV_stereo_view_rendering: |
116 | return "SPV_NV_stereo_view_rendering" ; |
117 | case Extension::kSPV_NV_viewport_array2: |
118 | return "SPV_NV_viewport_array2" ; |
119 | case Extension::kSPV_VALIDATOR_ignore_type_decl_unique: |
120 | return "SPV_VALIDATOR_ignore_type_decl_unique" ; |
121 | }; |
122 | |
123 | return "" ; |
124 | } |
125 | |
126 | |
127 | bool GetExtensionFromString(const char* str, Extension* extension) { |
128 | static const char* known_ext_strs[] = { "SPV_AMD_gcn_shader" , "SPV_AMD_gpu_shader_half_float" , "SPV_AMD_gpu_shader_half_float_fetch" , "SPV_AMD_gpu_shader_int16" , "SPV_AMD_shader_ballot" , "SPV_AMD_shader_explicit_vertex_parameter" , "SPV_AMD_shader_fragment_mask" , "SPV_AMD_shader_image_load_store_lod" , "SPV_AMD_shader_trinary_minmax" , "SPV_AMD_texture_gather_bias_lod" , "SPV_EXT_demote_to_helper_invocation" , "SPV_EXT_descriptor_indexing" , "SPV_EXT_fragment_fully_covered" , "SPV_EXT_fragment_invocation_density" , "SPV_EXT_fragment_shader_interlock" , "SPV_EXT_physical_storage_buffer" , "SPV_EXT_shader_stencil_export" , "SPV_EXT_shader_viewport_index_layer" , "SPV_GOOGLE_decorate_string" , "SPV_GOOGLE_hlsl_functionality1" , "SPV_GOOGLE_user_type" , "SPV_INTEL_device_side_avc_motion_estimation" , "SPV_INTEL_media_block_io" , "SPV_INTEL_shader_integer_functions2" , "SPV_INTEL_subgroups" , "SPV_KHR_16bit_storage" , "SPV_KHR_8bit_storage" , "SPV_KHR_device_group" , "SPV_KHR_float_controls" , "SPV_KHR_multiview" , "SPV_KHR_no_integer_wrap_decoration" , "SPV_KHR_non_semantic_info" , "SPV_KHR_physical_storage_buffer" , "SPV_KHR_post_depth_coverage" , "SPV_KHR_ray_query" , "SPV_KHR_ray_tracing" , "SPV_KHR_shader_atomic_counter_ops" , "SPV_KHR_shader_ballot" , "SPV_KHR_shader_clock" , "SPV_KHR_shader_draw_parameters" , "SPV_KHR_storage_buffer_storage_class" , "SPV_KHR_subgroup_vote" , "SPV_KHR_variable_pointers" , "SPV_KHR_vulkan_memory_model" , "SPV_NVX_multiview_per_view_attributes" , "SPV_NV_compute_shader_derivatives" , "SPV_NV_cooperative_matrix" , "SPV_NV_fragment_shader_barycentric" , "SPV_NV_geometry_shader_passthrough" , "SPV_NV_mesh_shader" , "SPV_NV_ray_tracing" , "SPV_NV_sample_mask_override_coverage" , "SPV_NV_shader_image_footprint" , "SPV_NV_shader_sm_builtins" , "SPV_NV_shader_subgroup_partitioned" , "SPV_NV_shading_rate" , "SPV_NV_stereo_view_rendering" , "SPV_NV_viewport_array2" , "SPV_VALIDATOR_ignore_type_decl_unique" }; |
129 | static const Extension known_ext_ids[] = { Extension::kSPV_AMD_gcn_shader, Extension::kSPV_AMD_gpu_shader_half_float, Extension::kSPV_AMD_gpu_shader_half_float_fetch, Extension::kSPV_AMD_gpu_shader_int16, Extension::kSPV_AMD_shader_ballot, Extension::kSPV_AMD_shader_explicit_vertex_parameter, Extension::kSPV_AMD_shader_fragment_mask, Extension::kSPV_AMD_shader_image_load_store_lod, Extension::kSPV_AMD_shader_trinary_minmax, Extension::kSPV_AMD_texture_gather_bias_lod, Extension::kSPV_EXT_demote_to_helper_invocation, Extension::kSPV_EXT_descriptor_indexing, Extension::kSPV_EXT_fragment_fully_covered, Extension::kSPV_EXT_fragment_invocation_density, Extension::kSPV_EXT_fragment_shader_interlock, Extension::kSPV_EXT_physical_storage_buffer, Extension::kSPV_EXT_shader_stencil_export, Extension::kSPV_EXT_shader_viewport_index_layer, Extension::kSPV_GOOGLE_decorate_string, Extension::kSPV_GOOGLE_hlsl_functionality1, Extension::kSPV_GOOGLE_user_type, Extension::kSPV_INTEL_device_side_avc_motion_estimation, Extension::kSPV_INTEL_media_block_io, Extension::kSPV_INTEL_shader_integer_functions2, Extension::kSPV_INTEL_subgroups, Extension::kSPV_KHR_16bit_storage, Extension::kSPV_KHR_8bit_storage, Extension::kSPV_KHR_device_group, Extension::kSPV_KHR_float_controls, Extension::kSPV_KHR_multiview, Extension::kSPV_KHR_no_integer_wrap_decoration, Extension::kSPV_KHR_non_semantic_info, Extension::kSPV_KHR_physical_storage_buffer, Extension::kSPV_KHR_post_depth_coverage, Extension::kSPV_KHR_ray_query, Extension::kSPV_KHR_ray_tracing, Extension::kSPV_KHR_shader_atomic_counter_ops, Extension::kSPV_KHR_shader_ballot, Extension::kSPV_KHR_shader_clock, Extension::kSPV_KHR_shader_draw_parameters, Extension::kSPV_KHR_storage_buffer_storage_class, Extension::kSPV_KHR_subgroup_vote, Extension::kSPV_KHR_variable_pointers, Extension::kSPV_KHR_vulkan_memory_model, Extension::kSPV_NVX_multiview_per_view_attributes, Extension::kSPV_NV_compute_shader_derivatives, Extension::kSPV_NV_cooperative_matrix, Extension::kSPV_NV_fragment_shader_barycentric, Extension::kSPV_NV_geometry_shader_passthrough, Extension::kSPV_NV_mesh_shader, Extension::kSPV_NV_ray_tracing, Extension::kSPV_NV_sample_mask_override_coverage, Extension::kSPV_NV_shader_image_footprint, Extension::kSPV_NV_shader_sm_builtins, Extension::kSPV_NV_shader_subgroup_partitioned, Extension::kSPV_NV_shading_rate, Extension::kSPV_NV_stereo_view_rendering, Extension::kSPV_NV_viewport_array2, Extension::kSPV_VALIDATOR_ignore_type_decl_unique }; |
130 | const auto b = std::begin(known_ext_strs); |
131 | const auto e = std::end(known_ext_strs); |
132 | const auto found = std::equal_range( |
133 | b, e, str, [](const char* str1, const char* str2) { |
134 | return std::strcmp(str1, str2) < 0; |
135 | }); |
136 | if (found.first == e || found.first == found.second) return false; |
137 | |
138 | *extension = known_ext_ids[found.first - b]; |
139 | return true; |
140 | } |
141 | |
142 | |
143 | const char* CapabilityToString(SpvCapability capability) { |
144 | switch (capability) { |
145 | case SpvCapabilityMatrix: |
146 | return "Matrix" ; |
147 | case SpvCapabilityShader: |
148 | return "Shader" ; |
149 | case SpvCapabilityGeometry: |
150 | return "Geometry" ; |
151 | case SpvCapabilityTessellation: |
152 | return "Tessellation" ; |
153 | case SpvCapabilityAddresses: |
154 | return "Addresses" ; |
155 | case SpvCapabilityLinkage: |
156 | return "Linkage" ; |
157 | case SpvCapabilityKernel: |
158 | return "Kernel" ; |
159 | case SpvCapabilityVector16: |
160 | return "Vector16" ; |
161 | case SpvCapabilityFloat16Buffer: |
162 | return "Float16Buffer" ; |
163 | case SpvCapabilityFloat16: |
164 | return "Float16" ; |
165 | case SpvCapabilityFloat64: |
166 | return "Float64" ; |
167 | case SpvCapabilityInt64: |
168 | return "Int64" ; |
169 | case SpvCapabilityInt64Atomics: |
170 | return "Int64Atomics" ; |
171 | case SpvCapabilityImageBasic: |
172 | return "ImageBasic" ; |
173 | case SpvCapabilityImageReadWrite: |
174 | return "ImageReadWrite" ; |
175 | case SpvCapabilityImageMipmap: |
176 | return "ImageMipmap" ; |
177 | case SpvCapabilityPipes: |
178 | return "Pipes" ; |
179 | case SpvCapabilityGroups: |
180 | return "Groups" ; |
181 | case SpvCapabilityDeviceEnqueue: |
182 | return "DeviceEnqueue" ; |
183 | case SpvCapabilityLiteralSampler: |
184 | return "LiteralSampler" ; |
185 | case SpvCapabilityAtomicStorage: |
186 | return "AtomicStorage" ; |
187 | case SpvCapabilityInt16: |
188 | return "Int16" ; |
189 | case SpvCapabilityTessellationPointSize: |
190 | return "TessellationPointSize" ; |
191 | case SpvCapabilityGeometryPointSize: |
192 | return "GeometryPointSize" ; |
193 | case SpvCapabilityImageGatherExtended: |
194 | return "ImageGatherExtended" ; |
195 | case SpvCapabilityStorageImageMultisample: |
196 | return "StorageImageMultisample" ; |
197 | case SpvCapabilityUniformBufferArrayDynamicIndexing: |
198 | return "UniformBufferArrayDynamicIndexing" ; |
199 | case SpvCapabilitySampledImageArrayDynamicIndexing: |
200 | return "SampledImageArrayDynamicIndexing" ; |
201 | case SpvCapabilityStorageBufferArrayDynamicIndexing: |
202 | return "StorageBufferArrayDynamicIndexing" ; |
203 | case SpvCapabilityStorageImageArrayDynamicIndexing: |
204 | return "StorageImageArrayDynamicIndexing" ; |
205 | case SpvCapabilityClipDistance: |
206 | return "ClipDistance" ; |
207 | case SpvCapabilityCullDistance: |
208 | return "CullDistance" ; |
209 | case SpvCapabilityImageCubeArray: |
210 | return "ImageCubeArray" ; |
211 | case SpvCapabilitySampleRateShading: |
212 | return "SampleRateShading" ; |
213 | case SpvCapabilityImageRect: |
214 | return "ImageRect" ; |
215 | case SpvCapabilitySampledRect: |
216 | return "SampledRect" ; |
217 | case SpvCapabilityGenericPointer: |
218 | return "GenericPointer" ; |
219 | case SpvCapabilityInt8: |
220 | return "Int8" ; |
221 | case SpvCapabilityInputAttachment: |
222 | return "InputAttachment" ; |
223 | case SpvCapabilitySparseResidency: |
224 | return "SparseResidency" ; |
225 | case SpvCapabilityMinLod: |
226 | return "MinLod" ; |
227 | case SpvCapabilitySampled1D: |
228 | return "Sampled1D" ; |
229 | case SpvCapabilityImage1D: |
230 | return "Image1D" ; |
231 | case SpvCapabilitySampledCubeArray: |
232 | return "SampledCubeArray" ; |
233 | case SpvCapabilitySampledBuffer: |
234 | return "SampledBuffer" ; |
235 | case SpvCapabilityImageBuffer: |
236 | return "ImageBuffer" ; |
237 | case SpvCapabilityImageMSArray: |
238 | return "ImageMSArray" ; |
239 | case SpvCapabilityStorageImageExtendedFormats: |
240 | return "StorageImageExtendedFormats" ; |
241 | case SpvCapabilityImageQuery: |
242 | return "ImageQuery" ; |
243 | case SpvCapabilityDerivativeControl: |
244 | return "DerivativeControl" ; |
245 | case SpvCapabilityInterpolationFunction: |
246 | return "InterpolationFunction" ; |
247 | case SpvCapabilityTransformFeedback: |
248 | return "TransformFeedback" ; |
249 | case SpvCapabilityGeometryStreams: |
250 | return "GeometryStreams" ; |
251 | case SpvCapabilityStorageImageReadWithoutFormat: |
252 | return "StorageImageReadWithoutFormat" ; |
253 | case SpvCapabilityStorageImageWriteWithoutFormat: |
254 | return "StorageImageWriteWithoutFormat" ; |
255 | case SpvCapabilityMultiViewport: |
256 | return "MultiViewport" ; |
257 | case SpvCapabilitySubgroupDispatch: |
258 | return "SubgroupDispatch" ; |
259 | case SpvCapabilityNamedBarrier: |
260 | return "NamedBarrier" ; |
261 | case SpvCapabilityPipeStorage: |
262 | return "PipeStorage" ; |
263 | case SpvCapabilityGroupNonUniform: |
264 | return "GroupNonUniform" ; |
265 | case SpvCapabilityGroupNonUniformVote: |
266 | return "GroupNonUniformVote" ; |
267 | case SpvCapabilityGroupNonUniformArithmetic: |
268 | return "GroupNonUniformArithmetic" ; |
269 | case SpvCapabilityGroupNonUniformBallot: |
270 | return "GroupNonUniformBallot" ; |
271 | case SpvCapabilityGroupNonUniformShuffle: |
272 | return "GroupNonUniformShuffle" ; |
273 | case SpvCapabilityGroupNonUniformShuffleRelative: |
274 | return "GroupNonUniformShuffleRelative" ; |
275 | case SpvCapabilityGroupNonUniformClustered: |
276 | return "GroupNonUniformClustered" ; |
277 | case SpvCapabilityGroupNonUniformQuad: |
278 | return "GroupNonUniformQuad" ; |
279 | case SpvCapabilityShaderLayer: |
280 | return "ShaderLayer" ; |
281 | case SpvCapabilityShaderViewportIndex: |
282 | return "ShaderViewportIndex" ; |
283 | case SpvCapabilitySubgroupBallotKHR: |
284 | return "SubgroupBallotKHR" ; |
285 | case SpvCapabilityDrawParameters: |
286 | return "DrawParameters" ; |
287 | case SpvCapabilitySubgroupVoteKHR: |
288 | return "SubgroupVoteKHR" ; |
289 | case SpvCapabilityStorageBuffer16BitAccess: |
290 | return "StorageBuffer16BitAccess" ; |
291 | case SpvCapabilityUniformAndStorageBuffer16BitAccess: |
292 | return "UniformAndStorageBuffer16BitAccess" ; |
293 | case SpvCapabilityStoragePushConstant16: |
294 | return "StoragePushConstant16" ; |
295 | case SpvCapabilityStorageInputOutput16: |
296 | return "StorageInputOutput16" ; |
297 | case SpvCapabilityDeviceGroup: |
298 | return "DeviceGroup" ; |
299 | case SpvCapabilityMultiView: |
300 | return "MultiView" ; |
301 | case SpvCapabilityVariablePointersStorageBuffer: |
302 | return "VariablePointersStorageBuffer" ; |
303 | case SpvCapabilityVariablePointers: |
304 | return "VariablePointers" ; |
305 | case SpvCapabilityAtomicStorageOps: |
306 | return "AtomicStorageOps" ; |
307 | case SpvCapabilitySampleMaskPostDepthCoverage: |
308 | return "SampleMaskPostDepthCoverage" ; |
309 | case SpvCapabilityStorageBuffer8BitAccess: |
310 | return "StorageBuffer8BitAccess" ; |
311 | case SpvCapabilityUniformAndStorageBuffer8BitAccess: |
312 | return "UniformAndStorageBuffer8BitAccess" ; |
313 | case SpvCapabilityStoragePushConstant8: |
314 | return "StoragePushConstant8" ; |
315 | case SpvCapabilityDenormPreserve: |
316 | return "DenormPreserve" ; |
317 | case SpvCapabilityDenormFlushToZero: |
318 | return "DenormFlushToZero" ; |
319 | case SpvCapabilitySignedZeroInfNanPreserve: |
320 | return "SignedZeroInfNanPreserve" ; |
321 | case SpvCapabilityRoundingModeRTE: |
322 | return "RoundingModeRTE" ; |
323 | case SpvCapabilityRoundingModeRTZ: |
324 | return "RoundingModeRTZ" ; |
325 | case SpvCapabilityRayQueryProvisionalKHR: |
326 | return "RayQueryProvisionalKHR" ; |
327 | case SpvCapabilityRayTraversalPrimitiveCullingProvisionalKHR: |
328 | return "RayTraversalPrimitiveCullingProvisionalKHR" ; |
329 | case SpvCapabilityFloat16ImageAMD: |
330 | return "Float16ImageAMD" ; |
331 | case SpvCapabilityImageGatherBiasLodAMD: |
332 | return "ImageGatherBiasLodAMD" ; |
333 | case SpvCapabilityFragmentMaskAMD: |
334 | return "FragmentMaskAMD" ; |
335 | case SpvCapabilityStencilExportEXT: |
336 | return "StencilExportEXT" ; |
337 | case SpvCapabilityImageReadWriteLodAMD: |
338 | return "ImageReadWriteLodAMD" ; |
339 | case SpvCapabilityShaderClockKHR: |
340 | return "ShaderClockKHR" ; |
341 | case SpvCapabilitySampleMaskOverrideCoverageNV: |
342 | return "SampleMaskOverrideCoverageNV" ; |
343 | case SpvCapabilityGeometryShaderPassthroughNV: |
344 | return "GeometryShaderPassthroughNV" ; |
345 | case SpvCapabilityShaderViewportIndexLayerEXT: |
346 | return "ShaderViewportIndexLayerEXT" ; |
347 | case SpvCapabilityShaderViewportMaskNV: |
348 | return "ShaderViewportMaskNV" ; |
349 | case SpvCapabilityShaderStereoViewNV: |
350 | return "ShaderStereoViewNV" ; |
351 | case SpvCapabilityPerViewAttributesNV: |
352 | return "PerViewAttributesNV" ; |
353 | case SpvCapabilityFragmentFullyCoveredEXT: |
354 | return "FragmentFullyCoveredEXT" ; |
355 | case SpvCapabilityMeshShadingNV: |
356 | return "MeshShadingNV" ; |
357 | case SpvCapabilityImageFootprintNV: |
358 | return "ImageFootprintNV" ; |
359 | case SpvCapabilityFragmentBarycentricNV: |
360 | return "FragmentBarycentricNV" ; |
361 | case SpvCapabilityComputeDerivativeGroupQuadsNV: |
362 | return "ComputeDerivativeGroupQuadsNV" ; |
363 | case SpvCapabilityFragmentDensityEXT: |
364 | return "FragmentDensityEXT" ; |
365 | case SpvCapabilityGroupNonUniformPartitionedNV: |
366 | return "GroupNonUniformPartitionedNV" ; |
367 | case SpvCapabilityShaderNonUniform: |
368 | return "ShaderNonUniform" ; |
369 | case SpvCapabilityRuntimeDescriptorArray: |
370 | return "RuntimeDescriptorArray" ; |
371 | case SpvCapabilityInputAttachmentArrayDynamicIndexing: |
372 | return "InputAttachmentArrayDynamicIndexing" ; |
373 | case SpvCapabilityUniformTexelBufferArrayDynamicIndexing: |
374 | return "UniformTexelBufferArrayDynamicIndexing" ; |
375 | case SpvCapabilityStorageTexelBufferArrayDynamicIndexing: |
376 | return "StorageTexelBufferArrayDynamicIndexing" ; |
377 | case SpvCapabilityUniformBufferArrayNonUniformIndexing: |
378 | return "UniformBufferArrayNonUniformIndexing" ; |
379 | case SpvCapabilitySampledImageArrayNonUniformIndexing: |
380 | return "SampledImageArrayNonUniformIndexing" ; |
381 | case SpvCapabilityStorageBufferArrayNonUniformIndexing: |
382 | return "StorageBufferArrayNonUniformIndexing" ; |
383 | case SpvCapabilityStorageImageArrayNonUniformIndexing: |
384 | return "StorageImageArrayNonUniformIndexing" ; |
385 | case SpvCapabilityInputAttachmentArrayNonUniformIndexing: |
386 | return "InputAttachmentArrayNonUniformIndexing" ; |
387 | case SpvCapabilityUniformTexelBufferArrayNonUniformIndexing: |
388 | return "UniformTexelBufferArrayNonUniformIndexing" ; |
389 | case SpvCapabilityStorageTexelBufferArrayNonUniformIndexing: |
390 | return "StorageTexelBufferArrayNonUniformIndexing" ; |
391 | case SpvCapabilityRayTracingNV: |
392 | return "RayTracingNV" ; |
393 | case SpvCapabilityVulkanMemoryModel: |
394 | return "VulkanMemoryModel" ; |
395 | case SpvCapabilityVulkanMemoryModelDeviceScope: |
396 | return "VulkanMemoryModelDeviceScope" ; |
397 | case SpvCapabilityPhysicalStorageBufferAddresses: |
398 | return "PhysicalStorageBufferAddresses" ; |
399 | case SpvCapabilityComputeDerivativeGroupLinearNV: |
400 | return "ComputeDerivativeGroupLinearNV" ; |
401 | case SpvCapabilityRayTracingProvisionalKHR: |
402 | return "RayTracingProvisionalKHR" ; |
403 | case SpvCapabilityCooperativeMatrixNV: |
404 | return "CooperativeMatrixNV" ; |
405 | case SpvCapabilityFragmentShaderSampleInterlockEXT: |
406 | return "FragmentShaderSampleInterlockEXT" ; |
407 | case SpvCapabilityFragmentShaderShadingRateInterlockEXT: |
408 | return "FragmentShaderShadingRateInterlockEXT" ; |
409 | case SpvCapabilityShaderSMBuiltinsNV: |
410 | return "ShaderSMBuiltinsNV" ; |
411 | case SpvCapabilityFragmentShaderPixelInterlockEXT: |
412 | return "FragmentShaderPixelInterlockEXT" ; |
413 | case SpvCapabilityDemoteToHelperInvocationEXT: |
414 | return "DemoteToHelperInvocationEXT" ; |
415 | case SpvCapabilitySubgroupShuffleINTEL: |
416 | return "SubgroupShuffleINTEL" ; |
417 | case SpvCapabilitySubgroupBufferBlockIOINTEL: |
418 | return "SubgroupBufferBlockIOINTEL" ; |
419 | case SpvCapabilitySubgroupImageBlockIOINTEL: |
420 | return "SubgroupImageBlockIOINTEL" ; |
421 | case SpvCapabilitySubgroupImageMediaBlockIOINTEL: |
422 | return "SubgroupImageMediaBlockIOINTEL" ; |
423 | case SpvCapabilityIntegerFunctions2INTEL: |
424 | return "IntegerFunctions2INTEL" ; |
425 | case SpvCapabilitySubgroupAvcMotionEstimationINTEL: |
426 | return "SubgroupAvcMotionEstimationINTEL" ; |
427 | case SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL: |
428 | return "SubgroupAvcMotionEstimationIntraINTEL" ; |
429 | case SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL: |
430 | return "SubgroupAvcMotionEstimationChromaINTEL" ; |
431 | case SpvCapabilityMax: |
432 | assert(0 && "Attempting to convert SpvCapabilityMax to string" ); |
433 | return "" ; |
434 | }; |
435 | |
436 | return "" ; |
437 | } |