Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(346)

Side by Side Diff: src/gpu/GrOvalRenderer.cpp

Issue 1110993002: Revert of removing equality / compute invariant loops from GrGeometryProcessors (Closed) Base URL: https://skia.googlesource.com/skia.git@cleanup1
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/GrInOrderDrawBuffer.cpp ('k') | src/gpu/GrTestBatch.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrOvalRenderer.h" 8 #include "GrOvalRenderer.h"
9 9
10 #include "GrBatch.h" 10 #include "GrBatch.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 const GrGLCaps&) const over ride { 166 const GrGLCaps&) const over ride {
167 return SkNEW_ARGS(GLProcessor, (*this, bt)); 167 return SkNEW_ARGS(GLProcessor, (*this, bt));
168 } 168 }
169 169
170 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override { 170 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override {
171 BatchTracker* local = bt->cast<BatchTracker>(); 171 BatchTracker* local = bt->cast<BatchTracker>();
172 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 172 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
173 local->fUsesLocalCoords = init.fUsesLocalCoords; 173 local->fUsesLocalCoords = init.fUsesLocalCoords;
174 } 174 }
175 175
176 bool onCanMakeEqual(const GrBatchTracker& m,
177 const GrGeometryProcessor& that,
178 const GrBatchTracker& t) const override {
179 const BatchTracker& mine = m.cast<BatchTracker>();
180 const BatchTracker& theirs = t.cast<BatchTracker>();
181 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords,
182 that, theirs.fUsesLocalCoords) &&
183 CanCombineOutput(mine.fInputColorType, mine.fColor,
184 theirs.fInputColorType, theirs.fColor);
185 }
186
176 private: 187 private:
177 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) 188 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
178 : INHERITED(color, SkMatrix::I(), localMatrix) { 189 : INHERITED(color, SkMatrix::I(), localMatrix) {
179 this->initClassID<CircleEdgeEffect>(); 190 this->initClassID<CircleEdgeEffect>();
180 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType)); 191 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
181 fInCircleEdge = &this->addVertexAttrib(Attribute("inCircleEdge", 192 fInCircleEdge = &this->addVertexAttrib(Attribute("inCircleEdge",
182 kVec4f_GrVertexAttrib Type)); 193 kVec4f_GrVertexAttrib Type));
183 fStroke = stroke; 194 fStroke = stroke;
184 } 195 }
185 196
197 bool onIsEqual(const GrGeometryProcessor& other) const override {
198 const CircleEdgeEffect& cee = other.cast<CircleEdgeEffect>();
199 return cee.fStroke == fStroke;
200 }
201
202 void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const override {
203 out->setUnknownSingleComponent();
204 }
205
186 struct BatchTracker { 206 struct BatchTracker {
187 GrGPInput fInputColorType; 207 GrGPInput fInputColorType;
188 GrColor fColor; 208 GrColor fColor;
189 bool fUsesLocalCoords; 209 bool fUsesLocalCoords;
190 }; 210 };
191 211
192 const Attribute* fInPosition; 212 const Attribute* fInPosition;
193 const Attribute* fInCircleEdge; 213 const Attribute* fInCircleEdge;
194 bool fStroke; 214 bool fStroke;
195 215
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 const GrGLCaps&) const over ride { 361 const GrGLCaps&) const over ride {
342 return SkNEW_ARGS(GLProcessor, (*this, bt)); 362 return SkNEW_ARGS(GLProcessor, (*this, bt));
343 } 363 }
344 364
345 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override { 365 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override {
346 BatchTracker* local = bt->cast<BatchTracker>(); 366 BatchTracker* local = bt->cast<BatchTracker>();
347 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 367 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
348 local->fUsesLocalCoords = init.fUsesLocalCoords; 368 local->fUsesLocalCoords = init.fUsesLocalCoords;
349 } 369 }
350 370
371 bool onCanMakeEqual(const GrBatchTracker& m,
372 const GrGeometryProcessor& that,
373 const GrBatchTracker& t) const override {
374 const BatchTracker& mine = m.cast<BatchTracker>();
375 const BatchTracker& theirs = t.cast<BatchTracker>();
376 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords,
377 that, theirs.fUsesLocalCoords) &&
378 CanCombineOutput(mine.fInputColorType, mine.fColor,
379 theirs.fInputColorType, theirs.fColor);
380 }
381
351 private: 382 private:
352 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix) 383 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix)
353 : INHERITED(color, SkMatrix::I(), localMatrix) { 384 : INHERITED(color, SkMatrix::I(), localMatrix) {
354 this->initClassID<EllipseEdgeEffect>(); 385 this->initClassID<EllipseEdgeEffect>();
355 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType)); 386 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
356 fInEllipseOffset = &this->addVertexAttrib(Attribute("inEllipseOffset", 387 fInEllipseOffset = &this->addVertexAttrib(Attribute("inEllipseOffset",
357 kVec2f_GrVertexAtt ribType)); 388 kVec2f_GrVertexAtt ribType));
358 fInEllipseRadii = &this->addVertexAttrib(Attribute("inEllipseRadii", 389 fInEllipseRadii = &this->addVertexAttrib(Attribute("inEllipseRadii",
359 kVec4f_GrVertexAttr ibType)); 390 kVec4f_GrVertexAttr ibType));
360 fStroke = stroke; 391 fStroke = stroke;
361 } 392 }
362 393
394 bool onIsEqual(const GrGeometryProcessor& other) const override {
395 const EllipseEdgeEffect& eee = other.cast<EllipseEdgeEffect>();
396 return eee.fStroke == fStroke;
397 }
398
399 void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const override {
400 out->setUnknownSingleComponent();
401 }
402
363 struct BatchTracker { 403 struct BatchTracker {
364 GrGPInput fInputColorType; 404 GrGPInput fInputColorType;
365 GrColor fColor; 405 GrColor fColor;
366 bool fUsesLocalCoords; 406 bool fUsesLocalCoords;
367 }; 407 };
368 408
369 const Attribute* fInPosition; 409 const Attribute* fInPosition;
370 const Attribute* fInEllipseOffset; 410 const Attribute* fInEllipseOffset;
371 const Attribute* fInEllipseRadii; 411 const Attribute* fInEllipseRadii;
372 bool fStroke; 412 bool fStroke;
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 const GrGLCaps&) const over ride { 576 const GrGLCaps&) const over ride {
537 return SkNEW_ARGS(GLProcessor, (*this, bt)); 577 return SkNEW_ARGS(GLProcessor, (*this, bt));
538 } 578 }
539 579
540 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override { 580 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override {
541 BatchTracker* local = bt->cast<BatchTracker>(); 581 BatchTracker* local = bt->cast<BatchTracker>();
542 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 582 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
543 local->fUsesLocalCoords = init.fUsesLocalCoords; 583 local->fUsesLocalCoords = init.fUsesLocalCoords;
544 } 584 }
545 585
586 bool onCanMakeEqual(const GrBatchTracker& m,
587 const GrGeometryProcessor& that,
588 const GrBatchTracker& t) const override {
589 const BatchTracker& mine = m.cast<BatchTracker>();
590 const BatchTracker& theirs = t.cast<BatchTracker>();
591 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords,
592 that, theirs.fUsesLocalCoords) &&
593 CanCombineOutput(mine.fInputColorType, mine.fColor,
594 theirs.fInputColorType, theirs.fColor);
595 }
596
546 private: 597 private:
547 DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode) 598 DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode)
548 : INHERITED(color, viewMatrix) { 599 : INHERITED(color, viewMatrix) {
549 this->initClassID<DIEllipseEdgeEffect>(); 600 this->initClassID<DIEllipseEdgeEffect>();
550 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType)); 601 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType));
551 fInEllipseOffsets0 = &this->addVertexAttrib(Attribute("inEllipseOffsets0 ", 602 fInEllipseOffsets0 = &this->addVertexAttrib(Attribute("inEllipseOffsets0 ",
552 kVec2f_GrVertexA ttribType)); 603 kVec2f_GrVertexA ttribType));
553 fInEllipseOffsets1 = &this->addVertexAttrib(Attribute("inEllipseOffsets1 ", 604 fInEllipseOffsets1 = &this->addVertexAttrib(Attribute("inEllipseOffsets1 ",
554 kVec2f_GrVertexA ttribType)); 605 kVec2f_GrVertexA ttribType));
555 fMode = mode; 606 fMode = mode;
556 } 607 }
557 608
609 bool onIsEqual(const GrGeometryProcessor& other) const override {
610 const DIEllipseEdgeEffect& eee = other.cast<DIEllipseEdgeEffect>();
611 return eee.fMode == fMode;
612 }
613
614 void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const override {
615 out->setUnknownSingleComponent();
616 }
617
558 struct BatchTracker { 618 struct BatchTracker {
559 GrGPInput fInputColorType; 619 GrGPInput fInputColorType;
560 GrColor fColor; 620 GrColor fColor;
561 bool fUsesLocalCoords; 621 bool fUsesLocalCoords;
562 }; 622 };
563 623
564 const Attribute* fInPosition; 624 const Attribute* fInPosition;
565 const Attribute* fInEllipseOffsets0; 625 const Attribute* fInEllipseOffsets0;
566 const Attribute* fInEllipseOffsets1; 626 const Attribute* fInEllipseOffsets1;
567 Mode fMode; 627 Mode fMode;
(...skipping 1594 matching lines...) Expand 10 before | Expand all | Expand 10 after
2162 geometry.fInnerXRadius = innerXRadius; 2222 geometry.fInnerXRadius = innerXRadius;
2163 geometry.fInnerYRadius = innerYRadius; 2223 geometry.fInnerYRadius = innerYRadius;
2164 geometry.fStroke = isStrokeOnly; 2224 geometry.fStroke = isStrokeOnly;
2165 geometry.fDevBounds = bounds; 2225 geometry.fDevBounds = bounds;
2166 2226
2167 SkAutoTUnref<GrBatch> batch(RRectEllipseRendererBatch::Create(geometry, indexBuffer)); 2227 SkAutoTUnref<GrBatch> batch(RRectEllipseRendererBatch::Create(geometry, indexBuffer));
2168 target->drawBatch(pipelineBuilder, batch, &bounds); 2228 target->drawBatch(pipelineBuilder, batch, &bounds);
2169 } 2229 }
2170 return true; 2230 return true;
2171 } 2231 }
OLDNEW
« no previous file with comments | « src/gpu/GrInOrderDrawBuffer.cpp ('k') | src/gpu/GrTestBatch.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698