Merge vk-gl-cts/vulkan-cts-1.3.0 into vk-gl-cts/vulkan-cts-1.3.1
authorMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 3 Mar 2022 19:53:25 +0000 (11:53 -0800)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 3 Mar 2022 19:53:25 +0000 (11:53 -0800)
Change-Id: I13e284240b66cbaf79b74d2032bb6c5bf682ea5e

17 files changed:
external/vulkancts/framework/vulkan/vkRayTracingUtil.cpp
external/vulkancts/modules/vulkan/multiview/vktMultiViewRenderTests.cpp
external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderInvarianceTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsArithmeticTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBallotBroadcastTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBallotMasksTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBallotOtherTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBallotTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBasicTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBuiltinMaskVarTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBuiltinVarTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsClusteredTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsPartitionedTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsQuadTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsShapeTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsShuffleTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsVoteTests.cpp

index a385939..71da172 100644 (file)
@@ -1382,7 +1382,10 @@ void BottomLevelAccelerationStructureKHR::prepareGeometries (const DeviceInterfa
                        if (m_vertexBuffer.get() != DE_NULL)
                        {
                                vertexData                      = makeDeviceOrHostAddressConstKHR(vk, device, m_vertexBuffer->get(), vertexBufferOffset);
-                               vertexBufferOffset      += deAlignSize(geometryData->getVertexByteSize(), 8);
+                               if (m_indirectBuffer == DE_NULL )
+                               {
+                                       vertexBufferOffset      += deAlignSize(geometryData->getVertexByteSize(), 8);
+                               }
                        }
                        else
                                vertexData                      = makeDeviceOrHostAddressConstKHR(DE_NULL);
index d6d4995..e16b2c3 100644 (file)
@@ -710,10 +710,17 @@ void MultiViewRenderTestInstance::createMultiViewDevices (void)
                &queuePriorities                                                                                        //const float*                          pQueuePriorities;
        };
 
+       VkPhysicalDeviceDynamicRenderingFeatures dynamicRenderingFeatures       =
+       {
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,   // VkStructureType                      sType;
+               DE_NULL,                                                                                                                // void*                                        pNext;
+               DE_FALSE,                                                                                                               // VkBool32                                     dynamicRendering
+       };
+
        VkPhysicalDeviceMultiviewFeatures               multiviewFeatures               =
        {
                VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR,       // VkStructureType                      sType;
-               DE_NULL,                                                                                                        // void*                                        pNext;
+               &dynamicRenderingFeatures,                                                                      // void*                                        pNext;
                DE_FALSE,                                                                                                       // VkBool32                                     multiview;
                DE_FALSE,                                                                                                       // VkBool32                                     multiviewGeometryShader;
                DE_FALSE,                                                                                                       // VkBool32                                     multiviewTessellationShader;
index 1dbaeb6..d20a69e 100644 (file)
@@ -391,7 +391,8 @@ tcu::TestCaseGroup* createShaderInvarianceTests (tcu::TestContext& testCtx)
                { glu::PRECISION_LOWP,          "lowp",         "0.9",          "1.1",          "1.1",          "1.15",         "0.87",         6,      2,      0,      "2.0",          "1.1",  "1.0"   },
        };
 
-       static const std::string invariantDeclaration[] = { "invariant gl_Position;", "layout(location = 1) invariant highp out vec4 v_value;" };
+       // gl_Position must always be invariant for comparisons on gl_Position to be valid.
+       static const std::string invariantDeclaration[] = { "invariant gl_Position;", "invariant gl_Position;\nlayout(location = 1) invariant highp out vec4 v_value;" };
        static const std::string invariantAssignment0[] = { "gl_Position", "v_value" };
        static const std::string invariantAssignment1[] = { "", "gl_Position = v_value;" };
        static const std::string fragDeclaration[]              = { "", "layout(location = 1) highp in vec4 v_value;" };
index 195ac49..9f71c9b 100755 (executable)
@@ -326,8 +326,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute,
-                                                                                                                       size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index f9d5f08..e69839d 100755 (executable)
@@ -345,7 +345,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                };
 
                if (caseDef.subgroupSizeControl)
