Lines Matching refs:scene
44 bool verifyLineGroupInterpolationWithProjectedWeights (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log);
565 const TriangleSceneSpec& scene;
568 : scene(scene_)
587 calcTriangleInterpolationWeights(scene.triangles[primitiveNdx].positions[0], scene.triangles[primitiveNdx].positions[1], scene.triangles[primitiveNdx].positions[2], corners[0]),
588 calcTriangleInterpolationWeights(scene.triangles[primitiveNdx].positions[0], scene.triangles[primitiveNdx].positions[1], scene.triangles[primitiveNdx].positions[2], corners[1]),
589 calcTriangleInterpolationWeights(scene.triangles[primitiveNdx].positions[0], scene.triangles[primitiveNdx].positions[1], scene.triangles[primitiveNdx].positions[2], corners[2]),
590 calcTriangleInterpolationWeights(scene.triangles[primitiveNdx].positions[0], scene.triangles[primitiveNdx].positions[1], scene.triangles[primitiveNdx].positions[2], corners[3]),
606 const LineSceneSpec& scene;
609 : scene(scene_)
630 const float wa = scene.lines[lineNdx].positions[0].w();
631 const float wb = scene.lines[lineNdx].positions[1].w();
632 const tcu::Vec2 pa = tcu::Vec2((scene.lines[lineNdx].positions[0].x() / wa + 1.0f) * 0.5f * (float)viewportSize.x(),
633 (scene.lines[lineNdx].positions[0].y() / wa + 1.0f) * 0.5f * (float)viewportSize.y());
634 const tcu::Vec2 pb = tcu::Vec2((scene.lines[lineNdx].positions[1].x() / wb + 1.0f) * 0.5f * (float)viewportSize.x(),
635 (scene.lines[lineNdx].positions[1].y() / wb + 1.0f) * 0.5f * (float)viewportSize.y());
659 const TriangleSceneSpec& scene,
708 for (int triNdx = (int)scene.triangles.size() - 1; triNdx >= 0; --triNdx)
710 const CoverageType coverage = calculateTriangleCoverage(scene.triangles[triNdx].positions[0],
711 scene.triangles[triNdx].positions[1],
712 scene.triangles[triNdx].positions[2],
723 const tcu::Vec4 fragmentColorMax = de::clamp(weights.max.x(), 0.0f, 1.0f) * scene.triangles[triNdx].colors[0] +
724 de::clamp(weights.max.y(), 0.0f, 1.0f) * scene.triangles[triNdx].colors[1] +
725 de::clamp(weights.max.z(), 0.0f, 1.0f) * scene.triangles[triNdx].colors[2];
726 const tcu::Vec4 fragmentColorMin = de::clamp(weights.min.x(), 0.0f, 1.0f) * scene.triangles[triNdx].colors[0] +
727 de::clamp(weights.min.y(), 0.0f, 1.0f) * scene.triangles[triNdx].colors[1] +
728 de::clamp(weights.min.z(), 0.0f, 1.0f) * scene.triangles[triNdx].colors[2];
911 const LineSceneSpec& scene,
923 const float halfLineWidth = scene.lineWidth * 0.5f;
929 triangleScene.triangles.resize(2 * scene.lines.size());
930 for (int lineNdx = 0; lineNdx < (int)scene.lines.size(); ++lineNdx)
933 if (!scene.isStrip)
943 tcu::Vec2(scene.lines[lineNdx].positions[0].x() / scene.lines[lineNdx].positions[0].w(), scene.lines[lineNdx].positions[0].y() / scene.lines[lineNdx].positions[0].w()),
944 tcu::Vec2(scene.lines[lineNdx].positions[1].x() / scene.lines[lineNdx].positions[1].w(), scene.lines[lineNdx].positions[1].y() / scene.lines[lineNdx].positions[1].w()),
959 const tcu::Vec2 lineNormalDir = (strictMode || scene.isRectangular) ? tcu::Vec2(lineDir.y(), -lineDir.x())
963 if (scene.stippleEnable)
1009 int stippleBit = (stippleCounter / scene.stippleFactor) % 16;
1010 bool stipplePass = (scene.stipplePattern & (1 << stippleBit)) != 0;
1087 return verifyTriangleGroupRasterization(surface, triangleScene, args, log, scene.verificationMode, logStash, vulkanLinesTest);
1091 const LineSceneSpec& scene,
1099 if (scene.stippleEnable)
1100 return verifyMultisampleLineGroupRasterization(surface, scene, args, log, clipMode, logStash, vulkanLinesTest, strictMode, true) ||
1101 verifyMultisampleLineGroupRasterization(surface, scene, args, log, clipMode, logStash, vulkanLinesTest, strictMode, false);
1103 return verifyMultisampleLineGroupRasterization(surface, scene, args, log, clipMode, logStash, vulkanLinesTest, strictMode, true);
1107 const LineSceneSpec& scene,
1115 const float halfLineWidth = scene.lineWidth * 0.5f;
1118 triangleScene.triangles.resize(2 * scene.lines.size());
1119 for (int lineNdx = 0; lineNdx < (int)scene.lines.size(); ++lineNdx)
1122 const float wa = scene.lines[lineNdx].positions[0].w();
1123 const float wb = scene.lines[lineNdx].positions[1].w();
1128 tcu::Vec2(scene.lines[lineNdx].positions[0].x() / wa, scene.lines[lineNdx].positions[0].y() / wa),
1129 tcu::Vec2(scene.lines[lineNdx].positions[1].x() / wb, scene.lines[lineNdx].positions[1].y() / wb),
1138 const tcu::Vec2 lineNormalDir = (strictMode || scene.isRectangular) ? tcu::Vec2(lineDir.y(), -lineDir.x())
1174 triangleScene.triangles[lineNdx*2 + 0].colors[0] = scene.lines[lineNdx].colors[0];
1175 triangleScene.triangles[lineNdx*2 + 0].colors[1] = scene.lines[lineNdx].colors[0];
1176 triangleScene.triangles[lineNdx*2 + 0].colors[2] = scene.lines[lineNdx].colors[1];
1186 triangleScene.triangles[lineNdx*2 + 1].colors[0] = scene.lines[lineNdx].colors[0];
1187 triangleScene.triangles[lineNdx*2 + 1].colors[1] = scene.lines[lineNdx].colors[1];
1188 triangleScene.triangles[lineNdx*2 + 1].colors[2] = scene.lines[lineNdx].colors[1];
1195 return verifyTriangleGroupInterpolationWithInterpolator(surface, triangleScene, args, logStash, MultisampleLineInterpolator(scene));
1210 return verifyTriangleGroupInterpolationWithInterpolator(surface, triangleScene, args, logStash, MultisampleLineInterpolator(scene));
1243 const LineSceneSpec& scene,
1258 result = verifyMultisampleLineGroupInterpolationInternal(surface,scene, args, strictModeLogStash, strictMode);
1264 if (verifyMultisampleLineGroupInterpolationInternal(surface,scene, args, nonStrictModeLogStash, false))
1270 else if (verifyMultisampleLineGroupInterpolationInternal(surface,scene, args, strictModeLogStash, true))
1291 verifyLineGroupInterpolationWithProjectedWeights(surface, scene, args, log))
1304 bool verifyMultisamplePointGroupRasterization (const tcu::Surface& surface, const PointSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
1311 triangleScene.triangles.resize(2 * scene.points.size());
1312 for (int pointNdx = 0; pointNdx < (int)scene.points.size(); ++pointNdx)
1315 const tcu::Vec2 pointNormalizedDeviceSpace = tcu::Vec2(scene.points[pointNdx].position.x() / scene.points[pointNdx].position.w(), scene.points[pointNdx].position.y() / scene.points[pointNdx].position.w());
1317 const float offset = scene.points[pointNdx].pointSize * 0.5f;
1359 bool verifySinglesampleLineGroupRasterization (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
1361 DE_ASSERT(deFloatFrac(scene.lineWidth) != 0.5f); // rounding direction is not defined, disallow undefined cases
1362 DE_ASSERT(scene.lines.size() < 255); // indices are stored as unsigned 8-bit ints
1368 int lineWidth = deFloorFloatToInt32(scene.lineWidth + 0.5f);
1369 std::vector<bool> lineIsXMajor (scene.lines.size());
1370 std::vector<tcu::Vec4> screenspaceLines(scene.lines.size());
1376 genScreenSpaceLines(screenspaceLines, scene.lines, tcu::IVec2(surface.getWidth(), surface.getHeight()));
1379 for (int lineNdx = 0; lineNdx < (int)scene.lines.size(); ++lineNdx)
1389 scene.lineWidth,
1390 scene.stippleFactor,
1391 scene.stipplePattern);
1393 if (!scene.isStrip)
1497 int allowedDeviation = (int)scene.lines.size() * lineWidth; // one pixel per primitive in the major direction
1531 log << tcu::TestLog::Message << "Overdraw in scene. Fragment count cannot be verified. Skipping fragment count checks." << tcu::TestLog::EndMessage;
1808 const LineSceneSpec& scene,
1813 DE_ASSERT(scene.lines.size() < 8); // coverage indices are stored as bitmask in a unsigned 8-bit ints
1822 std::vector<tcu::Vec4> screenspaceLines (scene.lines.size()); //!< packed (x0, y0, x1, y1)
1839 genScreenSpaceLines(screenspaceLines, scene.lines, viewportSize);
1840 setMaskMapCoverageBitForLines(screenspaceLines, scene.lineWidth, referenceLineMap.getAccess(), args.subpixelBits);
1873 for (int lineNdx = 0; lineNdx < (int)scene.lines.size(); ++lineNdx)
1877 const float wa = scene.lines[lineNdx].positions[0].w();
1878 const float wb = scene.lines[lineNdx].positions[1].w();
1886 const tcu::Vec4 valueMin = de::clamp(range.min.x(), 0.0f, 1.0f) * scene.lines[lineNdx].colors[0] + de::clamp(range.min.y(), 0.0f, 1.0f) * scene.lines[lineNdx].colors[1];
1887 const tcu::Vec4 valueMax = de::clamp(range.max.x(), 0.0f, 1.0f) * scene.lines[lineNdx].colors[0] + de::clamp(range.max.y(), 0.0f, 1.0f) * scene.lines[lineNdx].colors[1];
1994 bool verifySinglesampleNarrowLineGroupInterpolation (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
1996 DE_ASSERT(scene.lineWidth == 1.0f);
1997 return verifyLineGroupPixelIndependentInterpolation(surface, scene, args, log, LINEINTERPOLATION_STRICTLY_CORRECT);
2000 bool verifyLineGroupInterpolationWithNonProjectedWeights (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
2002 return verifyLineGroupPixelIndependentInterpolation(surface, scene, args, log, LINEINTERPOLATION_STRICTLY_CORRECT);
2005 bool verifyLineGroupInterpolationWithProjectedWeights (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
2007 return verifyLineGroupPixelIndependentInterpolation(surface, scene, args, log, LINEINTERPOLATION_PROJECTED);
2051 bool verifySinglesampleWideLineGroupInterpolation (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
2053 DE_ASSERT(deFloatFrac(scene.lineWidth) != 0.5f); // rounding direction is not defined, disallow undefined cases
2054 DE_ASSERT(scene.lines.size() < 8); // coverage indices are stored as bitmask in a unsigned 8-bit ints
2067 std::vector<tcu::Vec4> effectiveLines (scene.lines.size()); //!< packed (x0, y0, x1, y1)
2068 std::vector<bool> lineIsXMajor (scene.lines.size());
2072 std::vector<std::vector<deUint32> > rootPixelLocation (scene.lines.size()); //!< packed [16b - flags] [16b - coordinate]
2089 std::vector<tcu::Vec4> screenspaceLines(scene.lines.size());
2091 genScreenSpaceLines(screenspaceLines, scene.lines, viewportSize);
2092 setMaskMapCoverageBitForLines(screenspaceLines, scene.lineWidth, referenceLineMap.getAccess(), args.subpixelBits);
2094 for (int lineNdx = 0; lineNdx < (int)scene.lines.size(); ++lineNdx)
2104 const float offsetLength = (scene.lineWidth - 1.0f) / 2.0f;
2116 for (int lineNdx = 0; lineNdx < (int)scene.lines.size(); ++lineNdx)
2202 for (int lineNdx = 0; lineNdx < (int)scene.lines.size(); ++lineNdx)
2206 const float wa = scene.lines[lineNdx].positions[0].w();
2207 const float wb = scene.lines[lineNdx].positions[1].w();
2245 const tcu::Vec4 valueMin = de::clamp(range.min.x(), 0.0f, 1.0f) * scene.lines[lineNdx].colors[0] + de::clamp(range.min.y(), 0.0f, 1.0f) * scene.lines[lineNdx].colors[1];
2246 const tcu::Vec4 valueMax = de::clamp(range.max.x(), 0.0f, 1.0f) * scene.lines[lineNdx].colors[0] + de::clamp(range.max.y(), 0.0f, 1.0f) * scene.lines[lineNdx].colors[1];
2695 bool verifyTriangleGroupRasterization (const tcu::Surface& surface, const TriangleSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log, VerificationMode mode, VerifyTriangleGroupRasterizationLogStash* logStash, const bool vulkanLinesTest)
2734 for (int triNdx = 0; triNdx < (int)scene.triangles.size(); ++triNdx)
2736 const tcu::IVec4 aabb = getTriangleAABB(scene.triangles[triNdx], viewportSize);
2744 const CoverageType coverage = calculateTriangleCoverage(scene.triangles[triNdx].positions[0],
2745 scene.triangles[triNdx].positions[1],
2746 scene.triangles[triNdx].positions[2],
2764 if (pixelOnlyOnASharedEdge(tcu::IVec2(x, y), scene.triangles[triNdx], viewportSize))
2767 for (int friendTriNdx = 0; friendTriNdx < (int)scene.triangles.size(); ++friendTriNdx)
2772 const CoverageType friendCoverage = calculateTriangleCoverage(scene.triangles[friendTriNdx].positions[0],
2773 scene.triangles[friendTriNdx].positions[1],
2774 scene.triangles[friendTriNdx].positions[2],
2780 if (friendCoverage != COVERAGE_NONE && pixelOnlyOnASharedEdge(tcu::IVec2(x, y), scene.triangles[friendTriNdx], viewportSize))
2905 bool verifyLineGroupRasterization (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
2910 return verifyMultisampleLineGroupRasterization(surface, scene, args, log, CLIPMODE_NO_CLIPPING, DE_NULL, false, true);
2912 return verifySinglesampleLineGroupRasterization(surface, scene, args, log);
2915 bool verifyClippedTriangulatedLineGroupRasterization (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
2917 return verifyMultisampleLineGroupRasterization(surface, scene, args, log, CLIPMODE_USE_CLIPPING_BOX, DE_NULL, false, true);
2920 bool verifyRelaxedLineGroupRasterization (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log, const bool vulkanLinesTest, const bool strict)
2927 if (verifyMultisampleLineGroupRasterization(surface, scene, args, log, CLIPMODE_USE_CLIPPING_BOX, &useClippingLogStash, vulkanLinesTest, strict))
2933 else if (verifyMultisampleLineGroupRasterization(surface, scene, args, log, CLIPMODE_NO_CLIPPING, &noClippingLogStash, vulkanLinesTest, strict))
2939 else if (strict == false && verifyMultisampleLineGroupRasterization(surface, scene, args, log, CLIPMODE_USE_CLIPPING_BOX, &useClippingForcedStrictLogStash, vulkanLinesTest, true))
2945 else if (strict == false && verifyMultisampleLineGroupRasterization(surface, scene, args, log, CLIPMODE_NO_CLIPPING, &noClippingForcedStrictLogStash, vulkanLinesTest, true))
2951 else if (strict == false && args.numSamples == 0 && verifyLineGroupRasterization(surface, scene, args, log))
2972 bool verifyPointGroupRasterization (const tcu::Surface& surface, const PointSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
2975 return verifyMultisamplePointGroupRasterization(surface, scene, args, log);
2978 bool verifyTriangleGroupInterpolation (const tcu::Surface& surface, const TriangleSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
2981 const bool result = verifyTriangleGroupInterpolationWithInterpolator(surface, scene, args, logStash, TriangleInterpolator(scene));
2988 LineInterpolationMethod verifyLineGroupInterpolation (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log)
2994 if (verifyMultisampleLineGroupInterpolation(surface, scene, args, log))
3000 const bool isNarrow = (scene.lineWidth == 1.0f);
3005 if (verifySinglesampleNarrowLineGroupInterpolation(surface, scene, args, log))
3010 if (verifySinglesampleWideLineGroupInterpolation(surface, scene, args, log))
3013 if (scene.allowNonProjectedInterpolation &&
3014 verifyLineGroupInterpolationWithNonProjectedWeights(surface, scene, args, log))
3020 if (verifyLineGroupInterpolationWithProjectedWeights(surface, scene, args, log))
3027 bool verifyTriangulatedLineGroupInterpolation (const tcu::Surface& surface, const LineSceneSpec& scene, const RasterizationArguments& args, tcu::TestLog& log, const bool strictMode, const bool allowBresenhamForNonStrictLines)
3029 return verifyMultisampleLineGroupInterpolation(surface, scene, args, log, strictMode, allowBresenhamForNonStrictLines);