| 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 | } |