From 5183e649efdcf4bf46a2883fdedec7a3b7e4fb0f Mon Sep 17 00:00:00 2001 From: Chris Dalton Date: Wed, 7 Mar 2018 12:53:01 -0700 Subject: ccpr: Combine GS triangle hulls and edges into a single draw Updates the geometry shader backend to match the vertex backend and draw triangle rasters together with their their edges in a single draw call. This gives a performance boost as well as cleaning up some API awkwardness. This is one step toward the final goal of drawing ccpr primitives in a single pass. Bug: skia: Change-Id: I2723692d02b9e39ca5dc5d9e022b528a051988ab Reviewed-on: https://skia-review.googlesource.com/112104 Commit-Queue: Chris Dalton Reviewed-by: Brian Salomon --- samplecode/SampleCCPRGeometry.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'samplecode') diff --git a/samplecode/SampleCCPRGeometry.cpp b/samplecode/SampleCCPRGeometry.cpp index a0c5d7be7a..a90ece09a1 100644 --- a/samplecode/SampleCCPRGeometry.cpp +++ b/samplecode/SampleCCPRGeometry.cpp @@ -33,7 +33,7 @@ using RenderPass = GrCCCoverageProcessor::RenderPass; static constexpr float kDebugBloat = 40; static int is_quadratic(RenderPass pass) { - return pass == RenderPass::kQuadraticHulls || pass == RenderPass::kQuadraticCorners; + return pass == RenderPass::kQuadratics || pass == RenderPass::kQuadraticCorners; } /** @@ -59,7 +59,7 @@ private: void updateGpuData(); - RenderPass fRenderPass = RenderPass::kTriangleHulls; + RenderPass fRenderPass = RenderPass::kTriangles; SkCubicType fCubicType; SkMatrix fCubicKLM; @@ -249,10 +249,6 @@ void CCPRGeometryView::Op::onExecute(GrOpFlushState* state) { ? static_cast(state->gpu()) : nullptr; - if (!GrCCCoverageProcessor::DoesRenderPass(fView->fRenderPass, state->caps())) { - return; - } - GrCCCoverageProcessor proc(rp, fView->fRenderPass, GrCCCoverageProcessor::WindMethod::kCrossProduct); SkDEBUGCODE(proc.enableDebugVisualizations(kDebugBloat)); @@ -346,7 +342,7 @@ bool CCPRGeometryView::onQuery(SkEvent* evt) { } SkUnichar unichar; if (SampleCode::CharQ(*evt, &unichar)) { - if (unichar >= '1' && unichar <= '7') { + if (unichar >= '1' && unichar <= '6') { fRenderPass = RenderPass(unichar - '1'); this->updateAndInval(); return true; -- cgit v1.2.3