[Mesa-dev] [PATCH 2/5] nir/spirv: Add string lookup tables for a couple of SPIR-V enums

Jason Ekstrand jason at jlekstrand.net
Thu Jun 2 21:39:17 UTC 2016


Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
Cc: "12.0" <mesa-stable at lists.freedesktop.org>
---
 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 800e318..09a756b 100644
--- a/src/compiler/Makefile.sources
+++ b/src/compiler/Makefile.sources
@@ -247,6 +247,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.5.0.400.gff86faf



More information about the mesa-dev mailing list