return verifyLineGroupPixelIndependentInterpolation(surface, scene, args, log, LINEINTERPOLATION_STRICTLY_CORRECT);
}
+bool verifyLineGroupInterpolationWithNonProjectedWeights (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
+{
+ return verifyLineGroupPixelIndependentInterpolation(surface, scene, args, log, LINEINTERPOLATION_STRICTLY_CORRECT);
+}
+
bool verifyLineGroupInterpolationWithProjectedWeights (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
{
return verifyLineGroupPixelIndependentInterpolation(surface, scene, args, log, LINEINTERPOLATION_PROJECTED);
{
if (verifySinglesampleWideLineGroupInterpolation(surface, scene, args, log))
return LINEINTERPOLATION_STRICTLY_CORRECT;
+
+ if (scene.allowNonProjectedInterpolation &&
+ verifyLineGroupInterpolationWithNonProjectedWeights(surface, scene, args, log))
+ return LINEINTERPOLATION_STRICTLY_CORRECT;
}
// check with projected (inaccurate) interpolation
scene.lineWidth = m_lineWidth;
scene.stippleFactor = 1;
scene.stipplePattern = 0xFFFF;
+ scene.allowNonProjectedInterpolation = true;
compareOk = verifyLineGroupRasterization(resultImage, scene, args, m_testCtx.getLog());
scene.lineWidth = m_lineWidth;
scene.stippleFactor = 1;
scene.stipplePattern = 0xFFFF;
+ scene.allowNonProjectedInterpolation = true;
iterationResult = verifyLineGroupInterpolation(resultImage, scene, args, m_testCtx.getLog());
scene.lineWidth = lineWidth;
scene.stippleFactor = 1;
scene.stipplePattern = 0xFFFF;
+ scene.allowNonProjectedInterpolation = true;
compareOk = verifyLineGroupRasterization(resultImage, scene, args, m_testCtx.getLog());
scene.lineWidth = getLineWidth();
scene.stippleFactor = 1;
scene.stipplePattern = 0xFFFF;
+ scene.allowNonProjectedInterpolation = true;
iterationResult = verifyLineGroupInterpolation(resultImage, scene, args, m_testCtx.getLog());