On 27/11/17 12:21, Tapani Pälli wrote: > > > On 11/15/2017 03:22 PM, Eduardo Lima Mitev wrote: >> From: Alejandro Piñeiro <apinhe...@igalia.com> >> >> Ideally this should be generated somehow. One option would be gather >> all the extension dependencies listed on the core grammar, but there >> would be the possibility of not including some of the extensions. >> >> Note that spirv-tools is doing it just slightly better, as it has a >> hardcoded list of extensions manually took from the registry, that >> they parse to get the enum and the to_string method (see >> generate_grammar_tables.py). >> --- >> src/compiler/Makefile.sources | 2 + >> src/compiler/spirv/spirv_extensions.c | 61 >> +++++++++++++++++++++++++++++++ >> src/compiler/spirv/spirv_extensions.h | 69 >> +++++++++++++++++++++++++++++++++++ >> 3 files changed, 132 insertions(+) >> create mode 100644 src/compiler/spirv/spirv_extensions.c >> create mode 100644 src/compiler/spirv/spirv_extensions.h >> >> diff --git a/src/compiler/Makefile.sources >> b/src/compiler/Makefile.sources >> index 2ab8e163a26..f198456c751 100644 >> --- a/src/compiler/Makefile.sources >> +++ b/src/compiler/Makefile.sources >> @@ -293,6 +293,8 @@ SPIRV_FILES = \ >> spirv/GLSL.std.450.h \ >> spirv/nir_spirv.h \ >> spirv/spirv.h \ >> + spirv/spirv_extensions.c \ >> + spirv/spirv_extensions.h \ >> spirv/spirv_info.h \ >> spirv/spirv_to_nir.c \ >> spirv/vtn_alu.c \ >> diff --git a/src/compiler/spirv/spirv_extensions.c >> b/src/compiler/spirv/spirv_extensions.c >> new file mode 100644 >> index 00000000000..64d61c49d31 >> --- /dev/null >> +++ b/src/compiler/spirv/spirv_extensions.c >> @@ -0,0 +1,61 @@ >> +/* >> + * Copyright © 2017 Intel Corporation >> + * >> + * Permission is hereby granted, free of charge, to any person >> obtaining a >> + * copy of this software and associated documentation files (the >> "Software"), >> + * to deal in the Software without restriction, including without >> limitation >> + * the rights to use, copy, modify, merge, publish, distribute, >> sublicense, >> + * and/or sell copies of the Software, and to permit persons to whom >> the >> + * Software is furnished to do so, subject to the following conditions: >> + * >> + * The above copyright notice and this permission notice (including >> the next >> + * paragraph) shall be included in all copies or substantial >> portions of the >> + * Software. >> + * >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, >> EXPRESS OR >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF >> MERCHANTABILITY, >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO >> EVENT SHALL >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES >> OR OTHER >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, >> ARISING >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >> OTHER DEALINGS >> + * IN THE SOFTWARE. >> + */ >> + >> +#include "spirv.h" >> +#include "spirv_extensions.h" >> + >> +const char * >> +spirv_extensions_to_string(SpvExtension ext) >> +{ >> + switch (ext) { >> + case SPV_AMD_shader_explicit_vertex_parameter: return >> "SPV_AMD_shader_explicit_vertex_parameter"; >> + case SPV_AMD_shader_trinary_minmax: return >> "SPV_AMD_shader_trinary_minmax"; >> + case SPV_AMD_gcn_shader: return "SPV_AMD_gcn_shader"; >> + case SPV_KHR_shader_ballot: return "SPV_KHR_shader_ballot"; >> + case SPV_AMD_shader_ballot: return "SPV_AMD_shader_ballot"; >> + case SPV_AMD_gpu_shader_half_float: return >> "SPV_AMD_gpu_shader_half_float"; >> + case SPV_KHR_shader_draw_parameters: return >> "SPV_KHR_shader_draw_parameters"; >> + case SPV_KHR_subgroup_vote: return "SPV_KHR_subgroup_vote"; >> + case SPV_KHR_16bit_storage: return "SPV_KHR_16bit_storage"; >> + case SPV_KHR_device_group: return "SPV_KHR_device_group"; >> + case SPV_KHR_multiview: return "SPV_KHR_multiview"; >> + case SPV_NVX_multiview_per_view_attributes: return >> "SPV_NVX_multiview_per_view_attributes"; >> + case SPV_NV_viewport_array2: return "SPV_NV_viewport_array2"; >> + case SPV_NV_stereo_view_rendering: return >> "SPV_NV_stereo_view_rendering"; >> + case SPV_NV_sample_mask_override_coverage: return >> "SPV_NV_sample_mask_override_coverage"; >> + case SPV_NV_geometry_shader_passthrough: return >> "SPV_NV_geometry_shader_passthrough"; >> + case SPV_AMD_texture_gather_bias_lod: return >> "SPV_AMD_texture_gather_bias_lod"; >> + case SPV_KHR_storage_buffer_storage_class: return >> "SPV_KHR_storage_buffer_storage_class"; >> + case SPV_KHR_variable_pointers: return "SPV_KHR_variable_pointers"; >> + case SPV_AMD_gpu_shader_int16: return "SPV_AMD_gpu_shader_int16"; >> + case SPV_KHR_post_depth_coverage: return >> "SPV_KHR_post_depth_coverage"; >> + case SPV_KHR_shader_atomic_counter_ops: return >> "SPV_KHR_shader_atomic_counter_ops"; >> + case SPV_EXT_shader_stencil_export: return >> "SPV_EXT_shader_stencil_export"; >> + case SPV_EXT_shader_viewport_index_layer: return >> "SPV_EXT_shader_viewport_index_layer"; >> + case SPV_AMD_shader_image_load_store_lod: return >> "SPV_AMD_shader_image_load_store_lod"; >> + case SPV_AMD_shader_fragment_mask: return >> "SPV_AMD_shader_fragment_mask"; >> + default: return "unknown"; > > > This could make it a bit less noisy looking? > > --- 8< --- > const char * > spirv_extensions_to_string(SpvExtension ext) > { > #define STR(x) case x : return #x; > switch (ext) { > STR(SPV_AMD_shader_explicit_vertex_parameter); > ... > default: > return "unknown"; > } > #undef STR > } > --- 8< ---
Makes sense. Changed locally. Thanks for the feedback. > > >> + } >> + >> + return "unknown"; >> +} >> diff --git a/src/compiler/spirv/spirv_extensions.h >> b/src/compiler/spirv/spirv_extensions.h >> new file mode 100644 >> index 00000000000..54bc7f2dbe0 >> --- /dev/null >> +++ b/src/compiler/spirv/spirv_extensions.h >> @@ -0,0 +1,69 @@ >> +/* >> + * Copyright © 2017 Intel Corporation >> + * >> + * Permission is hereby granted, free of charge, to any person >> obtaining a >> + * copy of this software and associated documentation files (the >> "Software"), >> + * to deal in the Software without restriction, including without >> limitation >> + * the rights to use, copy, modify, merge, publish, distribute, >> sublicense, >> + * and/or sell copies of the Software, and to permit persons to whom >> the >> + * Software is furnished to do so, subject to the following conditions: >> + * >> + * The above copyright notice and this permission notice (including >> the next >> + * paragraph) shall be included in all copies or substantial >> portions of the >> + * Software. >> + * >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, >> EXPRESS OR >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF >> MERCHANTABILITY, >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO >> EVENT SHALL >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES >> OR OTHER >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, >> ARISING >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >> OTHER DEALINGS >> + * IN THE SOFTWARE. >> + */ >> + >> +#ifndef _SPIRV_EXTENSIONS_H_ >> +#define _SPIRV_EXTENSIONS_H_ >> + >> +#include "compiler/nir/nir.h" >> + >> +#ifdef __cplusplus >> +extern "C" { >> +#endif >> + >> +typedef enum SpvExtension_ { >> + SPV_AMD_shader_explicit_vertex_parameter = 0, >> + SPV_AMD_shader_trinary_minmax, >> + SPV_AMD_gcn_shader, >> + SPV_KHR_shader_ballot, >> + SPV_AMD_shader_ballot, >> + SPV_AMD_gpu_shader_half_float, >> + SPV_KHR_shader_draw_parameters, >> + SPV_KHR_subgroup_vote, >> + SPV_KHR_16bit_storage, >> + SPV_KHR_device_group, >> + SPV_KHR_multiview, >> + SPV_NVX_multiview_per_view_attributes, >> + SPV_NV_viewport_array2, >> + SPV_NV_stereo_view_rendering, >> + SPV_NV_sample_mask_override_coverage, >> + SPV_NV_geometry_shader_passthrough, >> + SPV_AMD_texture_gather_bias_lod, >> + SPV_KHR_storage_buffer_storage_class, >> + SPV_KHR_variable_pointers, >> + SPV_AMD_gpu_shader_int16, >> + SPV_KHR_post_depth_coverage, >> + SPV_KHR_shader_atomic_counter_ops, >> + SPV_EXT_shader_stencil_export, >> + SPV_EXT_shader_viewport_index_layer, >> + SPV_AMD_shader_image_load_store_lod, >> + SPV_AMD_shader_fragment_mask, >> + SPV_EXTENSIONS_COUNT >> +} SpvExtension; >> + >> +const char *spirv_extensions_to_string(SpvExtension ext); >> + >> +#ifdef __cplusplus >> +} >> +#endif >> + >> +#endif /* SPIRV_EXTENSIONS */ >> > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev