Home | History | Annotate | Download | only in functional

Lines Matching refs:outer

546 static string tessellationLevelsString (const float* inner, int numInner, const float* outer, int numOuter)
549 return "inner: " + elemsStr(inner, inner+numInner) + ", outer: " + elemsStr(outer, outer+numOuter);
552 static string tessellationLevelsString (const float* inner, const float* outer, TessPrimitiveType primType)
554 return tessellationLevelsString(inner, numInnerTessellationLevels(primType), outer, numOuterTessellationLevels(primType));
557 static string tessellationLevelsString (const float* inner, const float* outer)
559 return tessellationLevelsString(inner, 2, outer, 4);
597 //! A description of an outer edge of a triangle, quad or isolines.
598 //! An outer edge can be described by the index of a u/v/w coordinate
855 int outer[3];
856 getClampedRoundedTriangleTessLevels(spacingMode, innerLevels, outerLevels, &inner, &outer[0]);
863 DE_ASSERT(de::abs(outerLevels[i] - (float)outer[i]) < 0.001f);
864 DE_ASSERT(inner > 1 || (outer[0] == 1 && outer[1] == 1 && outer[2] == 1));
867 return generateReferenceTriangleTessCoords(spacingMode, inner, outer[0], outer[1], outer[2]);
873 int outer[4];
874 getClampedRoundedQuadTessLevels(spacingMode, innerLevels, outerLevels, &inner[0], &outer[0]);
882 DE_ASSERT(de::abs(outerLevels[i] - (float)outer[i]) < 0.001f);
884 DE_ASSERT((inner[0] > 1 && inner[1] > 1) || (inner[0] == 1 && inner[1] == 1 && outer[0] == 1 && outer[1] == 1 && outer[2] == 1 && outer[3] == 1));
887 return generateReferenceQuadTessCoords(spacingMode, inner[0], inner[1], outer[0], outer[1], outer[2], outer[3]);
892 int outer[2];
893 getClampedRoundedIsolineTessLevels(spacingMode, &outerLevels[0], &outer[0]);
898 DE_ASSERT(de::abs(outerLevels[1] - (float)outer[1]) < 0.001f);
901 return generateReferenceIsolineTessCoords(outer[0], outer[1]);
920 int outer[3];
921 getClampedRoundedTriangleTessLevels(spacingMode, innerLevels, outerLevels, &inner, &outer[0]);
922 return (int)generateReferenceTriangleTessCoords(spacingMode, inner, outer[0], outer[1], outer[2]).size();
928 int outer[4];
929 getClampedRoundedQuadTessLevels(spacingMode, innerLevels, outerLevels, &inner[0], &outer[0]);
930 return (int)generateReferenceQuadTessCoords(spacingMode, inner[0], inner[1], outer[0], outer[1], outer[2], outer[3]).size();
935 int outer[2];
936 getClampedRoundedIsolineTessLevels(spacingMode, &outerLevels[0], &outer[0]);
937 return (int)generateReferenceIsolineTessCoords(outer[0], outer[1]).size();
956 int outer[3];
957 getClampedRoundedTriangleTessLevels(spacingMode, innerLevels, outerLevels, &inner, &outer[0]);
958 return referenceTriangleNonPointModePrimitiveCount(spacingMode, inner, outer[0], outer[1], outer[2]);
964 int outer[4];
965 getClampedRoundedQuadTessLevels(spacingMode, innerLevels, outerLevels, &inner[0], &outer[0]);
966 return referenceQuadNonPointModePrimitiveCount(spacingMode, inner[0], inner[1], outer[0], outer[1], outer[2], outer[3]);
971 int outer[2];
972 getClampedRoundedIsolineTessLevels(spacingMode, &outerLevels[0], &outer[0]);
973 return referenceIsolineNonPointModePrimitiveCount(outer[0], outer[1]);
995 //! \note Levels contains inner and outer levels, per patch, in order IIOOOO. The full 6 levels must always be present, irrespective of primitiveType.
1011 float* const outer = &tessLevels[patchNdx*6 + 2];
1016 outer[j] = j == constantOuterLevelIndex ? constantOuterLevel : rnd.getFloat(1.0f, 62.0f);
1209 * with outer levels { 1.0, tessLevel }) with a given fractional spacing
1864 float outer[4];
1975 float* const outer = &curTessLevelCase.outer[0];
1978 for (int j = 0; j < 4; j++) outer[j] = (float)getClampedRoundedTessLevel(m_spacing, outer[j]);
1982 if (outer[0] > 1.0f || outer[1] > 1.0f || outer[2] > 1.0f)
1990 if (outer[0] > 1.0f || outer[1] > 1.0f || outer[2] > 1.0f || outer[3] > 1.0f)
2026 caseReferences[i] = generateReferenceTessCoords(m_primitiveType, m_spacing, &tessLevelCases[i].inner[0], &tessLevelCases[i].outer[0]);
2041 const float* const outerLevels = &tessLevelCases[tessLevelCaseNdx].outer[0];
2205 // Second outer tessellation levels.
2340 float outer[4];
2373 outerLevels[i] = (float)getClampedRoundedTessLevel(m_spacing, tessLevelCases[tessLevelCaseNdx].outer[i]);
3501 float outer[4];
3502 string description (void) const { return tessellationLevelsString(&inner[0], &outer[0]); }
3563 for (int j = 0; j < DE_LENGTH_OF_ARRAY(levels.outer); j++)
3564 levels.outer[j] = rnd.getFloat(1.0f, 16.0f);
3699 &tessLevelCases[caseNdx].levels[i].inner[0], &tessLevelCases[caseNdx].levels[i].outer[0]);
3727 const float (&outer)[4] = tessLevels.outer;
3728 const float attribute[2*7] = { inner[0], inner[1], outer[0], outer[1], outer[2], outer[3], 0.0f,
3729 inner[0], inner[1], outer[0], outer[1], outer[2], outer[3], 0.5f };
3759 << TestLog::Message << "Note: tessellation levels for both primitives were: " << tessellationLevelsString(&inner[0], &outer[0]) << TestLog::EndMessage;
3824 * Test that the set of vertices along an outer edge of a quad or triangle
3827 * For each (outer) edge in the quad or triangle, draw multiple patches
3828 * with identical tessellation levels for that outer edge but with
3829 * different values for the other outer edges; compare, among the
3830 * primitives, the vertices generated for that outer edge. Repeat with
3989 const vector<float> patchTessLevels = generatePatchTessLevels(numPatchesPerDrawCall, 0 /* outer-edge index doesn't affect vertex count */, arrayMax(singleOuterEdgeLevels));
4012 Vec3Set firstOuterEdgeVertices; // Vertices of the outer edge of the first patch of the first program's draw call; used for comparison with other patches.
4014 log << TestLog::Message << "Testing with outer tessellation level " << singleOuterEdgeLevels[outerEdgeLevelCaseNdx]
4051 // We're interested in just the vertices on the current outer edge.
4059 // Check that the outer edge contains an appropriate number of vertices.
4065 log << TestLog::Message << "Failure: the number of vertices on outer edge is " << outerEdgeVertices.size()
4067 << TestLog::Message << "Note: vertices on the outer edge are:\n" << containerStr(outerEdgeVertices, 5, 0) << TestLog::EndMessage
4116 * Test that the vertices along an outer edge are placed symmetrically.
4120 * the vertices in the TES such that every vertex on an outer edge -
4207 " // Mirror one half of each outer edge onto the other half, except the endpoints (because they belong to two edges)\n"
4215 " // Mirror one half of each outer edge onto the other half, except the endpoints (because they belong to two edges)\n"
4222 " // Mirror one half of each outer edge onto the other half\n"
4271 const vector<float> patchTessLevels = generatePatchTessLevels(1, 0 /* outer-edge index doesn't affect vertex count */, arrayMax(singleOuterEdgeLevels));
4292 log << TestLog::Message << "Testing with outer tessellation level " << singleOuterEdgeLevels[outerEdgeLevelCaseNdx]
4322 // We're interested in just the vertices on the current outer edge.
4328 // Ignore the middle vertex of the outer edge, as it's exactly at the mirroring point;
4404 * Test that the vertices on an outer edge don't depend on which of the
4537 const vector<float> patchTessLevels = generatePatchTessLevels(1, 0 /* outer-edge index doesn't affect vertex count */, arrayMax(singleOuterEdgeLevels));
4556 log << TestLog::Message << "Testing with outer tessellation level " << singleOuterEdgeLevels[outerEdgeLevelCaseNdx]
4578 // Get the vertices on the current outer edge.
4702 for (int i = 0; i < DE_LENGTH_OF_ARRAY(levels.outer); i++)
4703 levels.outer[i] = rnd.getFloat(2.0f, 16.0f);
4741 return compareTriangleSets(coordsA, coordsB, m_testCtx.getLog(), IsInnerTriangleTriangle(), "outer triangles");
4743 return compareTriangleSets(coordsA, coordsB, m_testCtx.getLog(), IsInnerQuadTriangle(), "outer triangles");
4755 * Test that the set of outer triangles input to the TES only depends on
4756 * tessellation mode, spacing mode and the inner and outer tessellation
4757 * levels corresponding to the inner and outer edges relevant to that
4797 for (int i = 0; i < DE_LENGTH_OF_ARRAY(levels.outer); i++)
4800 levels.outer[i] = rnd.getFloat(2.0f, 16.0f);
4879 ("inner triangles, and outer triangles corresponding to other edge than edge "
4886 ("inner triangles, and outer triangles corresponding to other edge than edge "
5147 * \brief Test that patch is discarded if relevant outer level <= 0.0
5293 for (i[2] = 0; i[2] < numChoices; i[2]++) // First outer
5294 for (i[3] = 0; i[3] < numChoices; i[3]++) // Second outer
5295 for (i[4] = 0; i[4] < numChoices; i[4]++) // Third outer
5296 for (i[5] = 0; i[5] < numChoices; i[5]++) // Fourth outer
5358 log << TestLog::Message << "Note: rendering " << numPrimitives << " patches; first patches have valid relevant outer levels, "
5359 << "but later patches have one or more invalid (i.e. less than or equal to 0.0) relevant outer levels" << TestLog::EndMessage;
6171 static const float attributes[6+2+2] = { /* inner */ 3.0f, 4.0f, /* outer */ 5.0f, 6.0f, 7.0f, 8.0f, /* pos. scale */ 1.2f, 1.3f, /* pos. offset */ -0.3f, -0.4f };
7446 TestCaseGroup* const primitiveDiscardGroup = new TestCaseGroup(m_context, "primitive_discard", "Test primitive discard with relevant outer tessellation level <= 0.0");