uvec2 tests for VK_KHR_buffer_device_address
Add variants of the 'convert' tests that convert to and from uvec2
rather than uint64_t.
Components: Vulkan
VK-GL-CTS Issue: 2018
Affects: dEQP-VK.binding_model.buffer_device_address.*
Change-Id: I9e1a2f031e295b9200faff571aae2fc5cbb9005c
(cherry picked from commit bcc3bf2dee4bcd8505c1b0c16ee05cafad185749)
diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt
index b0f4367..be06844 100644
--- a/android/cts/master/vk-master.txt
+++ b/android/cts/master/vk-master.txt
Binary files differ
diff --git a/external/fetch_sources.py b/external/fetch_sources.py
index 93a8bbb..7681f27 100644
--- a/external/fetch_sources.py
+++ b/external/fetch_sources.py
@@ -321,7 +321,7 @@
GitRepo(
"https://github.com/KhronosGroup/glslang.git",
None,
- "1ff0c181bb37b06371e2ffa2810d473c5e01c9b7",
+ "ee8e9c15222c2aff93dfea451b1e8a892497ec2d",
"glslang",
removeTags = ["master-tot"]),
GitRepo(
diff --git a/external/vulkancts/modules/vulkan/binding_model/vktBindingBufferDeviceAddressTests.cpp b/external/vulkancts/modules/vulkan/binding_model/vktBindingBufferDeviceAddressTests.cpp
index 1a77ee2..8ad11e3 100644
--- a/external/vulkancts/modules/vulkan/binding_model/vktBindingBufferDeviceAddressTests.cpp
+++ b/external/vulkancts/modules/vulkan/binding_model/vktBindingBufferDeviceAddressTests.cpp
@@ -90,13 +90,20 @@
LAYOUT_SCALAR,
} Layout;
+typedef enum
+{
+ CONVERT_NONE = 0,
+ CONVERT_UTOPTR,
+ CONVERT_UVEC2,
+} Convert;
+
struct CaseDef
{
deUint32 set;
deUint32 depth;
Base base;
Stage stage;
- bool convertUToPtr;
+ Convert convertUToPtr;
bool storeInLocal;
BufType bufType;
Layout layout;
@@ -186,15 +193,22 @@
}
#endif
- if (m_data.convertUToPtr && !context.getDeviceFeatures().shaderInt64)
+ if (m_data.convertUToPtr == CONVERT_UTOPTR && !context.getDeviceFeatures().shaderInt64)
TCU_THROW(NotSupportedError, "Int64 not supported");
+ if (m_data.convertUToPtr == CONVERT_UVEC2 && !context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address"))
+ TCU_THROW(NotSupportedError, "VK_KHR_buffer_device_address not supported");
}
void BufferAddressTestCase::checkBuffer (std::stringstream& checks, deUint32 bufNum, deUint32 curDepth, const std::string &prefix) const
{
string newPrefix = prefix;
- if (curDepth > 0 && m_data.convertUToPtr)
- newPrefix = "T1(uint64_t(T1(" + newPrefix + ")))";
+ if (curDepth > 0)
+ {
+ if (m_data.convertUToPtr == CONVERT_UTOPTR)
+ newPrefix = "T1(uint64_t(T1(" + newPrefix + ")))";
+ else if (m_data.convertUToPtr == CONVERT_UVEC2)
+ newPrefix = "T1(uvec2(T1(" + newPrefix + ")))";
+ }
if (m_data.storeInLocal && curDepth != 0)
{
@@ -279,7 +293,7 @@
decls << "layout(r32ui, set = " << m_data.set << ", binding = 0) uniform uimage2D image0_0;\n";
decls << "layout(buffer_reference) " << memberStorage << " T1;\n";
- std::string refType = m_data.convertUToPtr ? "uint64_t" : "T1";
+ std::string refType = m_data.convertUToPtr == CONVERT_UTOPTR ? "uint64_t" : m_data.convertUToPtr == CONVERT_UVEC2 ? "uvec2" : "T1";
std::string layout = m_data.layout == LAYOUT_SCALAR ? "scalar" : "std140";
decls <<
"layout(set = " << m_data.set << ", binding = 1, " << layout << ") " << baseStorage << " T2 {\n"
@@ -320,6 +334,7 @@
"#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
"#extension GL_EXT_buffer_reference : enable\n"
"#extension GL_EXT_scalar_block_layout : enable\n"
+ "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
<< pushdecl.str()
<< decls.str() <<
"layout(local_size_x = 1, local_size_y = 1) in;\n"
@@ -345,6 +360,7 @@
"#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
"#extension GL_EXT_buffer_reference : enable\n"
"#extension GL_EXT_scalar_block_layout : enable\n"
+ "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
"#extension GL_NV_ray_tracing : require\n"
<< pushdecl.str()
<< decls.str() <<
@@ -370,6 +386,7 @@
"#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
"#extension GL_EXT_buffer_reference : enable\n"
"#extension GL_EXT_scalar_block_layout : enable\n"
+ "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
<< pushdecl.str()
<< decls.str() <<
"void main()\n"
@@ -405,6 +422,7 @@
"#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
"#extension GL_EXT_buffer_reference : enable\n"
"#extension GL_EXT_scalar_block_layout : enable\n"
+ "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
<< pushdecl.str()
<< decls.str() <<
"void main()\n"
@@ -1238,8 +1256,9 @@
TestGroupCase cvtCases[] =
{
- { 0, "load", "load reference" },
- { 1, "convert", "load and convert reference" },
+ { CONVERT_NONE, "load", "load reference" },
+ { CONVERT_UTOPTR, "convert", "load and convert reference" },
+ { CONVERT_UVEC2, "convertuvec2", "load and convert reference to uvec2" },
};
TestGroupCase storeCases[] =
@@ -1300,7 +1319,7 @@
depthCases[depthNdx].count, // deUint32 depth;
(Base)baseCases[baseNdx].count, // Base base;
(Stage)stageCases[stageNdx].count, // Stage stage;
- !!cvtCases[cvtNdx].count, // bool convertUToPtr;
+ (Convert)cvtCases[cvtNdx].count, // Convert convertUToPtr;
!!storeCases[storeNdx].count, // bool storeInLocal;
(BufType)btCases[btNdx].count, // BufType bufType;
(Layout)layoutCases[layoutNdx].count, // Layout layout;
diff --git a/external/vulkancts/mustpass/master/vk-default-no-waivers.txt b/external/vulkancts/mustpass/master/vk-default-no-waivers.txt
index 28b46ef..5d9f970 100644
--- a/external/vulkancts/mustpass/master/vk-default-no-waivers.txt
+++ b/external/vulkancts/mustpass/master/vk-default-no-waivers.txt
Binary files differ
diff --git a/external/vulkancts/mustpass/master/vk-default.txt b/external/vulkancts/mustpass/master/vk-default.txt
index 0d828ba..e1b6991 100644
--- a/external/vulkancts/mustpass/master/vk-default.txt
+++ b/external/vulkancts/mustpass/master/vk-default.txt
Binary files differ