Output depth image in case of failure
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Thu, 24 Sep 2020 10:15:23 +0000 (12:15 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 8 Oct 2020 07:09:16 +0000 (03:09 -0400)
Affects:

   dEQP-VK.draw.inverted_depth_ranges.*

Components: Vulkan
VK-GL-CTS issue: 2446

Change-Id: Ic60c321d8889638af71e5ed4828bfcd007a7e8f3

external/vulkancts/modules/vulkan/draw/vktDrawInvertedDepthRangesTests.cpp

index 0b547c2..3144dd9 100644 (file)
@@ -468,11 +468,14 @@ tcu::TestStatus InvertedDepthRangesTestInstance::iterate (void)
        auto    referenceImage  = generateReferenceImage(ReferenceImageType::COLOR);
        auto    referenceDepth  = generateReferenceImage(ReferenceImageType::DEPTH);
 
+       bool fail = false;
        // Color aspect.
        if (!tcu::fuzzyCompare(log, "Image compare", "Image compare", referenceImage->getAccess(), resultImage, 0.02f, tcu::COMPARE_LOG_RESULT))
-               return tcu::TestStatus::fail("Rendered image is incorrect");
+               fail = true;
 
        // Depth aspect.
+       bool depthFail = false;
+
        const auto refWidth                     = referenceDepth->getWidth();
        const auto refHeight            = referenceDepth->getHeight();
        const auto refAccess            = referenceDepth->getAccess();
@@ -482,7 +485,6 @@ tcu::TestStatus InvertedDepthRangesTestInstance::iterate (void)
        const tcu::Vec4 kGreen          (0.0f, 1.0f, 0.0f, 1.0f);
        const tcu::Vec4 kRed            (1.0f, 0.0f, 0.0f, 1.0f);
 
-       bool fail = false;
        tcu::clear(errorAccess, kGreen);
 
        for (int y = 0; y < refHeight; ++y)
@@ -498,17 +500,22 @@ tcu::TestStatus InvertedDepthRangesTestInstance::iterate (void)
                const auto resValue = resultDepth.getPixDepth(x, y);
                if (!de::inRange(resValue, refValue - kDepthThreshold, refValue + kDepthThreshold))
                {
-                       fail = true;
+                       depthFail = true;
                        errorAccess.setPixel(kRed, x, y);
                }
        }
 
-       if (fail)
+       if (depthFail)
        {
-               log << tcu::TestLog::Image("ErrorMask", "Error mask", errorAccess);
-               return tcu::TestStatus::fail("Result depth buffer is incorrect");
+               log << tcu::TestLog::Message << "Depth Image comparison failed" << tcu::TestLog::EndMessage;
+               log     << tcu::TestLog::Image("Result", "Result", resultDepth)
+                       << tcu::TestLog::Image("Reference",     "Reference", refAccess)
+                       << tcu::TestLog::Image("ErrorMask",     "Error mask", errorAccess);
        }
 
+       if (fail || depthFail)
+               return tcu::TestStatus::fail("Result images are incorrect");
+
        return tcu::TestStatus::pass("Pass");
 }