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_early_and_late_fragment_tests: 14 return "SPV_AMD_shader_early_and_late_fragment_tests"; 15 case Extension::kSPV_AMD_shader_explicit_vertex_parameter: 16 return "SPV_AMD_shader_explicit_vertex_parameter"; 17 case Extension::kSPV_AMD_shader_fragment_mask: 18 return "SPV_AMD_shader_fragment_mask"; 19 case Extension::kSPV_AMD_shader_image_load_store_lod: 20 return "SPV_AMD_shader_image_load_store_lod"; 21 case Extension::kSPV_AMD_shader_trinary_minmax: 22 return "SPV_AMD_shader_trinary_minmax"; 23 case Extension::kSPV_AMD_texture_gather_bias_lod: 24 return "SPV_AMD_texture_gather_bias_lod"; 25 case Extension::kSPV_EXT_demote_to_helper_invocation: 26 return "SPV_EXT_demote_to_helper_invocation"; 27 case Extension::kSPV_EXT_descriptor_indexing: 28 return "SPV_EXT_descriptor_indexing"; 29 case Extension::kSPV_EXT_fragment_fully_covered: 30 return "SPV_EXT_fragment_fully_covered"; 31 case Extension::kSPV_EXT_fragment_invocation_density: 32 return "SPV_EXT_fragment_invocation_density"; 33 case Extension::kSPV_EXT_fragment_shader_interlock: 34 return "SPV_EXT_fragment_shader_interlock"; 35 case Extension::kSPV_EXT_mesh_shader: 36 return "SPV_EXT_mesh_shader"; 37 case Extension::kSPV_EXT_physical_storage_buffer: 38 return "SPV_EXT_physical_storage_buffer"; 39 case Extension::kSPV_EXT_shader_atomic_float16_add: 40 return "SPV_EXT_shader_atomic_float16_add"; 41 case Extension::kSPV_EXT_shader_atomic_float_add: 42 return "SPV_EXT_shader_atomic_float_add"; 43 case Extension::kSPV_EXT_shader_atomic_float_min_max: 44 return "SPV_EXT_shader_atomic_float_min_max"; 45 case Extension::kSPV_EXT_shader_image_int64: 46 return "SPV_EXT_shader_image_int64"; 47 case Extension::kSPV_EXT_shader_stencil_export: 48 return "SPV_EXT_shader_stencil_export"; 49 case Extension::kSPV_EXT_shader_viewport_index_layer: 50 return "SPV_EXT_shader_viewport_index_layer"; 51 case Extension::kSPV_GOOGLE_decorate_string: 52 return "SPV_GOOGLE_decorate_string"; 53 case Extension::kSPV_GOOGLE_hlsl_functionality1: 54 return "SPV_GOOGLE_hlsl_functionality1"; 55 case Extension::kSPV_GOOGLE_user_type: 56 return "SPV_GOOGLE_user_type"; 57 case Extension::kSPV_INTEL_arbitrary_precision_fixed_point: 58 return "SPV_INTEL_arbitrary_precision_fixed_point"; 59 case Extension::kSPV_INTEL_arbitrary_precision_floating_point: 60 return "SPV_INTEL_arbitrary_precision_floating_point"; 61 case Extension::kSPV_INTEL_arbitrary_precision_integers: 62 return "SPV_INTEL_arbitrary_precision_integers"; 63 case Extension::kSPV_INTEL_blocking_pipes: 64 return "SPV_INTEL_blocking_pipes"; 65 case Extension::kSPV_INTEL_debug_module: 66 return "SPV_INTEL_debug_module"; 67 case Extension::kSPV_INTEL_device_side_avc_motion_estimation: 68 return "SPV_INTEL_device_side_avc_motion_estimation"; 69 case Extension::kSPV_INTEL_float_controls2: 70 return "SPV_INTEL_float_controls2"; 71 case Extension::kSPV_INTEL_fp_fast_math_mode: 72 return "SPV_INTEL_fp_fast_math_mode"; 73 case Extension::kSPV_INTEL_fpga_buffer_location: 74 return "SPV_INTEL_fpga_buffer_location"; 75 case Extension::kSPV_INTEL_fpga_cluster_attributes: 76 return "SPV_INTEL_fpga_cluster_attributes"; 77 case Extension::kSPV_INTEL_fpga_loop_controls: 78 return "SPV_INTEL_fpga_loop_controls"; 79 case Extension::kSPV_INTEL_fpga_memory_accesses: 80 return "SPV_INTEL_fpga_memory_accesses"; 81 case Extension::kSPV_INTEL_fpga_memory_attributes: 82 return "SPV_INTEL_fpga_memory_attributes"; 83 case Extension::kSPV_INTEL_fpga_reg: 84 return "SPV_INTEL_fpga_reg"; 85 case Extension::kSPV_INTEL_function_pointers: 86 return "SPV_INTEL_function_pointers"; 87 case Extension::kSPV_INTEL_inline_assembly: 88 return "SPV_INTEL_inline_assembly"; 89 case Extension::kSPV_INTEL_io_pipes: 90 return "SPV_INTEL_io_pipes"; 91 case Extension::kSPV_INTEL_kernel_attributes: 92 return "SPV_INTEL_kernel_attributes"; 93 case Extension::kSPV_INTEL_long_constant_composite: 94 return "SPV_INTEL_long_constant_composite"; 95 case Extension::kSPV_INTEL_loop_fuse: 96 return "SPV_INTEL_loop_fuse"; 97 case Extension::kSPV_INTEL_media_block_io: 98 return "SPV_INTEL_media_block_io"; 99 case Extension::kSPV_INTEL_memory_access_aliasing: 100 return "SPV_INTEL_memory_access_aliasing"; 101 case Extension::kSPV_INTEL_optnone: 102 return "SPV_INTEL_optnone"; 103 case Extension::kSPV_INTEL_shader_integer_functions2: 104 return "SPV_INTEL_shader_integer_functions2"; 105 case Extension::kSPV_INTEL_split_barrier: 106 return "SPV_INTEL_split_barrier"; 107 case Extension::kSPV_INTEL_subgroups: 108 return "SPV_INTEL_subgroups"; 109 case Extension::kSPV_INTEL_unstructured_loop_controls: 110 return "SPV_INTEL_unstructured_loop_controls"; 111 case Extension::kSPV_INTEL_usm_storage_classes: 112 return "SPV_INTEL_usm_storage_classes"; 113 case Extension::kSPV_INTEL_variable_length_array: 114 return "SPV_INTEL_variable_length_array"; 115 case Extension::kSPV_INTEL_vector_compute: 116 return "SPV_INTEL_vector_compute"; 117 case Extension::kSPV_KHR_16bit_storage: 118 return "SPV_KHR_16bit_storage"; 119 case Extension::kSPV_KHR_8bit_storage: 120 return "SPV_KHR_8bit_storage"; 121 case Extension::kSPV_KHR_bit_instructions: 122 return "SPV_KHR_bit_instructions"; 123 case Extension::kSPV_KHR_device_group: 124 return "SPV_KHR_device_group"; 125 case Extension::kSPV_KHR_expect_assume: 126 return "SPV_KHR_expect_assume"; 127 case Extension::kSPV_KHR_float_controls: 128 return "SPV_KHR_float_controls"; 129 case Extension::kSPV_KHR_fragment_shader_barycentric: 130 return "SPV_KHR_fragment_shader_barycentric"; 131 case Extension::kSPV_KHR_fragment_shading_rate: 132 return "SPV_KHR_fragment_shading_rate"; 133 case Extension::kSPV_KHR_integer_dot_product: 134 return "SPV_KHR_integer_dot_product"; 135 case Extension::kSPV_KHR_linkonce_odr: 136 return "SPV_KHR_linkonce_odr"; 137 case Extension::kSPV_KHR_multiview: 138 return "SPV_KHR_multiview"; 139 case Extension::kSPV_KHR_no_integer_wrap_decoration: 140 return "SPV_KHR_no_integer_wrap_decoration"; 141 case Extension::kSPV_KHR_non_semantic_info: 142 return "SPV_KHR_non_semantic_info"; 143 case Extension::kSPV_KHR_physical_storage_buffer: 144 return "SPV_KHR_physical_storage_buffer"; 145 case Extension::kSPV_KHR_post_depth_coverage: 146 return "SPV_KHR_post_depth_coverage"; 147 case Extension::kSPV_KHR_ray_cull_mask: 148 return "SPV_KHR_ray_cull_mask"; 149 case Extension::kSPV_KHR_ray_query: 150 return "SPV_KHR_ray_query"; 151 case Extension::kSPV_KHR_ray_tracing: 152 return "SPV_KHR_ray_tracing"; 153 case Extension::kSPV_KHR_shader_atomic_counter_ops: 154 return "SPV_KHR_shader_atomic_counter_ops"; 155 case Extension::kSPV_KHR_shader_ballot: 156 return "SPV_KHR_shader_ballot"; 157 case Extension::kSPV_KHR_shader_clock: 158 return "SPV_KHR_shader_clock"; 159 case Extension::kSPV_KHR_shader_draw_parameters: 160 return "SPV_KHR_shader_draw_parameters"; 161 case Extension::kSPV_KHR_storage_buffer_storage_class: 162 return "SPV_KHR_storage_buffer_storage_class"; 163 case Extension::kSPV_KHR_subgroup_rotate: 164 return "SPV_KHR_subgroup_rotate"; 165 case Extension::kSPV_KHR_subgroup_uniform_control_flow: 166 return "SPV_KHR_subgroup_uniform_control_flow"; 167 case Extension::kSPV_KHR_subgroup_vote: 168 return "SPV_KHR_subgroup_vote"; 169 case Extension::kSPV_KHR_terminate_invocation: 170 return "SPV_KHR_terminate_invocation"; 171 case Extension::kSPV_KHR_uniform_group_instructions: 172 return "SPV_KHR_uniform_group_instructions"; 173 case Extension::kSPV_KHR_variable_pointers: 174 return "SPV_KHR_variable_pointers"; 175 case Extension::kSPV_KHR_vulkan_memory_model: 176 return "SPV_KHR_vulkan_memory_model"; 177 case Extension::kSPV_KHR_workgroup_memory_explicit_layout: 178 return "SPV_KHR_workgroup_memory_explicit_layout"; 179 case Extension::kSPV_NVX_multiview_per_view_attributes: 180 return "SPV_NVX_multiview_per_view_attributes"; 181 case Extension::kSPV_NV_bindless_texture: 182 return "SPV_NV_bindless_texture"; 183 case Extension::kSPV_NV_compute_shader_derivatives: 184 return "SPV_NV_compute_shader_derivatives"; 185 case Extension::kSPV_NV_cooperative_matrix: 186 return "SPV_NV_cooperative_matrix"; 187 case Extension::kSPV_NV_fragment_shader_barycentric: 188 return "SPV_NV_fragment_shader_barycentric"; 189 case Extension::kSPV_NV_geometry_shader_passthrough: 190 return "SPV_NV_geometry_shader_passthrough"; 191 case Extension::kSPV_NV_mesh_shader: 192 return "SPV_NV_mesh_shader"; 193 case Extension::kSPV_NV_ray_tracing: 194 return "SPV_NV_ray_tracing"; 195 case Extension::kSPV_NV_ray_tracing_motion_blur: 196 return "SPV_NV_ray_tracing_motion_blur"; 197 case Extension::kSPV_NV_sample_mask_override_coverage: 198 return "SPV_NV_sample_mask_override_coverage"; 199 case Extension::kSPV_NV_shader_image_footprint: 200 return "SPV_NV_shader_image_footprint"; 201 case Extension::kSPV_NV_shader_invocation_reorder: 202 return "kSPV_NV_shader_invocation_reorder"; 203 case Extension::kSPV_NV_shader_sm_builtins: 204 return "SPV_NV_shader_sm_builtins"; 205 case Extension::kSPV_NV_shader_subgroup_partitioned: 206 return "SPV_NV_shader_subgroup_partitioned"; 207 case Extension::kSPV_NV_shading_rate: 208 return "SPV_NV_shading_rate"; 209 case Extension::kSPV_NV_stereo_view_rendering: 210 return "SPV_NV_stereo_view_rendering"; 211 case Extension::kSPV_NV_viewport_array2: 212 return "SPV_NV_viewport_array2"; 213 case Extension::kSPV_VALIDATOR_ignore_type_decl_unique: 214 return "SPV_VALIDATOR_ignore_type_decl_unique"; 215 } 216 217 return ""; 218} 219 220 221 bool GetExtensionFromString(const char* str, Extension* extension) { 222 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_early_and_late_fragment_tests", "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_mesh_shader", "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_memory_access_aliasing", "SPV_INTEL_optnone", "SPV_INTEL_shader_integer_functions2", "SPV_INTEL_split_barrier", "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_shader_barycentric", "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_cull_mask", "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_rotate", "SPV_KHR_subgroup_uniform_control_flow", "SPV_KHR_subgroup_vote", "SPV_KHR_terminate_invocation", "SPV_KHR_uniform_group_instructions", "SPV_KHR_variable_pointers", "SPV_KHR_vulkan_memory_model", "SPV_KHR_workgroup_memory_explicit_layout", "SPV_NVX_multiview_per_view_attributes", "SPV_NV_bindless_texture", "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" }; 223 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_early_and_late_fragment_tests, 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_mesh_shader, 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_memory_access_aliasing, Extension::kSPV_INTEL_optnone, Extension::kSPV_INTEL_shader_integer_functions2, Extension::kSPV_INTEL_split_barrier, 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_shader_barycentric, 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_cull_mask, 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_rotate, Extension::kSPV_KHR_subgroup_uniform_control_flow, Extension::kSPV_KHR_subgroup_vote, Extension::kSPV_KHR_terminate_invocation, Extension::kSPV_KHR_uniform_group_instructions, 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_bindless_texture, 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 }; 224 const auto b = std::begin(known_ext_strs); 225 const auto e = std::end(known_ext_strs); 226 const auto found = std::equal_range( 227 b, e, str, [](const char* str1, const char* str2) { 228 return std::strcmp(str1, str2) < 0; 229 }); 230 if (found.first == e || found.first == found.second) return false; 231 232 *extension = known_ext_ids[found.first - b]; 233 return true; 234 } 235 236 237const char* CapabilityToString(spv::Capability capability) { 238 switch (capability) { 239 case spv::Capability::Matrix: 240 return "Matrix"; 241 case spv::Capability::Shader: 242 return "Shader"; 243 case spv::Capability::Geometry: 244 return "Geometry"; 245 case spv::Capability::Tessellation: 246 return "Tessellation"; 247 case spv::Capability::Addresses: 248 return "Addresses"; 249 case spv::Capability::Linkage: 250 return "Linkage"; 251 case spv::Capability::Kernel: 252 return "Kernel"; 253 case spv::Capability::Vector16: 254 return "Vector16"; 255 case spv::Capability::Float16Buffer: 256 return "Float16Buffer"; 257 case spv::Capability::Float16: 258 return "Float16"; 259 case spv::Capability::Float64: 260 return "Float64"; 261 case spv::Capability::Int64: 262 return "Int64"; 263 case spv::Capability::Int64Atomics: 264 return "Int64Atomics"; 265 case spv::Capability::ImageBasic: 266 return "ImageBasic"; 267 case spv::Capability::ImageReadWrite: 268 return "ImageReadWrite"; 269 case spv::Capability::ImageMipmap: 270 return "ImageMipmap"; 271 case spv::Capability::Pipes: 272 return "Pipes"; 273 case spv::Capability::Groups: 274 return "Groups"; 275 case spv::Capability::DeviceEnqueue: 276 return "DeviceEnqueue"; 277 case spv::Capability::LiteralSampler: 278 return "LiteralSampler"; 279 case spv::Capability::AtomicStorage: 280 return "AtomicStorage"; 281 case spv::Capability::Int16: 282 return "Int16"; 283 case spv::Capability::TessellationPointSize: 284 return "TessellationPointSize"; 285 case spv::Capability::GeometryPointSize: 286 return "GeometryPointSize"; 287 case spv::Capability::ImageGatherExtended: 288 return "ImageGatherExtended"; 289 case spv::Capability::StorageImageMultisample: 290 return "StorageImageMultisample"; 291 case spv::Capability::UniformBufferArrayDynamicIndexing: 292 return "UniformBufferArrayDynamicIndexing"; 293 case spv::Capability::SampledImageArrayDynamicIndexing: 294 return "SampledImageArrayDynamicIndexing"; 295 case spv::Capability::StorageBufferArrayDynamicIndexing: 296 return "StorageBufferArrayDynamicIndexing"; 297 case spv::Capability::StorageImageArrayDynamicIndexing: 298 return "StorageImageArrayDynamicIndexing"; 299 case spv::Capability::ClipDistance: 300 return "ClipDistance"; 301 case spv::Capability::CullDistance: 302 return "CullDistance"; 303 case spv::Capability::ImageCubeArray: 304 return "ImageCubeArray"; 305 case spv::Capability::SampleRateShading: 306 return "SampleRateShading"; 307 case spv::Capability::ImageRect: 308 return "ImageRect"; 309 case spv::Capability::SampledRect: 310 return "SampledRect"; 311 case spv::Capability::GenericPointer: 312 return "GenericPointer"; 313 case spv::Capability::Int8: 314 return "Int8"; 315 case spv::Capability::InputAttachment: 316 return "InputAttachment"; 317 case spv::Capability::SparseResidency: 318 return "SparseResidency"; 319 case spv::Capability::MinLod: 320 return "MinLod"; 321 case spv::Capability::Sampled1D: 322 return "Sampled1D"; 323 case spv::Capability::Image1D: 324 return "Image1D"; 325 case spv::Capability::SampledCubeArray: 326 return "SampledCubeArray"; 327 case spv::Capability::SampledBuffer: 328 return "SampledBuffer"; 329 case spv::Capability::ImageBuffer: 330 return "ImageBuffer"; 331 case spv::Capability::ImageMSArray: 332 return "ImageMSArray"; 333 case spv::Capability::StorageImageExtendedFormats: 334 return "StorageImageExtendedFormats"; 335 case spv::Capability::ImageQuery: 336 return "ImageQuery"; 337 case spv::Capability::DerivativeControl: 338 return "DerivativeControl"; 339 case spv::Capability::InterpolationFunction: 340 return "InterpolationFunction"; 341 case spv::Capability::TransformFeedback: 342 return "TransformFeedback"; 343 case spv::Capability::GeometryStreams: 344 return "GeometryStreams"; 345 case spv::Capability::StorageImageReadWithoutFormat: 346 return "StorageImageReadWithoutFormat"; 347 case spv::Capability::StorageImageWriteWithoutFormat: 348 return "StorageImageWriteWithoutFormat"; 349 case spv::Capability::MultiViewport: 350 return "MultiViewport"; 351 case spv::Capability::SubgroupDispatch: 352 return "SubgroupDispatch"; 353 case spv::Capability::NamedBarrier: 354 return "NamedBarrier"; 355 case spv::Capability::PipeStorage: 356 return "PipeStorage"; 357 case spv::Capability::GroupNonUniform: 358 return "GroupNonUniform"; 359 case spv::Capability::GroupNonUniformVote: 360 return "GroupNonUniformVote"; 361 case spv::Capability::GroupNonUniformArithmetic: 362 return "GroupNonUniformArithmetic"; 363 case spv::Capability::GroupNonUniformBallot: 364 return "GroupNonUniformBallot"; 365 case spv::Capability::GroupNonUniformShuffle: 366 return "GroupNonUniformShuffle"; 367 case spv::Capability::GroupNonUniformShuffleRelative: 368 return "GroupNonUniformShuffleRelative"; 369 case spv::Capability::GroupNonUniformClustered: 370 return "GroupNonUniformClustered"; 371 case spv::Capability::GroupNonUniformQuad: 372 return "GroupNonUniformQuad"; 373 case spv::Capability::ShaderLayer: 374 return "ShaderLayer"; 375 case spv::Capability::ShaderViewportIndex: 376 return "ShaderViewportIndex"; 377 case spv::Capability::UniformDecoration: 378 return "UniformDecoration"; 379 case spv::Capability::CoreBuiltinsARM: 380 return "CoreBuiltinsARM"; 381 case spv::Capability::TileImageColorReadAccessEXT: 382 return "TileImageColorReadAccessEXT"; 383 case spv::Capability::TileImageDepthReadAccessEXT: 384 return "TileImageDepthReadAccessEXT"; 385 case spv::Capability::TileImageStencilReadAccessEXT: 386 return "TileImageStencilReadAccessEXT"; 387 case spv::Capability::FragmentShadingRateKHR: 388 return "FragmentShadingRateKHR"; 389 case spv::Capability::SubgroupBallotKHR: 390 return "SubgroupBallotKHR"; 391 case spv::Capability::DrawParameters: 392 return "DrawParameters"; 393 case spv::Capability::WorkgroupMemoryExplicitLayoutKHR: 394 return "WorkgroupMemoryExplicitLayoutKHR"; 395 case spv::Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR: 396 return "WorkgroupMemoryExplicitLayout8BitAccessKHR"; 397 case spv::Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR: 398 return "WorkgroupMemoryExplicitLayout16BitAccessKHR"; 399 case spv::Capability::SubgroupVoteKHR: 400 return "SubgroupVoteKHR"; 401 case spv::Capability::StorageBuffer16BitAccess: 402 return "StorageBuffer16BitAccess"; 403 case spv::Capability::UniformAndStorageBuffer16BitAccess: 404 return "UniformAndStorageBuffer16BitAccess"; 405 case spv::Capability::StoragePushConstant16: 406 return "StoragePushConstant16"; 407 case spv::Capability::StorageInputOutput16: 408 return "StorageInputOutput16"; 409 case spv::Capability::DeviceGroup: 410 return "DeviceGroup"; 411 case spv::Capability::MultiView: 412 return "MultiView"; 413 case spv::Capability::VariablePointersStorageBuffer: 414 return "VariablePointersStorageBuffer"; 415 case spv::Capability::VariablePointers: 416 return "VariablePointers"; 417 case spv::Capability::AtomicStorageOps: 418 return "AtomicStorageOps"; 419 case spv::Capability::SampleMaskPostDepthCoverage: 420 return "SampleMaskPostDepthCoverage"; 421 case spv::Capability::StorageBuffer8BitAccess: 422 return "StorageBuffer8BitAccess"; 423 case spv::Capability::UniformAndStorageBuffer8BitAccess: 424 return "UniformAndStorageBuffer8BitAccess"; 425 case spv::Capability::StoragePushConstant8: 426 return "StoragePushConstant8"; 427 case spv::Capability::DenormPreserve: 428 return "DenormPreserve"; 429 case spv::Capability::DenormFlushToZero: 430 return "DenormFlushToZero"; 431 case spv::Capability::SignedZeroInfNanPreserve: 432 return "SignedZeroInfNanPreserve"; 433 case spv::Capability::RoundingModeRTE: 434 return "RoundingModeRTE"; 435 case spv::Capability::RoundingModeRTZ: 436 return "RoundingModeRTZ"; 437 case spv::Capability::RayQueryProvisionalKHR: 438 return "RayQueryProvisionalKHR"; 439 case spv::Capability::RayQueryKHR: 440 return "RayQueryKHR"; 441 case spv::Capability::RayTraversalPrimitiveCullingKHR: 442 return "RayTraversalPrimitiveCullingKHR"; 443 case spv::Capability::RayTracingKHR: 444 return "RayTracingKHR"; 445 case spv::Capability::TextureSampleWeightedQCOM: 446 return "TextureSampleWeightedQCOM"; 447 case spv::Capability::TextureBoxFilterQCOM: 448 return "TextureBoxFilterQCOM"; 449 case spv::Capability::TextureBlockMatchQCOM: 450 return "TextureBlockMatchQCOM"; 451 case spv::Capability::Float16ImageAMD: 452 return "Float16ImageAMD"; 453 case spv::Capability::ImageGatherBiasLodAMD: 454 return "ImageGatherBiasLodAMD"; 455 case spv::Capability::FragmentMaskAMD: 456 return "FragmentMaskAMD"; 457 case spv::Capability::StencilExportEXT: 458 return "StencilExportEXT"; 459 case spv::Capability::ImageReadWriteLodAMD: 460 return "ImageReadWriteLodAMD"; 461 case spv::Capability::Int64ImageEXT: 462 return "Int64ImageEXT"; 463 case spv::Capability::ShaderClockKHR: 464 return "ShaderClockKHR"; 465 case spv::Capability::ShaderEnqueueAMDX: 466 return "ShaderEnqueueAMDX"; 467 case spv::Capability::SampleMaskOverrideCoverageNV: 468 return "SampleMaskOverrideCoverageNV"; 469 case spv::Capability::GeometryShaderPassthroughNV: 470 return "GeometryShaderPassthroughNV"; 471 case spv::Capability::ShaderViewportIndexLayerEXT: 472 return "ShaderViewportIndexLayerEXT"; 473 case spv::Capability::ShaderViewportMaskNV: 474 return "ShaderViewportMaskNV"; 475 case spv::Capability::ShaderStereoViewNV: 476 return "ShaderStereoViewNV"; 477 case spv::Capability::PerViewAttributesNV: 478 return "PerViewAttributesNV"; 479 case spv::Capability::FragmentFullyCoveredEXT: 480 return "FragmentFullyCoveredEXT"; 481 case spv::Capability::MeshShadingNV: 482 return "MeshShadingNV"; 483 case spv::Capability::ImageFootprintNV: 484 return "ImageFootprintNV"; 485 case spv::Capability::MeshShadingEXT: 486 return "MeshShadingEXT"; 487 case spv::Capability::FragmentBarycentricKHR: 488 return "FragmentBarycentricKHR"; 489 case spv::Capability::ComputeDerivativeGroupQuadsNV: 490 return "ComputeDerivativeGroupQuadsNV"; 491 case spv::Capability::FragmentDensityEXT: 492 return "FragmentDensityEXT"; 493 case spv::Capability::GroupNonUniformPartitionedNV: 494 return "GroupNonUniformPartitionedNV"; 495 case spv::Capability::ShaderNonUniform: 496 return "ShaderNonUniform"; 497 case spv::Capability::RuntimeDescriptorArray: 498 return "RuntimeDescriptorArray"; 499 case spv::Capability::InputAttachmentArrayDynamicIndexing: 500 return "InputAttachmentArrayDynamicIndexing"; 501 case spv::Capability::UniformTexelBufferArrayDynamicIndexing: 502 return "UniformTexelBufferArrayDynamicIndexing"; 503 case spv::Capability::StorageTexelBufferArrayDynamicIndexing: 504 return "StorageTexelBufferArrayDynamicIndexing"; 505 case spv::Capability::UniformBufferArrayNonUniformIndexing: 506 return "UniformBufferArrayNonUniformIndexing"; 507 case spv::Capability::SampledImageArrayNonUniformIndexing: 508 return "SampledImageArrayNonUniformIndexing"; 509 case spv::Capability::StorageBufferArrayNonUniformIndexing: 510 return "StorageBufferArrayNonUniformIndexing"; 511 case spv::Capability::StorageImageArrayNonUniformIndexing: 512 return "StorageImageArrayNonUniformIndexing"; 513 case spv::Capability::InputAttachmentArrayNonUniformIndexing: 514 return "InputAttachmentArrayNonUniformIndexing"; 515 case spv::Capability::UniformTexelBufferArrayNonUniformIndexing: 516 return "UniformTexelBufferArrayNonUniformIndexing"; 517 case spv::Capability::StorageTexelBufferArrayNonUniformIndexing: 518 return "StorageTexelBufferArrayNonUniformIndexing"; 519 case spv::Capability::RayTracingPositionFetchKHR: 520 return "RayTracingPositionFetchKHR"; 521 case spv::Capability::RayTracingNV: 522 return "RayTracingNV"; 523 case spv::Capability::RayTracingMotionBlurNV: 524 return "RayTracingMotionBlurNV"; 525 case spv::Capability::VulkanMemoryModel: 526 return "VulkanMemoryModel"; 527 case spv::Capability::VulkanMemoryModelDeviceScope: 528 return "VulkanMemoryModelDeviceScope"; 529 case spv::Capability::PhysicalStorageBufferAddresses: 530 return "PhysicalStorageBufferAddresses"; 531 case spv::Capability::ComputeDerivativeGroupLinearNV: 532 return "ComputeDerivativeGroupLinearNV"; 533 case spv::Capability::RayTracingProvisionalKHR: 534 return "RayTracingProvisionalKHR"; 535 case spv::Capability::CooperativeMatrixNV: 536 return "CooperativeMatrixNV"; 537 case spv::Capability::FragmentShaderSampleInterlockEXT: 538 return "FragmentShaderSampleInterlockEXT"; 539 case spv::Capability::FragmentShaderShadingRateInterlockEXT: 540 return "FragmentShaderShadingRateInterlockEXT"; 541 case spv::Capability::ShaderSMBuiltinsNV: 542 return "ShaderSMBuiltinsNV"; 543 case spv::Capability::FragmentShaderPixelInterlockEXT: 544 return "FragmentShaderPixelInterlockEXT"; 545 case spv::Capability::DemoteToHelperInvocation: 546 return "DemoteToHelperInvocation"; 547 case spv::Capability::DisplacementMicromapNV: 548 return "DisplacementMicromapNV"; 549 case spv::Capability::RayTracingOpacityMicromapEXT: 550 return "RayTracingOpacityMicromapEXT"; 551 case spv::Capability::ShaderInvocationReorderNV: 552 return "ShaderInvocationReorderNV"; 553 case spv::Capability::BindlessTextureNV: 554 return "BindlessTextureNV"; 555 case spv::Capability::RayQueryPositionFetchKHR: 556 return "RayQueryPositionFetchKHR"; 557 case spv::Capability::RayTracingDisplacementMicromapNV: 558 return "RayTracingDisplacementMicromapNV"; 559 case spv::Capability::SubgroupShuffleINTEL: 560 return "SubgroupShuffleINTEL"; 561 case spv::Capability::SubgroupBufferBlockIOINTEL: 562 return "SubgroupBufferBlockIOINTEL"; 563 case spv::Capability::SubgroupImageBlockIOINTEL: 564 return "SubgroupImageBlockIOINTEL"; 565 case spv::Capability::SubgroupImageMediaBlockIOINTEL: 566 return "SubgroupImageMediaBlockIOINTEL"; 567 case spv::Capability::RoundToInfinityINTEL: 568 return "RoundToInfinityINTEL"; 569 case spv::Capability::FloatingPointModeINTEL: 570 return "FloatingPointModeINTEL"; 571 case spv::Capability::IntegerFunctions2INTEL: 572 return "IntegerFunctions2INTEL"; 573 case spv::Capability::FunctionPointersINTEL: 574 return "FunctionPointersINTEL"; 575 case spv::Capability::IndirectReferencesINTEL: 576 return "IndirectReferencesINTEL"; 577 case spv::Capability::AsmINTEL: 578 return "AsmINTEL"; 579 case spv::Capability::AtomicFloat32MinMaxEXT: 580 return "AtomicFloat32MinMaxEXT"; 581 case spv::Capability::AtomicFloat64MinMaxEXT: 582 return "AtomicFloat64MinMaxEXT"; 583 case spv::Capability::AtomicFloat16MinMaxEXT: 584 return "AtomicFloat16MinMaxEXT"; 585 case spv::Capability::VectorComputeINTEL: 586 return "VectorComputeINTEL"; 587 case spv::Capability::VectorAnyINTEL: 588 return "VectorAnyINTEL"; 589 case spv::Capability::ExpectAssumeKHR: 590 return "ExpectAssumeKHR"; 591 case spv::Capability::SubgroupAvcMotionEstimationINTEL: 592 return "SubgroupAvcMotionEstimationINTEL"; 593 case spv::Capability::SubgroupAvcMotionEstimationIntraINTEL: 594 return "SubgroupAvcMotionEstimationIntraINTEL"; 595 case spv::Capability::SubgroupAvcMotionEstimationChromaINTEL: 596 return "SubgroupAvcMotionEstimationChromaINTEL"; 597 case spv::Capability::VariableLengthArrayINTEL: 598 return "VariableLengthArrayINTEL"; 599 case spv::Capability::FunctionFloatControlINTEL: 600 return "FunctionFloatControlINTEL"; 601 case spv::Capability::FPGAMemoryAttributesINTEL: 602 return "FPGAMemoryAttributesINTEL"; 603 case spv::Capability::FPFastMathModeINTEL: 604 return "FPFastMathModeINTEL"; 605 case spv::Capability::ArbitraryPrecisionIntegersINTEL: 606 return "ArbitraryPrecisionIntegersINTEL"; 607 case spv::Capability::ArbitraryPrecisionFloatingPointINTEL: 608 return "ArbitraryPrecisionFloatingPointINTEL"; 609 case spv::Capability::UnstructuredLoopControlsINTEL: 610 return "UnstructuredLoopControlsINTEL"; 611 case spv::Capability::FPGALoopControlsINTEL: 612 return "FPGALoopControlsINTEL"; 613 case spv::Capability::KernelAttributesINTEL: 614 return "KernelAttributesINTEL"; 615 case spv::Capability::FPGAKernelAttributesINTEL: 616 return "FPGAKernelAttributesINTEL"; 617 case spv::Capability::FPGAMemoryAccessesINTEL: 618 return "FPGAMemoryAccessesINTEL"; 619 case spv::Capability::FPGAClusterAttributesINTEL: 620 return "FPGAClusterAttributesINTEL"; 621 case spv::Capability::LoopFuseINTEL: 622 return "LoopFuseINTEL"; 623 case spv::Capability::FPGADSPControlINTEL: 624 return "FPGADSPControlINTEL"; 625 case spv::Capability::MemoryAccessAliasingINTEL: 626 return "MemoryAccessAliasingINTEL"; 627 case spv::Capability::FPGAInvocationPipeliningAttributesINTEL: 628 return "FPGAInvocationPipeliningAttributesINTEL"; 629 case spv::Capability::FPGABufferLocationINTEL: 630 return "FPGABufferLocationINTEL"; 631 case spv::Capability::ArbitraryPrecisionFixedPointINTEL: 632 return "ArbitraryPrecisionFixedPointINTEL"; 633 case spv::Capability::USMStorageClassesINTEL: 634 return "USMStorageClassesINTEL"; 635 case spv::Capability::RuntimeAlignedAttributeINTEL: 636 return "RuntimeAlignedAttributeINTEL"; 637 case spv::Capability::IOPipesINTEL: 638 return "IOPipesINTEL"; 639 case spv::Capability::BlockingPipesINTEL: 640 return "BlockingPipesINTEL"; 641 case spv::Capability::FPGARegINTEL: 642 return "FPGARegINTEL"; 643 case spv::Capability::DotProductInputAll: 644 return "DotProductInputAll"; 645 case spv::Capability::DotProductInput4x8Bit: 646 return "DotProductInput4x8Bit"; 647 case spv::Capability::DotProductInput4x8BitPacked: 648 return "DotProductInput4x8BitPacked"; 649 case spv::Capability::DotProduct: 650 return "DotProduct"; 651 case spv::Capability::RayCullMaskKHR: 652 return "RayCullMaskKHR"; 653 case spv::Capability::CooperativeMatrixKHR: 654 return "CooperativeMatrixKHR"; 655 case spv::Capability::BitInstructions: 656 return "BitInstructions"; 657 case spv::Capability::GroupNonUniformRotateKHR: 658 return "GroupNonUniformRotateKHR"; 659 case spv::Capability::AtomicFloat32AddEXT: 660 return "AtomicFloat32AddEXT"; 661 case spv::Capability::AtomicFloat64AddEXT: 662 return "AtomicFloat64AddEXT"; 663 case spv::Capability::LongCompositesINTEL: 664 return "LongCompositesINTEL"; 665 case spv::Capability::OptNoneINTEL: 666 return "OptNoneINTEL"; 667 case spv::Capability::AtomicFloat16AddEXT: 668 return "AtomicFloat16AddEXT"; 669 case spv::Capability::DebugInfoModuleINTEL: 670 return "DebugInfoModuleINTEL"; 671 case spv::Capability::BFloat16ConversionINTEL: 672 return "BFloat16ConversionINTEL"; 673 case spv::Capability::SplitBarrierINTEL: 674 return "SplitBarrierINTEL"; 675 case spv::Capability::FPGAClusterAttributesV2INTEL: 676 return "FPGAClusterAttributesV2INTEL"; 677 case spv::Capability::FPGAKernelAttributesv2INTEL: 678 return "FPGAKernelAttributesv2INTEL"; 679 case spv::Capability::FPMaxErrorINTEL: 680 return "FPMaxErrorINTEL"; 681 case spv::Capability::FPGALatencyControlINTEL: 682 return "FPGALatencyControlINTEL"; 683 case spv::Capability::FPGAArgumentInterfacesINTEL: 684 return "FPGAArgumentInterfacesINTEL"; 685 case spv::Capability::GlobalVariableHostAccessINTEL: 686 return "GlobalVariableHostAccessINTEL"; 687 case spv::Capability::GlobalVariableFPGADecorationsINTEL: 688 return "GlobalVariableFPGADecorationsINTEL"; 689 case spv::Capability::GroupUniformArithmeticKHR: 690 return "GroupUniformArithmeticKHR"; 691 case spv::Capability::CacheControlsINTEL: 692 return "CacheControlsINTEL"; 693 case spv::Capability::Max: 694 assert(0 && "Attempting to convert spv::Capability::Max to string"); 695 return ""; 696 } 697 698 return ""; 699}