diff options
author | Lei Zhang <antiagainst@google.com> | 2015-11-11 16:50:55 -0500 |
---|---|---|
committer | David Neto <dneto@google.com> | 2015-11-12 09:43:20 -0500 |
commit | 8984f6f31f1ed2c9bba94e1ebe10c651a44a68c1 (patch) | |
tree | baf180eedf830e1b791402625e22bde6be107498 /source/spirv_definition.h | |
parent | d02f68ae790d50644b0e5c02897b04575cf8afa7 (diff) | |
download | spirv-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.h | 51 |
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_ |