-                       return subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute, caseDef.requiredSubgroupSize, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       return subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute, caseDef.requiredSubgroupSize);
                else
                        return subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute);
        }
index bb2e4f0..ac56185 100755 (executable)
@@ -287,8 +287,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0u, DE_NULL, checkCompute,
-                                                                                                                               size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0u, DE_NULL, checkCompute, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index eb3210a..fbd3ae4 100755 (executable)
@@ -360,8 +360,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0u, DE_NULL, checkCompute,
-                                                                                                                  size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0u, DE_NULL, checkCompute, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index 59e57ff..b265dd9 100755 (executable)
@@ -869,8 +869,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute,
-                                                                                                                               size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index 35c01ec..d62e1da 100755 (executable)
@@ -1813,8 +1813,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                        // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                        for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                                {
-                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0u, DE_NULL, checkComputeSubgroupElect,
-                                                                                                                                       size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0u, DE_NULL, checkComputeSubgroupElect, size);
                                        if (result.getCode() != QP_TEST_RESULT_PASS)
                                                {
                                                        log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
@@ -1859,8 +1858,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                        // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                        for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                        {
-                               TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, inputDatas, inputDatasCount, DE_NULL, checkComputeSubgroupBarriers,
-                                                                                                                                       size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                               TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, inputDatas, inputDatasCount, DE_NULL, checkComputeSubgroupBarriers, size);
                                if (result.getCode() != QP_TEST_RESULT_PASS)
                                {
                                        log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index e60be33..57261af 100755 (executable)
@@ -1277,8 +1277,7 @@ TestStatus test(Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeStage,
-                                                                                                                               size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeStage, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index d15a195..d1a8608 100755 (executable)
@@ -1754,8 +1754,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                                {
-                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeSubgroupSize,
-                                                                                                                                       size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeSubgroupSize, size);
 
                                        if (result.getCode() != QP_TEST_RESULT_PASS)
                                        {
@@ -1779,8 +1778,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                                {
-                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeSubgroupInvocationID,
-                                                                                                                                       size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeSubgroupInvocationID, size);
 
                                        if (result.getCode() != QP_TEST_RESULT_PASS)
                                        {
@@ -1804,8 +1802,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                                {
-                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeNumSubgroups,
-                                                                                                                                       size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeNumSubgroups, size);
 
                                        if (result.getCode() != QP_TEST_RESULT_PASS)
                                        {
@@ -1829,8 +1826,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                                {
-                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeSubgroupID,
-                                                                                                                                       size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkComputeSubgroupID, size);
 
                                        if (result.getCode() != QP_TEST_RESULT_PASS)
                                        {
index 6d98f63..b40c8ee 100755 (executable)
@@ -253,8 +253,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute,
-                                                                                                                               size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index 79bde87..0f05573 100755 (executable)
@@ -377,8 +377,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute,
-                                                                                                                               size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index 6dda70e..6d97d88 100755 (executable)
@@ -282,8 +282,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus      result  = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute,
-                                                                                                                       size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus      result  = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index ec4cb89..8297b7b 100755 (executable)
@@ -300,8 +300,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkCompute,
-                                                                                                                               size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, DE_NULL, 0, DE_NULL, checkCompute, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index b56a5a9..5b2cbb2 100755 (executable)
@@ -326,8 +326,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, inputData, 2, DE_NULL, checkCompute,
-                                                                                                                       size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, inputData, 2, DE_NULL, checkCompute, size);
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {
                                log << TestLog::Message << "subgroupSize " << size << " failed" << TestLog::EndMessage;
index 73a8e80..0d171a4 100755 (executable)
@@ -397,7 +397,7 @@ TestStatus test (Context& context, const CaseDefinition caseDef)
                // According to the spec, requiredSubgroupSize must be a power-of-two integer.
                for (deUint32 size = subgroupSizeControlProperties.minSubgroupSize; size <= subgroupSizeControlProperties.maxSubgroupSize; size *= 2)
                {
-                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute, size, VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT);
+                       TestStatus result = subgroups::makeComputeTest(context, VK_FORMAT_R32_UINT, &inputData, 1, DE_NULL, checkCompute, size);
 
                        if (result.getCode() != QP_TEST_RESULT_PASS)
                        {