Adjust out of surface verification for wide lines

Wide lines rasterization tests may draw lines out of
the allocated surfaces. Such situation causes verification
failures.
This change adjust the verification algorithm to ignore
missing pixels for out of surface rendering.

Components: Framework

Affects:
dEQP-GLES2.functional.rasterization.primitives.lines_wide
dEQP-GLES2.functional.rasterization.primitives.line_strip_wide
dEQP-GLES2.functional.rasterization.primitives.line_loop_wide

Change-Id: Ia70f33fb6daad0d3774ae9edbd438bd14296f1d3
diff --git a/framework/common/tcuRasterizationVerifier.cpp b/framework/common/tcuRasterizationVerifier.cpp
index 56a9bb7..e341398 100644
--- a/framework/common/tcuRasterizationVerifier.cpp
+++ b/framework/common/tcuRasterizationVerifier.cpp
@@ -1291,6 +1291,9 @@
 				if (result)
 				{
 					bool multipleNearbyLines = false;
+					bool renderAtSurfaceEdge = false;
+
+					renderAtSurfaceEdge = (x == 1) || (x == referenceLineMap.getWidth() - 2);
 
 					for (int dy = -1; dy < 2; ++dy)
 					for (int dx = -1; dx < 2; ++dx)
@@ -1304,9 +1307,10 @@
 						}
 					}
 
-					if (multipleNearbyLines)
+					if (multipleNearbyLines || renderAtSurfaceEdge)
 					{
 						// Another line is too close, don't try to calculate width here
+						// Or the render result is outside of surface range
 						previousPixelUndefined = true;
 						continue;
 					}
@@ -1372,6 +1376,9 @@
 				if (result)
 				{
 					bool multipleNearbyLines = false;
+					bool renderAtSurfaceEdge = false;
+
+					renderAtSurfaceEdge = (y == 1) || (y == referenceLineMap.getWidth() - 2);
 
 					for (int dy = -1; dy < 2; ++dy)
 					for (int dx = -1; dx < 2; ++dx)
@@ -1385,9 +1392,10 @@
 						}
 					}
 
-					if (multipleNearbyLines)
+					if (multipleNearbyLines || renderAtSurfaceEdge)
 					{
 						// Another line is too close, don't try to calculate width here
+						// Or the render result is outside of surface range
 						previousPixelUndefined = true;
 						continue;
 					}