Fixes sync test shader instance counts
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / modules / vulkan / synchronization / vktSynchronizationOperationMultiQueueTests.cpp
index 8f97897..8a292e7 100644 (file)
@@ -374,8 +374,19 @@ public:
                                const Data      expected        = writeOp->getData();
                                const Data      actual          = readOp->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<const deUint32*>(expected.data)[0];
+                                       const deUint32 actualValue   = reinterpret_cast<const deUint32*>(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");
@@ -441,8 +452,19 @@ public:
                                const Data      expected = writeOp->getData();
                                const Data      actual   = readOp->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<const deUint32*>(expected.data)[0];
+                                       const deUint32 actualValue   = reinterpret_cast<const deUint32*>(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");