From cccafe8cfd2366b60585c0b65531282abb7a1404 Mon Sep 17 00:00:00 2001 From: Brian Salomon Date: Sat, 28 Apr 2018 16:13:08 -0400 Subject: Rewrite SkVertices specified with triangle fans as indexed triangles Change-Id: Ifaacc426bc657b324f6a885a8ef70b347b048226 Reviewed-on: https://skia-review.googlesource.com/124349 Commit-Queue: Brian Salomon Reviewed-by: Chris Dalton --- tests/VerticesTest.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'tests/VerticesTest.cpp') diff --git a/tests/VerticesTest.cpp b/tests/VerticesTest.cpp index f55adb0ed3..5bcb11f1d3 100644 --- a/tests/VerticesTest.cpp +++ b/tests/VerticesTest.cpp @@ -88,6 +88,37 @@ DEF_TEST(Vertices, reporter) { REPORTER_ASSERT(reporter, equal(v0.get(), v1.get())); } } + { + // This has the maximum number of vertices to be rewritten as indexed triangles without + // overflowing a 16bit index. + SkVertices::Builder builder(SkVertices::kTriangleFan_VertexMode, 21847, 0, + SkVertices::kHasColors_BuilderFlag); + REPORTER_ASSERT(reporter, builder.isValid()); + } + { + // This has too many to be rewritten. + SkVertices::Builder builder(SkVertices::kTriangleFan_VertexMode, 21848, 0, + SkVertices::kHasColors_BuilderFlag); + REPORTER_ASSERT(reporter, !builder.isValid()); + } + { + // Only two vertices - can't be rewritten. + SkVertices::Builder builder(SkVertices::kTriangleFan_VertexMode, 2, 0, + SkVertices::kHasColors_BuilderFlag); + REPORTER_ASSERT(reporter, !builder.isValid()); + } + { + // Minimum number of indices to be rewritten. + SkVertices::Builder builder(SkVertices::kTriangleFan_VertexMode, 10, 3, + SkVertices::kHasColors_BuilderFlag); + REPORTER_ASSERT(reporter, builder.isValid()); + } + { + // Too few indices to be rewritten. + SkVertices::Builder builder(SkVertices::kTriangleFan_VertexMode, 10, 2, + SkVertices::kHasColors_BuilderFlag); + REPORTER_ASSERT(reporter, !builder.isValid()); + } } static void fill_triangle(SkCanvas* canvas, const SkPoint pts[], SkColor c) { -- cgit v1.2.3