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

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

Issue 820523002: initial changes to add local matrix to primitive processor (Closed) Base URL: https://skia.googlesource.com/skia.git@cleanup-ccm-above-context
Patch Set: cleanup Created 6 years 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/GrOptDrawState.cpp ('k') | src/gpu/GrProcessor.cpp » ('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 "GrProcessor.h" 10 #include "GrProcessor.h"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 GLProcessor::GenKey(*this, bt, caps, b); 150 GLProcessor::GenKey(*this, bt, caps, b);
151 } 151 }
152 152
153 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE { 153 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE {
154 return SkNEW_ARGS(GLProcessor, (*this, bt)); 154 return SkNEW_ARGS(GLProcessor, (*this, bt));
155 } 155 }
156 156
157 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE { 157 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE {
158 BatchTracker* local = bt->cast<BatchTracker>(); 158 BatchTracker* local = bt->cast<BatchTracker>();
159 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 159 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
160 160 local->fUsesLocalCoords = init.fUsesLocalCoords;
161 } 161 }
162 162
163 bool onCanMakeEqual(const GrBatchTracker& m, const GrBatchTracker& t) const SK_OVERRIDE { 163 bool onCanMakeEqual(const GrBatchTracker& m,
164 const GrGeometryProcessor& that,
165 const GrBatchTracker& t) const SK_OVERRIDE {
164 const BatchTracker& mine = m.cast<BatchTracker>(); 166 const BatchTracker& mine = m.cast<BatchTracker>();
165 const BatchTracker& theirs = t.cast<BatchTracker>(); 167 const BatchTracker& theirs = t.cast<BatchTracker>();
166 return CanCombineOutput(mine.fInputColorType, mine.fColor, 168 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords,
169 that, theirs.fUsesLocalCoords) &&
170 CanCombineOutput(mine.fInputColorType, mine.fColor,
167 theirs.fInputColorType, theirs.fColor); 171 theirs.fInputColorType, theirs.fColor);
168 } 172 }
169 173
170 private: 174 private:
171 CircleEdgeEffect(GrColor color, bool stroke) : INHERITED(color) { 175 CircleEdgeEffect(GrColor color, bool stroke) : INHERITED(color) {
172 this->initClassID<CircleEdgeEffect>(); 176 this->initClassID<CircleEdgeEffect>();
173 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 177 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
174 fInCircleEdge = &this->addVertexAttrib(GrAttribute("inCircleEdge", 178 fInCircleEdge = &this->addVertexAttrib(GrAttribute("inCircleEdge",
175 kVec4f_GrVertexAttrib Type)); 179 kVec4f_GrVertexAttrib Type));
176 fStroke = stroke; 180 fStroke = stroke;
177 } 181 }
178 182
179 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 183 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
180 const CircleEdgeEffect& cee = other.cast<CircleEdgeEffect>(); 184 const CircleEdgeEffect& cee = other.cast<CircleEdgeEffect>();
181 return cee.fStroke == fStroke; 185 return cee.fStroke == fStroke;
182 } 186 }
183 187
184 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE { 188 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE {
185 out->setUnknownSingleComponent(); 189 out->setUnknownSingleComponent();
186 } 190 }
187 191
188 struct BatchTracker { 192 struct BatchTracker {
189 GrGPInput fInputColorType; 193 GrGPInput fInputColorType;
190 GrColor fColor; 194 GrColor fColor;
195 bool fUsesLocalCoords;
191 }; 196 };
192 197
193 const GrAttribute* fInPosition; 198 const GrAttribute* fInPosition;
194 const GrAttribute* fInCircleEdge; 199 const GrAttribute* fInCircleEdge;
195 bool fStroke; 200 bool fStroke;
196 201
197 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 202 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
198 203
199 typedef GrGeometryProcessor INHERITED; 204 typedef GrGeometryProcessor INHERITED;
200 }; 205 };
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 GLProcessor::GenKey(*this, bt, caps, b); 334 GLProcessor::GenKey(*this, bt, caps, b);
330 } 335 }
331 336
332 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE { 337 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE {
333 return SkNEW_ARGS(GLProcessor, (*this, bt)); 338 return SkNEW_ARGS(GLProcessor, (*this, bt));
334 } 339 }
335 340
336 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE { 341 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE {
337 BatchTracker* local = bt->cast<BatchTracker>(); 342 BatchTracker* local = bt->cast<BatchTracker>();
338 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 343 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
344 local->fUsesLocalCoords = init.fUsesLocalCoords;
339 } 345 }
340 346
341 bool onCanMakeEqual(const GrBatchTracker& m, const GrBatchTracker& t) const SK_OVERRIDE { 347 bool onCanMakeEqual(const GrBatchTracker& m,
348 const GrGeometryProcessor& that,
349 const GrBatchTracker& t) const SK_OVERRIDE {
342 const BatchTracker& mine = m.cast<BatchTracker>(); 350 const BatchTracker& mine = m.cast<BatchTracker>();
343 const BatchTracker& theirs = t.cast<BatchTracker>(); 351 const BatchTracker& theirs = t.cast<BatchTracker>();
344 return CanCombineOutput(mine.fInputColorType, mine.fColor, 352 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords,
353 that, theirs.fUsesLocalCoords) &&
354 CanCombineOutput(mine.fInputColorType, mine.fColor,
345 theirs.fInputColorType, theirs.fColor); 355 theirs.fInputColorType, theirs.fColor);
346 } 356 }
347 357
348 private: 358 private:
349 EllipseEdgeEffect(GrColor color, bool stroke) : INHERITED(color) { 359 EllipseEdgeEffect(GrColor color, bool stroke) : INHERITED(color) {
350 this->initClassID<EllipseEdgeEffect>(); 360 this->initClassID<EllipseEdgeEffect>();
351 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 361 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
352 fInEllipseOffset = &this->addVertexAttrib(GrAttribute("inEllipseOffset", 362 fInEllipseOffset = &this->addVertexAttrib(GrAttribute("inEllipseOffset",
353 kVec2f_GrVertexAtt ribType)); 363 kVec2f_GrVertexAtt ribType));
354 fInEllipseRadii = &this->addVertexAttrib(GrAttribute("inEllipseRadii", 364 fInEllipseRadii = &this->addVertexAttrib(GrAttribute("inEllipseRadii",
355 kVec4f_GrVertexAttr ibType)); 365 kVec4f_GrVertexAttr ibType));
356 fStroke = stroke; 366 fStroke = stroke;
357 } 367 }
358 368
359 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 369 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
360 const EllipseEdgeEffect& eee = other.cast<EllipseEdgeEffect>(); 370 const EllipseEdgeEffect& eee = other.cast<EllipseEdgeEffect>();
361 return eee.fStroke == fStroke; 371 return eee.fStroke == fStroke;
362 } 372 }
363 373
364 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE { 374 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE {
365 out->setUnknownSingleComponent(); 375 out->setUnknownSingleComponent();
366 } 376 }
367 377
368 struct BatchTracker { 378 struct BatchTracker {
369 GrGPInput fInputColorType; 379 GrGPInput fInputColorType;
370 GrColor fColor; 380 GrColor fColor;
381 bool fUsesLocalCoords;
371 }; 382 };
372 383
373 const GrAttribute* fInPosition; 384 const GrAttribute* fInPosition;
374 const GrAttribute* fInEllipseOffset; 385 const GrAttribute* fInEllipseOffset;
375 const GrAttribute* fInEllipseRadii; 386 const GrAttribute* fInEllipseRadii;
376 bool fStroke; 387 bool fStroke;
377 388
378 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 389 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
379 390
380 typedef GrGeometryProcessor INHERITED; 391 typedef GrGeometryProcessor INHERITED;
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 GLProcessor::GenKey(*this, bt, caps, b); 538 GLProcessor::GenKey(*this, bt, caps, b);
528 } 539 }
529 540
530 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE { 541 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE {
531 return SkNEW_ARGS(GLProcessor, (*this, bt)); 542 return SkNEW_ARGS(GLProcessor, (*this, bt));
532 } 543 }
533 544
534 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE { 545 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE {
535 BatchTracker* local = bt->cast<BatchTracker>(); 546 BatchTracker* local = bt->cast<BatchTracker>();
536 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false); 547 local->fInputColorType = GetColorInputType(&local->fColor, this->color() , init, false);
548 local->fUsesLocalCoords = init.fUsesLocalCoords;
537 } 549 }
538 550
539 bool onCanMakeEqual(const GrBatchTracker& m, const GrBatchTracker& t) const SK_OVERRIDE { 551 bool onCanMakeEqual(const GrBatchTracker& m,
552 const GrGeometryProcessor& that,
553 const GrBatchTracker& t) const SK_OVERRIDE {
540 const BatchTracker& mine = m.cast<BatchTracker>(); 554 const BatchTracker& mine = m.cast<BatchTracker>();
541 const BatchTracker& theirs = t.cast<BatchTracker>(); 555 const BatchTracker& theirs = t.cast<BatchTracker>();
542 return CanCombineOutput(mine.fInputColorType, mine.fColor, 556 return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords,
557 that, theirs.fUsesLocalCoords) &&
558 CanCombineOutput(mine.fInputColorType, mine.fColor,
543 theirs.fInputColorType, theirs.fColor); 559 theirs.fInputColorType, theirs.fColor);
544 } 560 }
545 561
546 private: 562 private:
547 DIEllipseEdgeEffect(GrColor color, Mode mode) : INHERITED(color) { 563 DIEllipseEdgeEffect(GrColor color, Mode mode) : INHERITED(color) {
548 this->initClassID<DIEllipseEdgeEffect>(); 564 this->initClassID<DIEllipseEdgeEffect>();
549 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 565 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
550 fInEllipseOffsets0 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s0", 566 fInEllipseOffsets0 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s0",
551 kVec2f_GrVertexA ttribType)); 567 kVec2f_GrVertexA ttribType));
552 fInEllipseOffsets1 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s1", 568 fInEllipseOffsets1 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s1",
553 kVec2f_GrVertexA ttribType)); 569 kVec2f_GrVertexA ttribType));
554 fMode = mode; 570 fMode = mode;
555 } 571 }
556 572
557 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 573 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
558 const DIEllipseEdgeEffect& eee = other.cast<DIEllipseEdgeEffect>(); 574 const DIEllipseEdgeEffect& eee = other.cast<DIEllipseEdgeEffect>();
559 return eee.fMode == fMode; 575 return eee.fMode == fMode;
560 } 576 }
561 577
562 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE { 578 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput* out) const SK_OVERRIDE {
563 out->setUnknownSingleComponent(); 579 out->setUnknownSingleComponent();
564 } 580 }
565 581
566 struct BatchTracker { 582 struct BatchTracker {
567 GrGPInput fInputColorType; 583 GrGPInput fInputColorType;
568 GrColor fColor; 584 GrColor fColor;
585 bool fUsesLocalCoords;
569 }; 586 };
570 587
571 const GrAttribute* fInPosition; 588 const GrAttribute* fInPosition;
572 const GrAttribute* fInEllipseOffsets0; 589 const GrAttribute* fInEllipseOffsets0;
573 const GrAttribute* fInEllipseOffsets1; 590 const GrAttribute* fInEllipseOffsets1;
574 Mode fMode; 591 Mode fMode;
575 592
576 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 593 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
577 594
578 typedef GrGeometryProcessor INHERITED; 595 typedef GrGeometryProcessor INHERITED;
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after
1343 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 : 1360 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 :
1344 SK_ARRAY_COUNT(gRRectIndices); 1361 SK_ARRAY_COUNT(gRRectIndices);
1345 target->setIndexSourceToBuffer(indexBuffer); 1362 target->setIndexSourceToBuffer(indexBuffer);
1346 target->drawIndexedInstances(drawState, effect, kTriangles_GrPrimitiveTy pe, 1, 16, indexCnt, 1363 target->drawIndexedInstances(drawState, effect, kTriangles_GrPrimitiveTy pe, 1, 16, indexCnt,
1347 &bounds); 1364 &bounds);
1348 } 1365 }
1349 1366
1350 target->resetIndexSource(); 1367 target->resetIndexSource();
1351 return true; 1368 return true;
1352 } 1369 }
OLDNEW
« no previous file with comments | « src/gpu/GrOptDrawState.cpp ('k') | src/gpu/GrProcessor.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698