Add Vulkan framework enums for SPIR-V 1.4
authorDavid Neto <dneto@google.com>
Fri, 1 Mar 2019 22:39:17 +0000 (17:39 -0500)
committerDavid Neto <dneto@google.com>
Thu, 14 Mar 2019 21:28:48 +0000 (17:28 -0400)
Currently, no version of Vulkan requires support for SPIR-V 1.4.
Use of SPIR-V 1.4 requires an extension.

Therefore helper function getMaxSpirvVersionForAsm still returns at most
SPIRV_VERSION_1_3.  The affected SPIR-V 1.4 tests are added, but should
not run because they should be "not supported".

Update external/fetch_sources.py to get preliminary SPIRV-Headers
and SPIRV-Tools support for SPIR-V 1.4.  Relies on gitlab-prelim-rc12
tags those Gitlab repos.

Components: Vulkan

Affects:
dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_vertex
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_evaluation
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment

VK-GL-CTS issue: 1636

Change-Id: Ia1da3255d55b2db4d4a7c8ff5e4ef53057e96dd0

android/cts/master/vk-master.txt
external/fetch_sources.py
external/vulkancts/framework/vulkan/vkDefs.hpp
external/vulkancts/framework/vulkan/vkPrograms.cpp
external/vulkancts/modules/vulkan/vktBuildPrograms.cpp
external/vulkancts/mustpass/1.1.4/vk-default-no-waivers.txt
external/vulkancts/mustpass/1.1.4/vk-default.txt

