From 830fe40ab6ca2626855deb653bb65ef9901a53c4 Mon Sep 17 00:00:00 2001 From: Graeme Leese Date: Fri, 20 Mar 2020 13:30:31 +0000 Subject: [PATCH] More vertex-invocation fixes for synchronisation tests The fix for multiple vertex-shader instances was missed when the timeline semaphore version of these tests was added. This is the fix from https://gerrit.khronos.org/c/4451 applied to these new tests. Components: Vulkan VK-GL-CTS issue: 2253, 1958 Affects: dEQP-VK.synchronization.op.*.timeline_semaphore.write_indirect_buffer_draw* Change-Id: I6013ef88a0acd362948c179416928c1d3fc064dd --- .../vktSynchronizationOperationMultiQueueTests.cpp | 15 +++++++++++++-- .../vktSynchronizationOperationSingleQueueTests.cpp | 15 +++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationMultiQueueTests.cpp b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationMultiQueueTests.cpp index 642d0bf..4f43c05 100644 --- a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationMultiQueueTests.cpp +++ b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationMultiQueueTests.cpp @@ -640,8 +640,19 @@ public: const Data expected = m_ops.front()->getData(); const Data actual = m_ops.back()->getData(); - if (0 != deMemCmp(expected.data, actual.data, expected.size)) - return tcu::TestStatus::fail("Memory contents don't match"); + if (isIndirectBuffer(m_resourceDesc.type)) + { + const deUint32 expectedValue = reinterpret_cast(expected.data)[0]; + const deUint32 actualValue = reinterpret_cast(actual.data)[0]; + + if (actualValue < expectedValue) + return tcu::TestStatus::fail("Counter value is smaller than expected"); + } + else + { + if (0 != deMemCmp(expected.data, actual.data, expected.size)) + return tcu::TestStatus::fail("Memory contents don't match"); + } } // Make the validation layers happy. diff --git a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationSingleQueueTests.cpp b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationSingleQueueTests.cpp index 64d5920..c5a92a7 100644 --- a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationSingleQueueTests.cpp +++ b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationSingleQueueTests.cpp @@ -435,8 +435,19 @@ public: const Data expected = m_ops.front()->getData(); const Data actual = m_ops.back()->getData(); - if (0 != deMemCmp(expected.data, actual.data, expected.size)) - return tcu::TestStatus::fail("Memory contents don't match"); + if (isIndirectBuffer(m_resources[0]->getType())) + { + const deUint32 expectedValue = reinterpret_cast(expected.data)[0]; + const deUint32 actualValue = reinterpret_cast(actual.data)[0]; + + if (actualValue < expectedValue) + return tcu::TestStatus::fail("Counter value is smaller than expected"); + } + else + { + if (0 != deMemCmp(expected.data, actual.data, expected.size)) + return tcu::TestStatus::fail("Memory contents don't match"); + } } return tcu::TestStatus::pass("OK"); -- 2.7.4