aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar Chris Dalton <csmartdalton@google.com>2018-03-07 12:53:01 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-03-07 20:15:11 +0000
commit5183e649efdcf4bf46a2883fdedec7a3b7e4fb0f (patch)
treea8890fafd6924fbfd5c108e3ad318b2213ed439e /samplecode
parentde9f546a04e2020f662bf4e99ab82ce5cb2cdbea (diff)
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 <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'samplecode')
-rw-r--r--samplecode/SampleCCPRGeometry.cpp10
1 files changed, 3 insertions, 7 deletions
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<GrGLGpu*>(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;