index 3ec7886..b73aa92 100755 (executable)
@@ -224104,6 +224104,7 @@ dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_3_compute
+dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize
@@ -228101,6 +228102,11 @@ dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_tesselation_evalua
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_tesselation_control
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_geometry
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_fragment
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_vertex
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_evaluation
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_vert
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tesse
index 4534366..cc23cc6 100644 (file)
@@ -315,7 +315,9 @@ PACKAGES = [
        GitRepo(
                "https://gitlab.khronos.org/spirv/spirv-tools.git",
                "git@gitlab.khronos.org:spirv/spirv-tools.git",
-               "ab5b9257b69e3e6f3e87d99857af62e3f7191331",
+               # Preliminary support for SPIR-V 1.4,
+                # VK_KHR_uniform_buffer_standard_layout
+               "4d8991f7c1bd1bcc285538f68d9b9fed31131240",
                "spirv-tools"),
        GitRepo(
                "https://github.com/KhronosGroup/glslang.git",
@@ -326,7 +328,8 @@ PACKAGES = [
        GitRepo(
                "https://gitlab.khronos.org/spirv/SPIRV-Headers.git",
                "git@gitlab.khronos.org:spirv/SPIRV-Headers.git",
-               "79b6681aadcb53c27d1052e5f8a0e82a981dbf2f",
+               # Preliminary support for SPIR-V 1.4
+               "e9b9ab4f05a178a5ad1cf3ae0849aaa32de8e0a4",
                "spirv-headers"),
        GitRepo(
                "https://github.com/Igalia/vkrunner.git",
index 64d6b71..65f6a65 100644 (file)
@@ -106,6 +106,7 @@ enum SpirvVersion
        SPIRV_VERSION_1_1       = 1,    //!< SPIR-V 1.1
        SPIRV_VERSION_1_2       = 2,    //!< SPIR-V 1.2
        SPIRV_VERSION_1_3       = 3,    //!< SPIR-V 1.3
+       SPIRV_VERSION_1_4       = 4,    //!< SPIR-V 1.4
 
        SPIRV_VERSION_LAST
 };
index ab2d387..775a600 100644 (file)
@@ -889,7 +889,7 @@ vk::SpirvVersion getBaselineSpirvVersion (const deUint32 /* vulkanVersion */)
        return vk::SPIRV_VERSION_1_0;
 }
 
-// Max supported versions for each vulkan version
+// Max supported versions for each vulkan version, without requiring a Vulkan extension.
 vk::SpirvVersion getMaxSpirvVersionForAsm (const deUint32 vulkanVersion)
 {
        vk::SpirvVersion        result                  = vk::SPIRV_VERSION_LAST;
@@ -922,7 +922,7 @@ vk::SpirvVersion getMaxSpirvVersionForGlsl (const deUint32 vulkanVersion)
 
 SpirvVersion extractSpirvVersion (const ProgramBinary& binary)
 {
-       DE_STATIC_ASSERT(SPIRV_VERSION_1_3 + 1 == SPIRV_VERSION_LAST);
+       DE_STATIC_ASSERT(SPIRV_VERSION_1_4 + 1 == SPIRV_VERSION_LAST);
 
        if (binary.getFormat() != PROGRAM_FORMAT_SPIRV)
                TCU_THROW(InternalError, "Binary is not in SPIR-V format");
@@ -934,6 +934,7 @@ SpirvVersion extractSpirvVersion (const ProgramBinary& binary)
        const deUint32                          spirvBinaryVersion11    = 0x00010100;
        const deUint32                          spirvBinaryVersion12    = 0x00010200;
        const deUint32                          spirvBinaryVersion13    = 0x00010300;
+       const deUint32                          spirvBinaryVersion14    = 0x00010400;
        const SpirvBinaryHeader*        header                                  = reinterpret_cast<const SpirvBinaryHeader*>(binary.getBinary());
        const deUint32                          spirvVersion                    = isNativeSpirVBinaryEndianness()
                                                                                                                ? header->version
@@ -946,6 +947,7 @@ SpirvVersion extractSpirvVersion (const ProgramBinary& binary)
                case spirvBinaryVersion11:      result = SPIRV_VERSION_1_1; break; //!< SPIR-V 1.1
                case spirvBinaryVersion12:      result = SPIRV_VERSION_1_2; break; //!< SPIR-V 1.2
                case spirvBinaryVersion13:      result = SPIRV_VERSION_1_3; break; //!< SPIR-V 1.3
+               case spirvBinaryVersion14:      result = SPIRV_VERSION_1_4; break; //!< SPIR-V 1.4
                default:                                        TCU_THROW(InternalError, "Unknown SPIR-V version detected in binary");
        }
 
@@ -954,7 +956,7 @@ SpirvVersion extractSpirvVersion (const ProgramBinary& binary)
 
 std::string getSpirvVersionName (const SpirvVersion spirvVersion)
 {
-       DE_STATIC_ASSERT(SPIRV_VERSION_1_3 + 1 == SPIRV_VERSION_LAST);
+       DE_STATIC_ASSERT(SPIRV_VERSION_1_4 + 1 == SPIRV_VERSION_LAST);
        DE_ASSERT(spirvVersion < SPIRV_VERSION_LAST);
 
        std::string result;
@@ -965,6 +967,7 @@ std::string getSpirvVersionName (const SpirvVersion spirvVersion)
                case SPIRV_VERSION_1_1: result = "1.1"; break; //!< SPIR-V 1.1
                case SPIRV_VERSION_1_2: result = "1.2"; break; //!< SPIR-V 1.2
                case SPIRV_VERSION_1_3: result = "1.3"; break; //!< SPIR-V 1.3
+               case SPIRV_VERSION_1_4: result = "1.4"; break; //!< SPIR-V 1.4
                default:                                result = "Unknown";
        }
 
index 2138f39..3bc1071 100644 (file)
@@ -579,7 +579,7 @@ void registerOptions (de::cmdline::Parser& parser)
                { "1.1",        VK_MAKE_VERSION(1, 1, 0)        },
        };
 
-       DE_STATIC_ASSERT(vk::SPIRV_VERSION_1_3 + 1 == vk::SPIRV_VERSION_LAST);
+       DE_STATIC_ASSERT(vk::SPIRV_VERSION_1_4 + 1 == vk::SPIRV_VERSION_LAST);
 
        parser << Option<opt::DstPath>("d", "dst-path", "Destination path", "out")
                << Option<opt::Cases>("n", "deqp-case", "Case path filter (works as in test binaries)")
index f8851d6..388aa02 100644 (file)
@@ -224110,6 +224110,7 @@ dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_3_compute
+dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize
@@ -228115,6 +228116,11 @@ dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_tesselation_evalua
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_tesselation_control
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_geometry
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_fragment
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_vertex
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_evaluation
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_vert
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tesse
index 42acc41..0fc17ac 100644 (file)
@@ -224110,6 +224110,7 @@ dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_3_compute
+dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize
@@ -228115,6 +228116,11 @@ dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_tesselation_evalua
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_tesselation_control
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_geometry
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_3_fragment
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_vertex
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_evaluation
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_vert
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tesse