From: David Neto Date: Mon, 26 Oct 2015 19:43:12 +0000 (-0400) Subject: Update to latest registered generator enums X-Git-Tag: upstream/2018.6~1507 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1780fc4fcf6aa7ed6a979b866d7d5055c073b18e;p=platform%2Fupstream%2FSPIRV-Tools.git Update to latest registered generator enums The registry is at: https://www.khronos.org/registry/spir-v/api/spir-v.xml --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 83bd8d3..ce2c366 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -185,6 +185,7 @@ if (NOT ${SPIRV_SKIP_EXECUTABLES}) ${CMAKE_CURRENT_SOURCE_DIR}/test/ExtInst.OpenCL.std.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test/ExtInstGLSLstd450.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test/FixWord.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/test/GeneratorMagicNumber.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test/ImmediateInt.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test/LibspirvMacros.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test/NamedId.cpp diff --git a/include/libspirv/libspirv.h b/include/libspirv/libspirv.h index f52bb4f..8f2e7cd 100644 --- a/include/libspirv/libspirv.h +++ b/include/libspirv/libspirv.h @@ -107,11 +107,15 @@ typedef uint64_t spv_capability_mask_t; // Enumerations +// Values mapping to registered vendors. See the registry at +// https://www.khronos.org/registry/spir-v/api/spir-v.xml typedef enum spv_generator_t { SPV_GENERATOR_KHRONOS = 0, - SPV_GENERATOR_VALVE = 1, - SPV_GENERATOR_LUNARG = 2, + SPV_GENERATOR_LUNARG = 1, + SPV_GENERATOR_VALVE = 2, SPV_GENERATOR_CODEPLAY = 3, + SPV_GENERATOR_NVIDIA = 4, + SPV_GENERATOR_ARM = 5, SPV_FORCE_32_BIT_ENUM(spv_generator_t) } spv_generator_t; diff --git a/source/opcode.cpp b/source/opcode.cpp index f1a2200..32fe7fb 100644 --- a/source/opcode.cpp +++ b/source/opcode.cpp @@ -227,12 +227,16 @@ const char *spvGeneratorStr(uint32_t generator) { switch (generator) { case SPV_GENERATOR_KHRONOS: return "Khronos"; - case SPV_GENERATOR_VALVE: - return "Valve"; case SPV_GENERATOR_LUNARG: return "LunarG"; + case SPV_GENERATOR_VALVE: + return "Valve"; case SPV_GENERATOR_CODEPLAY: return "Codeplay Software Ltd."; + case SPV_GENERATOR_NVIDIA: + return "NVIDIA"; + case SPV_GENERATOR_ARM: + return "ARM"; default: return "Unknown"; } diff --git a/source/opcode.h b/source/opcode.h index a6d5e14..6dea4ca 100644 --- a/source/opcode.h +++ b/source/opcode.h @@ -32,7 +32,10 @@ // Functions -/// @brief Get the name of the SPIR-V generator +/// @brief Get the name of the SPIR-V generator. +/// +/// See the registry at +/// https://www.khronos.org/registry/spir-v/api/spir-v.xml /// /// @param[in] generator Khronos SPIR-V generator ID /// diff --git a/test/GeneratorMagicNumber.cpp b/test/GeneratorMagicNumber.cpp new file mode 100644 index 0000000..80f091a --- /dev/null +++ b/test/GeneratorMagicNumber.cpp @@ -0,0 +1,64 @@ +// 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. + +#include "UnitSPIRV.h" + +#include + +#include "../source/opcode.h" + +using ::spvtest::EnumCase; +using ::testing::Eq; + +namespace { + +using GeneratorMagicNumberTest = + ::testing::TestWithParam>; + +TEST_P(GeneratorMagicNumberTest, Single) { + EXPECT_THAT(std::string(spvGeneratorStr(GetParam().value())), + GetParam().name()); +} + +INSTANTIATE_TEST_CASE_P( + Registered, GeneratorMagicNumberTest, + ::testing::ValuesIn(std::vector>{ + {SPV_GENERATOR_KHRONOS, "Khronos"}, + {SPV_GENERATOR_LUNARG, "LunarG"}, + {SPV_GENERATOR_VALVE, "Valve"}, + {SPV_GENERATOR_CODEPLAY, "Codeplay Software Ltd."}, + {SPV_GENERATOR_NVIDIA, "NVIDIA"}, + {SPV_GENERATOR_ARM, "ARM"}, + })); + +INSTANTIATE_TEST_CASE_P( + Unregistered, GeneratorMagicNumberTest, + ::testing::ValuesIn(std::vector>{ + // Currently value 6 and beyond are unregiestered. + {spv_generator_t(6), "Unknown"}, + {spv_generator_t(9999), "Unknown"}, + })); +} // anonymous namespace