OSDN Git Service

nir/spirv: Add string lookup tables for a couple of SPIR-V enums
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 2 Jun 2016 21:06:30 +0000 (14:06 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Sat, 4 Jun 2016 02:29:28 +0000 (19:29 -0700)
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
src/compiler/Makefile.sources
src/compiler/spirv/spirv_info.c [new file with mode: 0644]
src/compiler/spirv/spirv_info.h [new file with mode: 0644]

index ba773a7..5c4ea65 100644 (file)
@@ -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 (file)
index 0000000..7a5774c
--- /dev/null
@@ -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 (file)
index 0000000..1700001
--- /dev/null
@@ -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);