1const 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_atomic_float16_add: 36 return "SPV_EXT_shader_atomic_float16_add"; 37 case Extension::kSPV_EXT_shader_atomic_float_add: 38 return "SPV_EXT_shader_atomic_float_add"; 39 case Extension::kSPV_EXT_shader_atomic_float_min_max: 40 return "SPV_EXT_shader_atomic_float_min_max"; 41 case Extension::kSPV_EXT_shader_image_int64: 42 return "SPV_EXT_shader_image_int64"; 43 case Extension::kSPV_EXT_shader_stencil_export: 44 return "SPV_EXT_shader_stencil_export"; 45 case Extension::kSPV_EXT_shader_viewport_index_layer: 46 return "SPV_EXT_shader_viewport_index_layer"; 47 case Extension::kSPV_GOOGLE_decorate_string: 48 return "SPV_GOOGLE_decorate_string"; 49 case Extension::kSPV_GOOGLE_hlsl_functionality1: 50 return "SPV_GOOGLE_hlsl_functionality1"; 51 case Extension::kSPV_GOOGLE_user_type: 52 return "SPV_GOOGLE_user_type"; 53 case Extension::kSPV_INTEL_arbitrary_precision_fixed_point: 54 return "SPV_INTEL_arbitrary_precision_fixed_point"; 55 case Extension::kSPV_INTEL_arbitrary_precision_floating_point: 56 return "SPV_INTEL_arbitrary_precision_floating_point"; 57 case Extension::kSPV_INTEL_arbitrary_precision_integers: 58 return "SPV_INTEL_arbitrary_precision_integers"; 59 case Extension::kSPV_INTEL_blocking_pipes: 60 return "SPV_INTEL_blocking_pipes"; 61 case Extension::kSPV_INTEL_debug_module: 62 return "SPV_INTEL_debug_module"; 63 case Extension::kSPV_INTEL_device_side_avc_motion_estimation: 64 return "SPV_INTEL_device_side_avc_motion_estimation"; 65 case Extension::kSPV_INTEL_float_controls2: 66 return "SPV_INTEL_float_controls2"; 67 case Extension::kSPV_INTEL_fp_fast_math_mode: 68 return "SPV_INTEL_fp_fast_math_mode"; 69 case Extension::kSPV_INTEL_fpga_buffer_location: 70 return "SPV_INTEL_fpga_buffer_location"; 71 case Extension::kSPV_INTEL_fpga_cluster_attributes: 72 return "SPV_INTEL_fpga_cluster_attributes"; 73 case Extension::kSPV_INTEL_fpga_loop_controls: 74 return "SPV_INTEL_fpga_loop_controls"; 75 case Extension::kSPV_INTEL_fpga_memory_accesses: 76 return "SPV_INTEL_fpga_memory_accesses"; 77 case Extension::kSPV_INTEL_fpga_memory_attributes: 78 return "SPV_INTEL_fpga_memory_attributes"; 79 case Extension::kSPV_INTEL_fpga_reg: 80 return "SPV_INTEL_fpga_reg"; 81 case Extension::kSPV_INTEL_function_pointers: 82 return "SPV_INTEL_function_pointers"; 83 case Extension::kSPV_INTEL_inline_assembly: 84 return "SPV_INTEL_inline_assembly"; 85 case Extension::kSPV_INTEL_io_pipes: 86 return "SPV_INTEL_io_pipes"; 87 case Extension::kSPV_INTEL_kernel_attributes: 88 return "SPV_INTEL_kernel_attributes"; 89 case Extension::kSPV_INTEL_long_constant_composite: 90 return "SPV_INTEL_long_constant_composite"; 91 case Extension::kSPV_INTEL_loop_fuse: 92 return "SPV_INTEL_loop_fuse"; 93 case Extension::kSPV_INTEL_media_block_io: 94 return "SPV_INTEL_media_block_io"; 95 case Extension::kSPV_INTEL_optnone: 96 return "SPV_INTEL_optnone"; 97 case Extension::kSPV_INTEL_shader_integer_functions2: 98 return "SPV_INTEL_shader_integer_functions2"; 99 case Extension::kSPV_INTEL_subgroups: 100 return "SPV_INTEL_subgroups"; 101 case Extension::kSPV_INTEL_unstructured_loop_controls: 102 return "SPV_INTEL_unstructured_loop_controls"; 103 case Extension::kSPV_INTEL_usm_storage_classes: 104 return "SPV_INTEL_usm_storage_classes"; 105 case Extension::kSPV_INTEL_variable_length_array: 106 return "SPV_INTEL_variable_length_array"; 107 case Extension::kSPV_INTEL_vector_compute: 108 return "SPV_INTEL_vector_compute"; 109 case Extension::kSPV_KHR_16bit_storage: 110 return "SPV_KHR_16bit_storage"; 111 case Extension::kSPV_KHR_8bit_storage: 112 return "SPV_KHR_8bit_storage"; 113 case Extension::kSPV_KHR_bit_instructions: 114 return "SPV_KHR_bit_instructions"; 115 case Extension::kSPV_KHR_device_group: 116 return "SPV_KHR_device_group"; 117 case Extension::kSPV_KHR_expect_assume: 118 return "SPV_KHR_expect_assume"; 119 case Extension::kSPV_KHR_float_controls: 120 return "SPV_KHR_float_controls"; 121 case Extension::kSPV_KHR_fragment_shading_rate: 122 return "SPV_KHR_fragment_shading_rate"; 123 case Extension::kSPV_KHR_integer_dot_product: 124 return "SPV_KHR_integer_dot_product"; 125 case Extension::kSPV_KHR_linkonce_odr: 126 return "SPV_KHR_linkonce_odr"; 127 case Extension::kSPV_KHR_multiview: 128 return "SPV_KHR_multiview"; 129 case Extension::kSPV_KHR_no_integer_wrap_decoration: 130 return "SPV_KHR_no_integer_wrap_decoration"; 131 case Extension::kSPV_KHR_non_semantic_info: 132 return "SPV_KHR_non_semantic_info"; 133 case Extension::kSPV_KHR_physical_storage_buffer: 134 return "SPV_KHR_physical_storage_buffer"; 135 case Extension::kSPV_KHR_post_depth_coverage: 136 return "SPV_KHR_post_depth_coverage"; 137 case Extension::kSPV_KHR_ray_query: 138 return "SPV_KHR_ray_query"; 139 case Extension::kSPV_KHR_ray_tracing: 140 return "SPV_KHR_ray_tracing"; 141 case Extension::kSPV_KHR_shader_atomic_counter_ops: 142 return "SPV_KHR_shader_atomic_counter_ops"; 143 case Extension::kSPV_KHR_shader_ballot: 144 return "SPV_KHR_shader_ballot"; 145 case Extension::kSPV_KHR_shader_clock: 146 return "SPV_KHR_shader_clock"; 147 case Extension::kSPV_KHR_shader_draw_parameters: 148 return "SPV_KHR_shader_draw_parameters"; 149 case Extension::kSPV_KHR_storage_buffer_storage_class: 150 return "SPV_KHR_storage_buffer_storage_class"; 151 case Extension::kSPV_KHR_subgroup_uniform_control_flow: 152 return "SPV_KHR_subgroup_uniform_control_flow"; 153 case Extension::kSPV_KHR_subgroup_vote: 154 return "SPV_KHR_subgroup_vote"; 155 case Extension::kSPV_KHR_terminate_invocation: 156 return "SPV_KHR_terminate_invocation"; 157 case Extension::kSPV_KHR_variable_pointers: 158 return "SPV_KHR_variable_pointers"; 159 case Extension::kSPV_KHR_vulkan_memory_model: 160 return "SPV_KHR_vulkan_memory_model"; 161 case Extension::kSPV_KHR_workgroup_memory_explicit_layout: 162 return "SPV_KHR_workgroup_memory_explicit_layout"; 163 case Extension::kSPV_NVX_multiview_per_view_attributes: 164 return "SPV_NVX_multiview_per_view_attributes"; 165 case Extension::kSPV_NV_compute_shader_derivatives: 166 return "SPV_NV_compute_shader_derivatives"; 167 case Extension::kSPV_NV_cooperative_matrix: 168 return "SPV_NV_cooperative_matrix"; 169 case Extension::kSPV_NV_fragment_shader_barycentric: 170 return "SPV_NV_fragment_shader_barycentric"; 171 case Extension::kSPV_NV_geometry_shader_passthrough: 172 return "SPV_NV_geometry_shader_passthrough"; 173 case Extension::kSPV_NV_mesh_shader: 174 return "SPV_NV_mesh_shader"; 175 case Extension::kSPV_NV_ray_tracing: 176 return "SPV_NV_ray_tracing"; 177 case Extension::kSPV_NV_ray_tracing_motion_blur: 178 return "SPV_NV_ray_tracing_motion_blur"; 179 case Extension::kSPV_NV_sample_mask_override_coverage: 180 return "SPV_NV_sample_mask_override_coverage"; 181 case Extension::kSPV_NV_shader_image_footprint: 182 return "SPV_NV_shader_image_footprint"; 183 case Extension::kSPV_NV_shader_sm_builtins: 184 return "SPV_NV_shader_sm_builtins"; 185 case Extension::kSPV_NV_shader_subgroup_partitioned: 186 return "SPV_NV_shader_subgroup_partitioned"; 187 case Extension::kSPV_NV_shading_rate: 188 return "SPV_NV_shading_rate"; 189 case Extension::kSPV_NV_stereo_view_rendering: 190 return "SPV_NV_stereo_view_rendering"; 191 case Extension::kSPV_NV_viewport_array2: 192 return "SPV_NV_viewport_array2"; 193 case Extension::kSPV_VALIDATOR_ignore_type_decl_unique: 194 return "SPV_VALIDATOR_ignore_type_decl_unique"; 195 } 196 197 return ""; 198} 199 200 201 bool GetExtensionFromString(const char* str, Extension* extension) { 202 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_atomic_float16_add", "SPV_EXT_shader_atomic_float_add", "SPV_EXT_shader_atomic_float_min_max", "SPV_EXT_shader_image_int64", "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_arbitrary_precision_fixed_point", "SPV_INTEL_arbitrary_precision_floating_point", "SPV_INTEL_arbitrary_precision_integers", "SPV_INTEL_blocking_pipes", "SPV_INTEL_debug_module", "SPV_INTEL_device_side_avc_motion_estimation", "SPV_INTEL_float_controls2", "SPV_INTEL_fp_fast_math_mode", "SPV_INTEL_fpga_buffer_location", "SPV_INTEL_fpga_cluster_attributes", "SPV_INTEL_fpga_loop_controls", "SPV_INTEL_fpga_memory_accesses", "SPV_INTEL_fpga_memory_attributes", "SPV_INTEL_fpga_reg", "SPV_INTEL_function_pointers", "SPV_INTEL_inline_assembly", "SPV_INTEL_io_pipes", "SPV_INTEL_kernel_attributes", "SPV_INTEL_long_constant_composite", "SPV_INTEL_loop_fuse", "SPV_INTEL_media_block_io", "SPV_INTEL_optnone", "SPV_INTEL_shader_integer_functions2", "SPV_INTEL_subgroups", "SPV_INTEL_unstructured_loop_controls", "SPV_INTEL_usm_storage_classes", "SPV_INTEL_variable_length_array", "SPV_INTEL_vector_compute", "SPV_KHR_16bit_storage", "SPV_KHR_8bit_storage", "SPV_KHR_bit_instructions", "SPV_KHR_device_group", "SPV_KHR_expect_assume", "SPV_KHR_float_controls", "SPV_KHR_fragment_shading_rate", "SPV_KHR_integer_dot_product", "SPV_KHR_linkonce_odr", "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_uniform_control_flow", "SPV_KHR_subgroup_vote", "SPV_KHR_terminate_invocation", "SPV_KHR_variable_pointers", "SPV_KHR_vulkan_memory_model", "SPV_KHR_workgroup_memory_explicit_layout", "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_ray_tracing_motion_blur", "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" }; 203 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_atomic_float16_add, Extension::kSPV_EXT_shader_atomic_float_add, Extension::kSPV_EXT_shader_atomic_float_min_max, Extension::kSPV_EXT_shader_image_int64, 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_arbitrary_precision_fixed_point, Extension::kSPV_INTEL_arbitrary_precision_floating_point, Extension::kSPV_INTEL_arbitrary_precision_integers, Extension::kSPV_INTEL_blocking_pipes, Extension::kSPV_INTEL_debug_module, Extension::kSPV_INTEL_device_side_avc_motion_estimation, Extension::kSPV_INTEL_float_controls2, Extension::kSPV_INTEL_fp_fast_math_mode, Extension::kSPV_INTEL_fpga_buffer_location, Extension::kSPV_INTEL_fpga_cluster_attributes, Extension::kSPV_INTEL_fpga_loop_controls, Extension::kSPV_INTEL_fpga_memory_accesses, Extension::kSPV_INTEL_fpga_memory_attributes, Extension::kSPV_INTEL_fpga_reg, Extension::kSPV_INTEL_function_pointers, Extension::kSPV_INTEL_inline_assembly, Extension::kSPV_INTEL_io_pipes, Extension::kSPV_INTEL_kernel_attributes, Extension::kSPV_INTEL_long_constant_composite, Extension::kSPV_INTEL_loop_fuse, Extension::kSPV_INTEL_media_block_io, Extension::kSPV_INTEL_optnone, Extension::kSPV_INTEL_shader_integer_functions2, Extension::kSPV_INTEL_subgroups, Extension::kSPV_INTEL_unstructured_loop_controls, Extension::kSPV_INTEL_usm_storage_classes, Extension::kSPV_INTEL_variable_length_array, Extension::kSPV_INTEL_vector_compute, Extension::kSPV_KHR_16bit_storage, Extension::kSPV_KHR_8bit_storage, Extension::kSPV_KHR_bit_instructions, Extension::kSPV_KHR_device_group, Extension::kSPV_KHR_expect_assume, Extension::kSPV_KHR_float_controls, Extension::kSPV_KHR_fragment_shading_rate, Extension::kSPV_KHR_integer_dot_product, Extension::kSPV_KHR_linkonce_odr, 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_uniform_control_flow, Extension::kSPV_KHR_subgroup_vote, Extension::kSPV_KHR_terminate_invocation, Extension::kSPV_KHR_variable_pointers, Extension::kSPV_KHR_vulkan_memory_model, Extension::kSPV_KHR_workgroup_memory_explicit_layout, 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_ray_tracing_motion_blur, 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 }; 204 const auto b = std::begin(known_ext_strs); 205 const auto e = std::end(known_ext_strs); 206 const auto found = std::equal_range( 207 b, e, str, [](const char* str1, const char* str2) { 208 return std::strcmp(str1, str2) < 0; 209 }); 210 if (found.first == e || found.first == found.second) return false; 211 212 *extension = known_ext_ids[found.first - b]; 213 return true; 214 } 215 216 217const char* CapabilityToString(SpvCapability capability) { 218 switch (capability) { 219 case SpvCapabilityMatrix: 220 return "Matrix"; 221 case SpvCapabilityShader: 222 return "Shader"; 223 case SpvCapabilityGeometry: 224 return "Geometry"; 225 case SpvCapabilityTessellation: 226 return "Tessellation"; 227 case SpvCapabilityAddresses: 228 return "Addresses"; 229 case SpvCapabilityLinkage: 230 return "Linkage"; 231 case SpvCapabilityKernel: 232 return "Kernel"; 233 case SpvCapabilityVector16: 234 return "Vector16"; 235 case SpvCapabilityFloat16Buffer: 236 return "Float16Buffer"; 237 case SpvCapabilityFloat16: 238 return "Float16"; 239 case SpvCapabilityFloat64: 240 return "Float64"; 241 case SpvCapabilityInt64: 242 return "Int64"; 243 case SpvCapabilityInt64Atomics: 244 return "Int64Atomics"; 245 case SpvCapabilityImageBasic: 246 return "ImageBasic"; 247 case SpvCapabilityImageReadWrite: 248 return "ImageReadWrite"; 249 case SpvCapabilityImageMipmap: 250 return "ImageMipmap"; 251 case SpvCapabilityPipes: 252 return "Pipes"; 253 case SpvCapabilityGroups: 254 return "Groups"; 255 case SpvCapabilityDeviceEnqueue: 256 return "DeviceEnqueue"; 257 case SpvCapabilityLiteralSampler: 258 return "LiteralSampler"; 259 case SpvCapabilityAtomicStorage: 260 return "AtomicStorage"; 261 case SpvCapabilityInt16: 262 return "Int16"; 263 case SpvCapabilityTessellationPointSize: 264 return "TessellationPointSize"; 265 case SpvCapabilityGeometryPointSize: 266 return "GeometryPointSize"; 267 case SpvCapabilityImageGatherExtended: 268 return "ImageGatherExtended"; 269 case SpvCapabilityStorageImageMultisample: 270 return "StorageImageMultisample"; 271 case SpvCapabilityUniformBufferArrayDynamicIndexing: 272 return "UniformBufferArrayDynamicIndexing"; 273 case SpvCapabilitySampledImageArrayDynamicIndexing: 274 return "SampledImageArrayDynamicIndexing"; 275 case SpvCapabilityStorageBufferArrayDynamicIndexing: 276 return "StorageBufferArrayDynamicIndexing"; 277 case SpvCapabilityStorageImageArrayDynamicIndexing: 278 return "StorageImageArrayDynamicIndexing"; 279 case SpvCapabilityClipDistance: 280 return "ClipDistance"; 281 case SpvCapabilityCullDistance: 282 return "CullDistance"; 283 case SpvCapabilityImageCubeArray: 284 return "ImageCubeArray"; 285 case SpvCapabilitySampleRateShading: 286 return "SampleRateShading"; 287 case SpvCapabilityImageRect: 288 return "ImageRect"; 289 case SpvCapabilitySampledRect: 290 return "SampledRect"; 291 case SpvCapabilityGenericPointer: 292 return "GenericPointer"; 293 case SpvCapabilityInt8: 294 return "Int8"; 295 case SpvCapabilityInputAttachment: 296 return "InputAttachment"; 297 case SpvCapabilitySparseResidency: 298 return "SparseResidency"; 299 case SpvCapabilityMinLod: 300 return "MinLod"; 301 case SpvCapabilitySampled1D: 302 return "Sampled1D"; 303 case SpvCapabilityImage1D: 304 return "Image1D"; 305 case SpvCapabilitySampledCubeArray: 306 return "SampledCubeArray"; 307 case SpvCapabilitySampledBuffer: 308 return "SampledBuffer"; 309 case SpvCapabilityImageBuffer: 310 return "ImageBuffer"; 311 case SpvCapabilityImageMSArray: 312 return "ImageMSArray"; 313 case SpvCapabilityStorageImageExtendedFormats: 314 return "StorageImageExtendedFormats"; 315 case SpvCapabilityImageQuery: 316 return "ImageQuery"; 317 case SpvCapabilityDerivativeControl: 318 return "DerivativeControl"; 319 case SpvCapabilityInterpolationFunction: 320 return "InterpolationFunction"; 321 case SpvCapabilityTransformFeedback: 322 return "TransformFeedback"; 323 case SpvCapabilityGeometryStreams: 324 return "GeometryStreams"; 325 case SpvCapabilityStorageImageReadWithoutFormat: 326 return "StorageImageReadWithoutFormat"; 327 case SpvCapabilityStorageImageWriteWithoutFormat: 328 return "StorageImageWriteWithoutFormat"; 329 case SpvCapabilityMultiViewport: 330 return "MultiViewport"; 331 case SpvCapabilitySubgroupDispatch: 332 return "SubgroupDispatch"; 333 case SpvCapabilityNamedBarrier: 334 return "NamedBarrier"; 335 case SpvCapabilityPipeStorage: 336 return "PipeStorage"; 337 case SpvCapabilityGroupNonUniform: 338 return "GroupNonUniform"; 339 case SpvCapabilityGroupNonUniformVote: 340 return "GroupNonUniformVote"; 341 case SpvCapabilityGroupNonUniformArithmetic: 342 return "GroupNonUniformArithmetic"; 343 case SpvCapabilityGroupNonUniformBallot: 344 return "GroupNonUniformBallot"; 345 case SpvCapabilityGroupNonUniformShuffle: 346 return "GroupNonUniformShuffle"; 347 case SpvCapabilityGroupNonUniformShuffleRelative: 348 return "GroupNonUniformShuffleRelative"; 349 case SpvCapabilityGroupNonUniformClustered: 350 return "GroupNonUniformClustered"; 351 case SpvCapabilityGroupNonUniformQuad: 352 return "GroupNonUniformQuad"; 353 case SpvCapabilityShaderLayer: 354 return "ShaderLayer"; 355 case SpvCapabilityShaderViewportIndex: 356 return "ShaderViewportIndex"; 357 case SpvCapabilityFragmentShadingRateKHR: 358 return "FragmentShadingRateKHR"; 359 case SpvCapabilitySubgroupBallotKHR: 360 return "SubgroupBallotKHR"; 361 case SpvCapabilityDrawParameters: 362 return "DrawParameters"; 363 case SpvCapabilityWorkgroupMemoryExplicitLayoutKHR: 364 return "WorkgroupMemoryExplicitLayoutKHR"; 365 case SpvCapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR: 366 return "WorkgroupMemoryExplicitLayout8BitAccessKHR"; 367 case SpvCapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR: 368 return "WorkgroupMemoryExplicitLayout16BitAccessKHR"; 369 case SpvCapabilitySubgroupVoteKHR: 370 return "SubgroupVoteKHR"; 371 case SpvCapabilityStorageBuffer16BitAccess: 372 return "StorageBuffer16BitAccess"; 373 case SpvCapabilityUniformAndStorageBuffer16BitAccess: 374 return "UniformAndStorageBuffer16BitAccess"; 375 case SpvCapabilityStoragePushConstant16: 376 return "StoragePushConstant16"; 377 case SpvCapabilityStorageInputOutput16: 378 return "StorageInputOutput16"; 379 case SpvCapabilityDeviceGroup: 380 return "DeviceGroup"; 381 case SpvCapabilityMultiView: 382 return "MultiView"; 383 case SpvCapabilityVariablePointersStorageBuffer: 384 return "VariablePointersStorageBuffer"; 385 case SpvCapabilityVariablePointers: 386 return "VariablePointers"; 387 case SpvCapabilityAtomicStorageOps: 388 return "AtomicStorageOps"; 389 case SpvCapabilitySampleMaskPostDepthCoverage: 390 return "SampleMaskPostDepthCoverage"; 391 case SpvCapabilityStorageBuffer8BitAccess: 392 return "StorageBuffer8BitAccess"; 393 case SpvCapabilityUniformAndStorageBuffer8BitAccess: 394 return "UniformAndStorageBuffer8BitAccess"; 395 case SpvCapabilityStoragePushConstant8: 396 return "StoragePushConstant8"; 397 case SpvCapabilityDenormPreserve: 398 return "DenormPreserve"; 399 case SpvCapabilityDenormFlushToZero: 400 return "DenormFlushToZero"; 401 case SpvCapabilitySignedZeroInfNanPreserve: 402 return "SignedZeroInfNanPreserve"; 403 case SpvCapabilityRoundingModeRTE: 404 return "RoundingModeRTE"; 405 case SpvCapabilityRoundingModeRTZ: 406 return "RoundingModeRTZ"; 407 case SpvCapabilityRayQueryProvisionalKHR: 408 return "RayQueryProvisionalKHR"; 409 case SpvCapabilityRayQueryKHR: 410 return "RayQueryKHR"; 411 case SpvCapabilityRayTraversalPrimitiveCullingKHR: 412 return "RayTraversalPrimitiveCullingKHR"; 413 case SpvCapabilityRayTracingKHR: 414 return "RayTracingKHR"; 415 case SpvCapabilityFloat16ImageAMD: 416 return "Float16ImageAMD"; 417 case SpvCapabilityImageGatherBiasLodAMD: 418 return "ImageGatherBiasLodAMD"; 419 case SpvCapabilityFragmentMaskAMD: 420 return "FragmentMaskAMD"; 421 case SpvCapabilityStencilExportEXT: 422 return "StencilExportEXT"; 423 case SpvCapabilityImageReadWriteLodAMD: 424 return "ImageReadWriteLodAMD"; 425 case SpvCapabilityInt64ImageEXT: 426 return "Int64ImageEXT"; 427 case SpvCapabilityShaderClockKHR: 428 return "ShaderClockKHR"; 429 case SpvCapabilitySampleMaskOverrideCoverageNV: 430 return "SampleMaskOverrideCoverageNV"; 431 case SpvCapabilityGeometryShaderPassthroughNV: 432 return "GeometryShaderPassthroughNV"; 433 case SpvCapabilityShaderViewportIndexLayerEXT: 434 return "ShaderViewportIndexLayerEXT"; 435 case SpvCapabilityShaderViewportMaskNV: 436 return "ShaderViewportMaskNV"; 437 case SpvCapabilityShaderStereoViewNV: 438 return "ShaderStereoViewNV"; 439 case SpvCapabilityPerViewAttributesNV: 440 return "PerViewAttributesNV"; 441 case SpvCapabilityFragmentFullyCoveredEXT: 442 return "FragmentFullyCoveredEXT"; 443 case SpvCapabilityMeshShadingNV: 444 return "MeshShadingNV"; 445 case SpvCapabilityImageFootprintNV: 446 return "ImageFootprintNV"; 447 case SpvCapabilityFragmentBarycentricNV: 448 return "FragmentBarycentricNV"; 449 case SpvCapabilityComputeDerivativeGroupQuadsNV: 450 return "ComputeDerivativeGroupQuadsNV"; 451 case SpvCapabilityFragmentDensityEXT: 452 return "FragmentDensityEXT"; 453 case SpvCapabilityGroupNonUniformPartitionedNV: 454 return "GroupNonUniformPartitionedNV"; 455 case SpvCapabilityShaderNonUniform: 456 return "ShaderNonUniform"; 457 case SpvCapabilityRuntimeDescriptorArray: 458 return "RuntimeDescriptorArray"; 459 case SpvCapabilityInputAttachmentArrayDynamicIndexing: 460 return "InputAttachmentArrayDynamicIndexing"; 461 case SpvCapabilityUniformTexelBufferArrayDynamicIndexing: 462 return "UniformTexelBufferArrayDynamicIndexing"; 463 case SpvCapabilityStorageTexelBufferArrayDynamicIndexing: 464 return "StorageTexelBufferArrayDynamicIndexing"; 465 case SpvCapabilityUniformBufferArrayNonUniformIndexing: 466 return "UniformBufferArrayNonUniformIndexing"; 467 case SpvCapabilitySampledImageArrayNonUniformIndexing: 468 return "SampledImageArrayNonUniformIndexing"; 469 case SpvCapabilityStorageBufferArrayNonUniformIndexing: 470 return "StorageBufferArrayNonUniformIndexing"; 471 case SpvCapabilityStorageImageArrayNonUniformIndexing: 472 return "StorageImageArrayNonUniformIndexing"; 473 case SpvCapabilityInputAttachmentArrayNonUniformIndexing: 474 return "InputAttachmentArrayNonUniformIndexing"; 475 case SpvCapabilityUniformTexelBufferArrayNonUniformIndexing: 476 return "UniformTexelBufferArrayNonUniformIndexing"; 477 case SpvCapabilityStorageTexelBufferArrayNonUniformIndexing: 478 return "StorageTexelBufferArrayNonUniformIndexing"; 479 case SpvCapabilityRayTracingNV: 480 return "RayTracingNV"; 481 case SpvCapabilityRayTracingMotionBlurNV: 482 return "RayTracingMotionBlurNV"; 483 case SpvCapabilityVulkanMemoryModel: 484 return "VulkanMemoryModel"; 485 case SpvCapabilityVulkanMemoryModelDeviceScope: 486 return "VulkanMemoryModelDeviceScope"; 487 case SpvCapabilityPhysicalStorageBufferAddresses: 488 return "PhysicalStorageBufferAddresses"; 489 case SpvCapabilityComputeDerivativeGroupLinearNV: 490 return "ComputeDerivativeGroupLinearNV"; 491 case SpvCapabilityRayTracingProvisionalKHR: 492 return "RayTracingProvisionalKHR"; 493 case SpvCapabilityCooperativeMatrixNV: 494 return "CooperativeMatrixNV"; 495 case SpvCapabilityFragmentShaderSampleInterlockEXT: 496 return "FragmentShaderSampleInterlockEXT"; 497 case SpvCapabilityFragmentShaderShadingRateInterlockEXT: 498 return "FragmentShaderShadingRateInterlockEXT"; 499 case SpvCapabilityShaderSMBuiltinsNV: 500 return "ShaderSMBuiltinsNV"; 501 case SpvCapabilityFragmentShaderPixelInterlockEXT: 502 return "FragmentShaderPixelInterlockEXT"; 503 case SpvCapabilityDemoteToHelperInvocationEXT: 504 return "DemoteToHelperInvocationEXT"; 505 case SpvCapabilitySubgroupShuffleINTEL: 506 return "SubgroupShuffleINTEL"; 507 case SpvCapabilitySubgroupBufferBlockIOINTEL: 508 return "SubgroupBufferBlockIOINTEL"; 509 case SpvCapabilitySubgroupImageBlockIOINTEL: 510 return "SubgroupImageBlockIOINTEL"; 511 case SpvCapabilitySubgroupImageMediaBlockIOINTEL: 512 return "SubgroupImageMediaBlockIOINTEL"; 513 case SpvCapabilityRoundToInfinityINTEL: 514 return "RoundToInfinityINTEL"; 515 case SpvCapabilityFloatingPointModeINTEL: 516 return "FloatingPointModeINTEL"; 517 case SpvCapabilityIntegerFunctions2INTEL: 518 return "IntegerFunctions2INTEL"; 519 case SpvCapabilityFunctionPointersINTEL: 520 return "FunctionPointersINTEL"; 521 case SpvCapabilityIndirectReferencesINTEL: 522 return "IndirectReferencesINTEL"; 523 case SpvCapabilityAsmINTEL: 524 return "AsmINTEL"; 525 case SpvCapabilityAtomicFloat32MinMaxEXT: 526 return "AtomicFloat32MinMaxEXT"; 527 case SpvCapabilityAtomicFloat64MinMaxEXT: 528 return "AtomicFloat64MinMaxEXT"; 529 case SpvCapabilityAtomicFloat16MinMaxEXT: 530 return "AtomicFloat16MinMaxEXT"; 531 case SpvCapabilityVectorComputeINTEL: 532 return "VectorComputeINTEL"; 533 case SpvCapabilityVectorAnyINTEL: 534 return "VectorAnyINTEL"; 535 case SpvCapabilityExpectAssumeKHR: 536 return "ExpectAssumeKHR"; 537 case SpvCapabilitySubgroupAvcMotionEstimationINTEL: 538 return "SubgroupAvcMotionEstimationINTEL"; 539 case SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL: 540 return "SubgroupAvcMotionEstimationIntraINTEL"; 541 case SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL: 542 return "SubgroupAvcMotionEstimationChromaINTEL"; 543 case SpvCapabilityVariableLengthArrayINTEL: 544 return "VariableLengthArrayINTEL"; 545 case SpvCapabilityFunctionFloatControlINTEL: 546 return "FunctionFloatControlINTEL"; 547 case SpvCapabilityFPGAMemoryAttributesINTEL: 548 return "FPGAMemoryAttributesINTEL"; 549 case SpvCapabilityFPFastMathModeINTEL: 550 return "FPFastMathModeINTEL"; 551 case SpvCapabilityArbitraryPrecisionIntegersINTEL: 552 return "ArbitraryPrecisionIntegersINTEL"; 553 case SpvCapabilityArbitraryPrecisionFloatingPointINTEL: 554 return "ArbitraryPrecisionFloatingPointINTEL"; 555 case SpvCapabilityUnstructuredLoopControlsINTEL: 556 return "UnstructuredLoopControlsINTEL"; 557 case SpvCapabilityFPGALoopControlsINTEL: 558 return "FPGALoopControlsINTEL"; 559 case SpvCapabilityKernelAttributesINTEL: 560 return "KernelAttributesINTEL"; 561 case SpvCapabilityFPGAKernelAttributesINTEL: 562 return "FPGAKernelAttributesINTEL"; 563 case SpvCapabilityFPGAMemoryAccessesINTEL: 564 return "FPGAMemoryAccessesINTEL"; 565 case SpvCapabilityFPGAClusterAttributesINTEL: 566 return "FPGAClusterAttributesINTEL"; 567 case SpvCapabilityLoopFuseINTEL: 568 return "LoopFuseINTEL"; 569 case SpvCapabilityFPGABufferLocationINTEL: 570 return "FPGABufferLocationINTEL"; 571 case SpvCapabilityArbitraryPrecisionFixedPointINTEL: 572 return "ArbitraryPrecisionFixedPointINTEL"; 573 case SpvCapabilityUSMStorageClassesINTEL: 574 return "USMStorageClassesINTEL"; 575 case SpvCapabilityIOPipesINTEL: 576 return "IOPipesINTEL"; 577 case SpvCapabilityBlockingPipesINTEL: 578 return "BlockingPipesINTEL"; 579 case SpvCapabilityFPGARegINTEL: 580 return "FPGARegINTEL"; 581 case SpvCapabilityDotProductInputAllKHR: 582 return "DotProductInputAllKHR"; 583 case SpvCapabilityDotProductInput4x8BitKHR: 584 return "DotProductInput4x8BitKHR"; 585 case SpvCapabilityDotProductInput4x8BitPackedKHR: 586 return "DotProductInput4x8BitPackedKHR"; 587 case SpvCapabilityDotProductKHR: 588 return "DotProductKHR"; 589 case SpvCapabilityBitInstructions: 590 return "BitInstructions"; 591 case SpvCapabilityAtomicFloat32AddEXT: 592 return "AtomicFloat32AddEXT"; 593 case SpvCapabilityAtomicFloat64AddEXT: 594 return "AtomicFloat64AddEXT"; 595 case SpvCapabilityLongConstantCompositeINTEL: 596 return "LongConstantCompositeINTEL"; 597 case SpvCapabilityOptNoneINTEL: 598 return "OptNoneINTEL"; 599 case SpvCapabilityAtomicFloat16AddEXT: 600 return "AtomicFloat16AddEXT"; 601 case SpvCapabilityDebugInfoModuleINTEL: 602 return "DebugInfoModuleINTEL"; 603 case SpvCapabilityMax: 604 assert(0 && "Attempting to convert SpvCapabilityMax to string"); 605 return ""; 606 } 607 608 return ""; 609}