aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar Chris Dalton <csmartdalton@google.com>2018-03-26 19:15:22 -0600
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-03-27 15:38:34 +0000
commit8dfc70f7e2549929f86c06138e5ac6ade6154502 (patch)
treec74420055cd7657f7110a4691533e9d00da5e88e /samplecode
parent9b685238f689a70b8b529c610bad79d508b7c700 (diff)
ccpr: Various cleanups
Renames GrCCCoverageProcessor::RenderPass to PrimitiveType and handles corners as subpasses instead. Various touchups to coverage processors now that the overhaul is complete. This change should be strictly a refactor. Bug: skia: Change-Id: I52852463330d5ec71fae7e19fadccd9ede8b2c16 Reviewed-on: https://skia-review.googlesource.com/116169 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
Diffstat (limited to 'samplecode')
-rw-r--r--samplecode/SampleCCPRGeometry.cpp41
1 files changed, 15 insertions, 26 deletions
diff --git a/samplecode/SampleCCPRGeometry.cpp b/samplecode/SampleCCPRGeometry.cpp
index c6174516d3..ea3eafb591 100644
--- a/samplecode/SampleCCPRGeometry.cpp
+++ b/samplecode/SampleCCPRGeometry.cpp
@@ -28,7 +28,7 @@
using TriPointInstance = GrCCCoverageProcessor::TriPointInstance;
using QuadPointInstance = GrCCCoverageProcessor::QuadPointInstance;
-using RenderPass = GrCCCoverageProcessor::RenderPass;
+using PrimitiveType = GrCCCoverageProcessor::PrimitiveType;
static constexpr float kDebugBloat = 40;
@@ -56,7 +56,7 @@ private:
void updateGpuData();
- RenderPass fRenderPass = RenderPass::kTriangles;
+ PrimitiveType fPrimitiveType = PrimitiveType::kTriangles;
SkCubicType fCubicType;
SkMatrix fCubicKLM;
@@ -90,7 +90,6 @@ private:
bool onCombineIfPossible(GrOp* other, const GrCaps& caps) override { return false; }
void onPrepare(GrOpFlushState*) override {}
void onExecute(GrOpFlushState*) override;
- void drawRenderPass(GrOpFlushState*, RenderPass);
CCPRGeometryView* fView;
@@ -149,9 +148,9 @@ void CCPRGeometryView::onDrawContent(SkCanvas* canvas) {
SkPath outline;
outline.moveTo(fPoints[0]);
- if (RenderPass::kCubics == fRenderPass) {
+ if (PrimitiveType::kCubics == fPrimitiveType) {
outline.cubicTo(fPoints[1], fPoints[2], fPoints[3]);
- } else if (RenderPass::kQuadratics == fRenderPass) {
+ } else if (PrimitiveType::kQuadratics == fPrimitiveType) {
outline.quadTo(fPoints[1], fPoints[3]);
} else {
outline.lineTo(fPoints[1]);
@@ -205,8 +204,8 @@ void CCPRGeometryView::onDrawContent(SkCanvas* canvas) {
SkRect::MakeIWH(this->width(), this->height()));
// Add label.
- caption.appendf("RenderPass_%s", GrCCCoverageProcessor::RenderPassName(fRenderPass));
- if (RenderPass::kCubics == fRenderPass) {
+ caption.appendf("RenderPass_%s", GrCCCoverageProcessor::PrimitiveTypeName(fPrimitiveType));
+ if (PrimitiveType::kCubics == fPrimitiveType) {
caption.appendf(" (%s)", SkCubicTypeName(fCubicType));
}
} else {
@@ -218,7 +217,7 @@ void CCPRGeometryView::onDrawContent(SkCanvas* canvas) {
pointsPaint.setStrokeWidth(8);
pointsPaint.setAntiAlias(true);
- if (RenderPass::kCubics == fRenderPass) {
+ if (PrimitiveType::kCubics == fPrimitiveType) {
int w = this->width(), h = this->height();
canvas->drawPoints(SkCanvas::kPoints_PointMode, 4, fPoints, pointsPaint);
draw_klm_line(w, h, canvas, &fCubicKLM[0], SK_ColorYELLOW);
@@ -240,7 +239,7 @@ void CCPRGeometryView::updateGpuData() {
fTriPointInstances.reset();
fQuadPointInstances.reset();
- if (RenderPass::kCubics == fRenderPass) {
+ if (PrimitiveType::kCubics == fPrimitiveType) {
double t[2], s[2];
fCubicType = GrPathUtils::getCubicKLM(fPoints, &fCubicKLM, t, s);
GrCCGeometry geometry;
@@ -264,7 +263,7 @@ void CCPRGeometryView::updateGpuData() {
continue;
}
}
- } else if (RenderPass::kQuadratics == fRenderPass) {
+ } else if (PrimitiveType::kQuadratics == fPrimitiveType) {
GrCCGeometry geometry;
geometry.beginContour(fPoints[0]);
geometry.quadraticTo(fPoints[1], fPoints[3]);
@@ -290,27 +289,18 @@ void CCPRGeometryView::updateGpuData() {
}
void CCPRGeometryView::DrawCoverageCountOp::onExecute(GrOpFlushState* state) {
- this->drawRenderPass(state, fView->fRenderPass);
-
- RenderPass cornerPass = RenderPass((int)fView->fRenderPass + 1);
- if (GrCCCoverageProcessor::DoesRenderPass(cornerPass, state->caps())) {
- this->drawRenderPass(state, cornerPass);
- }
-}
-
-void CCPRGeometryView::DrawCoverageCountOp::drawRenderPass(GrOpFlushState* state,
- RenderPass renderPass) {
GrResourceProvider* rp = state->resourceProvider();
GrContext* context = state->gpu()->getContext();
GrGLGpu* glGpu = kOpenGL_GrBackend == context->contextPriv().getBackend()
? static_cast<GrGLGpu*>(state->gpu())
: nullptr;
- GrCCCoverageProcessor proc(rp, renderPass, GrCCCoverageProcessor::WindMethod::kCrossProduct);
+ GrCCCoverageProcessor proc(rp, fView->fPrimitiveType,
+ GrCCCoverageProcessor::WindMethod::kCrossProduct);
SkDEBUGCODE(proc.enableDebugBloat(kDebugBloat));
SkSTArray<1, GrMesh> mesh;
- if (GrCCCoverageProcessor::RenderPassIsCubic(renderPass)) {
+ if (PrimitiveType::kCubics == fView->fPrimitiveType) {
sk_sp<GrBuffer> instBuff(rp->createBuffer(
fView->fQuadPointInstances.count() * sizeof(QuadPointInstance),
kVertex_GrBufferType, kDynamic_GrAccessPattern,
@@ -341,8 +331,7 @@ void CCPRGeometryView::DrawCoverageCountOp::drawRenderPass(GrOpFlushState* state
if (!mesh.empty()) {
SkASSERT(1 == mesh.count());
- GrGpuRTCommandBuffer* cmdBuff = state->rtCommandBuffer();
- cmdBuff->draw(pipeline, proc, mesh.begin(), nullptr, 1, this->bounds());
+ proc.draw(state, pipeline, mesh.begin(), nullptr, 1, this->bounds());
}
if (glGpu) {
@@ -375,7 +364,7 @@ private:
SkView::Click* CCPRGeometryView::onFindClickHandler(SkScalar x, SkScalar y, unsigned) {
for (int i = 0; i < 4; ++i) {
- if (RenderPass::kCubics != fRenderPass && 2 == i) {
+ if (PrimitiveType::kCubics != fPrimitiveType && 2 == i) {
continue;
}
if (fabs(x - fPoints[i].x()) < 20 && fabsf(y - fPoints[i].y()) < 20) {
@@ -400,7 +389,7 @@ bool CCPRGeometryView::onQuery(SkEvent* evt) {
SkUnichar unichar;
if (SampleCode::CharQ(*evt, &unichar)) {
if (unichar >= '1' && unichar <= '3') {
- fRenderPass = RenderPass((unichar - '1') * 2);
+ fPrimitiveType = PrimitiveType(unichar - '1');
this->updateAndInval();
return true;
}