From 2e46a5d1551854b98b0ca3c773a17f3ea5d2f7c6 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 2 Jun 2016 14:06:30 -0700 Subject: [PATCH] nir/spirv: Add string lookup tables for a couple of SPIR-V enums Signed-off-by: Jason Ekstrand Cc: "12.0" --- src/compiler/Makefile.sources | 2 + src/compiler/spirv/spirv_info.c | 150 ++++++++++++++++++++++++++++++++++++++++ src/compiler/spirv/spirv_info.h | 27 ++++++++ 3 files changed, 179 insertions(+) create mode 100644 src/compiler/spirv/spirv_info.c create mode 100644 src/compiler/spirv/spirv_info.h diff --git a/src/compiler/Makefile.sources b/src/compiler/Makefile.sources index ba773a7..5c4ea65 100644 --- a/src/compiler/Makefile.sources +++ b/src/compiler/Makefile.sources @@ -248,6 +248,8 @@ SPIRV_FILES = \ spirv/GLSL.std.450.h \ spirv/nir_spirv.h \ spirv/spirv.h \ + spirv/spirv_info.h \ + spirv/spirv_info.c \ spirv/spirv_to_nir.c \ spirv/vtn_alu.c \ spirv/vtn_cfg.c \ diff --git a/src/compiler/spirv/spirv_info.c b/src/compiler/spirv/spirv_info.c new file mode 100644 index 0000000..7a5774c --- /dev/null +++ b/src/compiler/spirv/spirv_info.c @@ -0,0 +1,150 @@ +/* + * Copyright © 2016 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_info.h" +#include "util/macros.h" + +#define CAPABILITY(cap) [SpvCapability##cap] = #cap +static const char * const capability_to_string[] = { + CAPABILITY(Matrix), + CAPABILITY(Shader), + CAPABILITY(Geometry), + CAPABILITY(Tessellation), + CAPABILITY(Addresses), + CAPABILITY(Linkage), + CAPABILITY(Kernel), + CAPABILITY(Vector16), + CAPABILITY(Float16Buffer), + CAPABILITY(Float16), + CAPABILITY(Float64), + CAPABILITY(Int64), + CAPABILITY(Int64Atomics), + CAPABILITY(ImageBasic), + CAPABILITY(ImageReadWrite), + CAPABILITY(ImageMipmap), + CAPABILITY(Pipes), + CAPABILITY(Groups), + CAPABILITY(DeviceEnqueue), + CAPABILITY(LiteralSampler), + CAPABILITY(AtomicStorage), + CAPABILITY(Int16), + CAPABILITY(TessellationPointSize), + CAPABILITY(GeometryPointSize), + CAPABILITY(ImageGatherExtended), + CAPABILITY(StorageImageMultisample), + CAPABILITY(UniformBufferArrayDynamicIndexing), + CAPABILITY(SampledImageArrayDynamicIndexing), + CAPABILITY(StorageBufferArrayDynamicIndexing), + CAPABILITY(StorageImageArrayDynamicIndexing), + CAPABILITY(ClipDistance), + CAPABILITY(CullDistance), + CAPABILITY(ImageCubeArray), + CAPABILITY(SampleRateShading), + CAPABILITY(ImageRect), + CAPABILITY(SampledRect), + CAPABILITY(GenericPointer), + CAPABILITY(Int8), + CAPABILITY(InputAttachment), + CAPABILITY(SparseResidency), + CAPABILITY(MinLod), + CAPABILITY(Sampled1D), + CAPABILITY(Image1D), + CAPABILITY(SampledCubeArray), + CAPABILITY(SampledBuffer), + CAPABILITY(ImageBuffer), + CAPABILITY(ImageMSArray), + CAPABILITY(StorageImageExtendedFormats), + CAPABILITY(ImageQuery), + CAPABILITY(DerivativeControl), + CAPABILITY(InterpolationFunction), + CAPABILITY(TransformFeedback), + CAPABILITY(GeometryStreams), + CAPABILITY(StorageImageReadWithoutFormat), + CAPABILITY(StorageImageWriteWithoutFormat), + CAPABILITY(MultiViewport), +}; + +const char * +spirv_capability_to_string(SpvCapability cap) +{ + if (cap < ARRAY_SIZE(capability_to_string)) + return capability_to_string[cap]; + else + return "unknown"; +} + +#define DECORATION(dec) [SpvDecoration##dec] = #dec +static const char * const decoration_to_string[] = { + DECORATION(RelaxedPrecision), + DECORATION(SpecId), + DECORATION(Block), + DECORATION(BufferBlock), + DECORATION(RowMajor), + DECORATION(ColMajor), + DECORATION(ArrayStride), + DECORATION(MatrixStride), + DECORATION(GLSLShared), + DECORATION(GLSLPacked), + DECORATION(CPacked), + DECORATION(BuiltIn), + DECORATION(NoPerspective), + DECORATION(Flat), + DECORATION(Patch), + DECORATION(Centroid), + DECORATION(Sample), + DECORATION(Invariant), + DECORATION(Restrict), + DECORATION(Aliased), + DECORATION(Volatile), + DECORATION(Constant), + DECORATION(Coherent), + DECORATION(NonWritable), + DECORATION(NonReadable), + DECORATION(Uniform), + DECORATION(SaturatedConversion), + DECORATION(Stream), + DECORATION(Location), + DECORATION(Component), + DECORATION(Index), + DECORATION(Binding), + DECORATION(DescriptorSet), + DECORATION(Offset), + DECORATION(XfbBuffer), + DECORATION(XfbStride), + DECORATION(FuncParamAttr), + DECORATION(FPRoundingMode), + DECORATION(FPFastMathMode), + DECORATION(LinkageAttributes), + DECORATION(NoContraction), + DECORATION(InputAttachmentIndex), + DECORATION(Alignment), +}; + +const char * +spirv_decoration_to_string(SpvDecoration dec) +{ + if (dec < ARRAY_SIZE(decoration_to_string)) + return decoration_to_string[dec]; + else + return "unknown"; +} diff --git a/src/compiler/spirv/spirv_info.h b/src/compiler/spirv/spirv_info.h new file mode 100644 index 0000000..1700001 --- /dev/null +++ b/src/compiler/spirv/spirv_info.h @@ -0,0 +1,27 @@ +/* + * Copyright © 2016 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" + +const char *spirv_capability_to_string(SpvCapability cap); +const char *spirv_decoration_to_string(SpvDecoration dec); -- 2.7.4