diff options
author | Marcin Kańtoch <marcin.kantoch@amd.com> | 2020-09-15 13:35:35 +0200 |
---|---|---|
committer | Marcin Kańtoch <marcin.kantoch@amd.com> | 2020-09-15 14:22:35 +0200 |
commit | 3186d2f5e74588fa139ba646be58383a801c8c3c (patch) | |
tree | 870db08b6d4ab7e963973b09151cd9b2651dc3ec | |
parent | 9112bee66eabd421a0a91c3138d12bd8ce6eb7a7 (diff) | |
download | deqp-3186d2f5e74588fa139ba646be58383a801c8c3c.tar.gz |
Coverage not correct for pixels on shared edges
Added coverage check for the second "friend" triangle.
Components: Vulkan
VK-GL-CTS Issue: 2580
Affects:
dEQP-VK.rasterization.*
Change-Id: If30814ed81fb9b91ace4655c0ba50dfbcff7b37b
-rw-r--r-- | framework/common/tcuRasterizationVerifier.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/framework/common/tcuRasterizationVerifier.cpp b/framework/common/tcuRasterizationVerifier.cpp index b39153219..ab734c780 100644 --- a/framework/common/tcuRasterizationVerifier.cpp +++ b/framework/common/tcuRasterizationVerifier.cpp @@ -2344,7 +2344,18 @@ bool verifyTriangleGroupRasterization (const tcu::Surface& surface, const Triang bool friendFound = false; for (int friendTriNdx = 0; friendTriNdx < (int)scene.triangles.size(); ++friendTriNdx) { - if (friendTriNdx != triNdx && pixelOnlyOnASharedEdge(tcu::IVec2(x, y), scene.triangles[friendTriNdx], viewportSize)) + if (friendTriNdx == triNdx) + continue; + + const CoverageType friendCoverage = calculateTriangleCoverage(scene.triangles[friendTriNdx].positions[0], + scene.triangles[friendTriNdx].positions[1], + scene.triangles[friendTriNdx].positions[2], + tcu::IVec2(x, y), + viewportSize, + subPixelBits, + multisampled); + + if (friendCoverage != COVERAGE_NONE && pixelOnlyOnASharedEdge(tcu::IVec2(x, y), scene.triangles[friendTriNdx], viewportSize)) { friendFound = true; break; |