aboutsummaryrefslogtreecommitdiff
path: root/source/spirv_definition.h
diff options
context:
space:
mode:
authorLei Zhang <antiagainst@google.com>2015-11-11 16:50:55 -0500
committerDavid Neto <dneto@google.com>2015-11-12 09:43:20 -0500
commit8984f6f31f1ed2c9bba94e1ebe10c651a44a68c1 (patch)
treebaf180eedf830e1b791402625e22bde6be107498 /source/spirv_definition.h
parentd02f68ae790d50644b0e5c02897b04575cf8afa7 (diff)
downloadspirv-tools-8984f6f31f1ed2c9bba94e1ebe10c651a44a68c1.tar.gz
Move internal macros/structs for SPIR-V to a separate header.
Diffstat (limited to 'source/spirv_definition.h')
-rw-r--r--source/spirv_definition.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/source/spirv_definition.h b/source/spirv_definition.h
new file mode 100644
index 00000000..0517a863
--- /dev/null
+++ b/source/spirv_definition.h
@@ -0,0 +1,51 @@
+// Copyright (c) 2015 The Khronos Group Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and/or associated documentation files (the
+// "Materials"), to deal in the Materials without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Materials, and to
+// permit persons to whom the Materials are furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Materials.
+//
+// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+// https://www.khronos.org/registry/
+//
+// THE MATERIALS ARE 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
+// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+#ifndef LIBSPIRV_SPIRV_DEFINITION_H_
+#define LIBSPIRV_SPIRV_DEFINITION_H_
+
+// A bit mask representing a set of capabilities.
+// Currently there are 54 distinct capabilities, so 64 bits
+// should be enough.
+typedef uint64_t spv_capability_mask_t;
+
+// Transforms spv::Capability into a mask for use in bitfields. Should really
+// be a constexpr inline function, but some important versions of MSVC don't
+// support that yet. Different from SPV_BIT, which doesn't guarantee 64-bit
+// values.
+#define SPV_CAPABILITY_AS_MASK(capability) \
+ (spv_capability_mask_t(1) << (capability))
+
+typedef struct spv_header_t {
+ uint32_t magic;
+ uint32_t version;
+ uint32_t generator;
+ uint32_t bound;
+ uint32_t schema; // NOTE: Reserved
+ const uint32_t* instructions; // NOTE: Unfixed pointer to instruciton stream
+} spv_header_t;
+
+#endif // LIBSPIRV_SPIRV_DEFINITION_H_