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
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
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
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",
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",
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
};
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;
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");
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
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");
}
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;
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";
}
{ "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)")
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
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
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
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