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

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

Issue 778453002: Remove backend factories (Closed) Base URL: https://skia.googlesource.com/skia.git@unichoice
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
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 "gl/builders/GrGLProgramBuilder.h" 10 #include "GrProcessor.h"
11 #include "GrDrawState.h"
12 #include "GrDrawTarget.h"
13 #include "GrGeometryProcessor.h"
14 #include "GrGpu.h"
15 #include "GrInvariantOutput.h"
16 #include "SkRRect.h"
17 #include "SkStrokeRec.h"
18 #include "SkTLazy.h"
19 #include "effects/GrRRectEffect.h"
11 #include "gl/GrGLProcessor.h" 20 #include "gl/GrGLProcessor.h"
12 #include "gl/GrGLSL.h" 21 #include "gl/GrGLSL.h"
13 #include "gl/GrGLGeometryProcessor.h" 22 #include "gl/GrGLGeometryProcessor.h"
14 #include "GrProcessor.h" 23 #include "gl/builders/GrGLProgramBuilder.h"
15 #include "GrTBackendProcessorFactory.h"
16
17 #include "GrDrawState.h"
18 #include "GrDrawTarget.h"
19 #include "GrGpu.h"
20 #include "GrInvariantOutput.h"
21
22 #include "SkRRect.h"
23 #include "SkStrokeRec.h"
24 #include "SkTLazy.h"
25
26 #include "GrGeometryProcessor.h"
27 #include "effects/GrRRectEffect.h"
28 24
29 namespace { 25 namespace {
30 // TODO(joshualitt) add per vertex colors 26 // TODO(joshualitt) add per vertex colors
31 struct CircleVertex { 27 struct CircleVertex {
32 SkPoint fPos; 28 SkPoint fPos;
33 SkPoint fOffset; 29 SkPoint fOffset;
34 SkScalar fOuterRadius; 30 SkScalar fOuterRadius;
35 SkScalar fInnerRadius; 31 SkScalar fInnerRadius;
36 }; 32 };
37 33
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 gCircleStrokeEdge->ref(); 67 gCircleStrokeEdge->ref();
72 return gCircleStrokeEdge; 68 return gCircleStrokeEdge;
73 } else { 69 } else {
74 gCircleFillEdge->ref(); 70 gCircleFillEdge->ref();
75 return gCircleFillEdge; 71 return gCircleFillEdge;
76 } 72 }
77 } 73 }
78 74
79 const GrAttribute* inPosition() const { return fInPosition; } 75 const GrAttribute* inPosition() const { return fInPosition; }
80 const GrAttribute* inCircleEdge() const { return fInCircleEdge; } 76 const GrAttribute* inCircleEdge() const { return fInCircleEdge; }
81
82 virtual const GrBackendGeometryProcessorFactory& getFactory() const SK_OVERR IDE {
83 return GrTBackendGeometryProcessorFactory<CircleEdgeEffect>::getInstance ();
84 }
85
86 virtual ~CircleEdgeEffect() {} 77 virtual ~CircleEdgeEffect() {}
87 78
88 static const char* Name() { return "CircleEdge"; } 79 virtual const char* name() const SK_OVERRIDE { return "CircleEdge"; }
89 80
90 inline bool isStroked() const { return fStroke; } 81 inline bool isStroked() const { return fStroke; }
91 82
92 class GLProcessor : public GrGLGeometryProcessor { 83 class GLProcessor : public GrGLGeometryProcessor {
93 public: 84 public:
94 GLProcessor(const GrBackendProcessorFactory& factory, 85 GLProcessor(const GrGeometryProcessor&,
95 const GrGeometryProcessor&, 86 const GrBatchTracker&) {}
96 const GrBatchTracker&)
97 : INHERITED (factory) {}
98 87
99 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { 88 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
100 const CircleEdgeEffect& ce = args.fGP.cast<CircleEdgeEffect>(); 89 const CircleEdgeEffect& ce = args.fGP.cast<CircleEdgeEffect>();
101 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 90 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
102 91
103 GrGLVertToFrag v(kVec4f_GrSLType); 92 GrGLVertToFrag v(kVec4f_GrSLType);
104 args.fPB->addVarying("CircleEdge", &v); 93 args.fPB->addVarying("CircleEdge", &v);
105 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), ce.inCircleEdge()->fNa me); 94 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), ce.inCircleEdge()->fNa me);
106 95
107 // setup coord outputs 96 // setup coord outputs
(...skipping 25 matching lines...) Expand all
133 } 122 }
134 123
135 virtual void setData(const GrGLProgramDataManager&, 124 virtual void setData(const GrGLProgramDataManager&,
136 const GrGeometryProcessor&, 125 const GrGeometryProcessor&,
137 const GrBatchTracker&) SK_OVERRIDE {} 126 const GrBatchTracker&) SK_OVERRIDE {}
138 127
139 private: 128 private:
140 typedef GrGLGeometryProcessor INHERITED; 129 typedef GrGLGeometryProcessor INHERITED;
141 }; 130 };
142 131
132 virtual void getGLProcessorKey(const GrBatchTracker& bt,
133 const GrGLCaps& caps,
134 GrProcessorKeyBuilder* b) const SK_OVERRIDE {
135 GLProcessor::GenKey(*this, bt, caps, b);
136 }
137
138 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE {
139 return SkNEW_ARGS(GLProcessor, (*this, bt));
140 }
141
142 virtual uint32_t classID() const {
143 static uint32_t id = GenClassID();
144 return id;
145 }
143 146
144 private: 147 private:
145 CircleEdgeEffect(bool stroke) { 148 CircleEdgeEffect(bool stroke) {
146 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 149 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
147 fInCircleEdge = &this->addVertexAttrib(GrAttribute("inCircleEdge", 150 fInCircleEdge = &this->addVertexAttrib(GrAttribute("inCircleEdge",
148 kVec4f_GrVertexAttrib Type)); 151 kVec4f_GrVertexAttrib Type));
149 fStroke = stroke; 152 fStroke = stroke;
150 } 153 }
151 154
152 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 155 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 197
195 if (stroke) { 198 if (stroke) {
196 gEllipseStrokeEdge->ref(); 199 gEllipseStrokeEdge->ref();
197 return gEllipseStrokeEdge; 200 return gEllipseStrokeEdge;
198 } else { 201 } else {
199 gEllipseFillEdge->ref(); 202 gEllipseFillEdge->ref();
200 return gEllipseFillEdge; 203 return gEllipseFillEdge;
201 } 204 }
202 } 205 }
203 206
204 virtual const GrBackendGeometryProcessorFactory& getFactory() const SK_OVERR IDE {
205 return GrTBackendGeometryProcessorFactory<EllipseEdgeEffect>::getInstanc e();
206 }
207
208 virtual ~EllipseEdgeEffect() {} 207 virtual ~EllipseEdgeEffect() {}
209 208
210 static const char* Name() { return "EllipseEdge"; } 209 virtual const char* name() const SK_OVERRIDE { return "EllipseEdge"; }
211
212 210
213 const GrAttribute* inPosition() const { return fInPosition; } 211 const GrAttribute* inPosition() const { return fInPosition; }
214 const GrAttribute* inEllipseOffset() const { return fInEllipseOffset; } 212 const GrAttribute* inEllipseOffset() const { return fInEllipseOffset; }
215 const GrAttribute* inEllipseRadii() const { return fInEllipseRadii; } 213 const GrAttribute* inEllipseRadii() const { return fInEllipseRadii; }
216 214
217 inline bool isStroked() const { return fStroke; } 215 inline bool isStroked() const { return fStroke; }
218 216
219 class GLProcessor : public GrGLGeometryProcessor { 217 class GLProcessor : public GrGLGeometryProcessor {
220 public: 218 public:
221 GLProcessor(const GrBackendProcessorFactory& factory, 219 GLProcessor(const GrGeometryProcessor&,
222 const GrGeometryProcessor&, 220 const GrBatchTracker&) {}
223 const GrBatchTracker&)
224 : INHERITED (factory) {}
225 221
226 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { 222 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
227 const EllipseEdgeEffect& ee = args.fGP.cast<EllipseEdgeEffect>(); 223 const EllipseEdgeEffect& ee = args.fGP.cast<EllipseEdgeEffect>();
228 224
229 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 225 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
230 226
231 GrGLVertToFrag ellipseOffsets(kVec2f_GrSLType); 227 GrGLVertToFrag ellipseOffsets(kVec2f_GrSLType);
232 args.fPB->addVarying("EllipseOffsets", &ellipseOffsets); 228 args.fPB->addVarying("EllipseOffsets", &ellipseOffsets);
233 vsBuilder->codeAppendf("%s = %s;", ellipseOffsets.vsOut(), 229 vsBuilder->codeAppendf("%s = %s;", ellipseOffsets.vsOut(),
234 ee.inEllipseOffset()->fName); 230 ee.inEllipseOffset()->fName);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 279
284 virtual void setData(const GrGLProgramDataManager&, 280 virtual void setData(const GrGLProgramDataManager&,
285 const GrGeometryProcessor&, 281 const GrGeometryProcessor&,
286 const GrBatchTracker&) SK_OVERRIDE { 282 const GrBatchTracker&) SK_OVERRIDE {
287 } 283 }
288 284
289 private: 285 private:
290 typedef GrGLGeometryProcessor INHERITED; 286 typedef GrGLGeometryProcessor INHERITED;
291 }; 287 };
292 288
289 virtual void getGLProcessorKey(const GrBatchTracker& bt,
290 const GrGLCaps& caps,
291 GrProcessorKeyBuilder* b) const SK_OVERRIDE {
292 GLProcessor::GenKey(*this, bt, caps, b);
293 }
294
295 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE {
296 return SkNEW_ARGS(GLProcessor, (*this, bt));
297 }
298
299 virtual uint32_t classID() const {
300 static uint32_t id = GenClassID();
301 return id;
302 }
303
293 private: 304 private:
294 EllipseEdgeEffect(bool stroke) { 305 EllipseEdgeEffect(bool stroke) {
295 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 306 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
296 fInEllipseOffset = &this->addVertexAttrib(GrAttribute("inEllipseOffset", 307 fInEllipseOffset = &this->addVertexAttrib(GrAttribute("inEllipseOffset",
297 kVec2f_GrVertexAtt ribType)); 308 kVec2f_GrVertexAtt ribType));
298 fInEllipseRadii = &this->addVertexAttrib(GrAttribute("inEllipseRadii", 309 fInEllipseRadii = &this->addVertexAttrib(GrAttribute("inEllipseRadii",
299 kVec4f_GrVertexAttr ibType)); 310 kVec4f_GrVertexAttr ibType));
300 fStroke = stroke; 311 fStroke = stroke;
301 } 312 }
302 313
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 return gEllipseStrokeEdge; 364 return gEllipseStrokeEdge;
354 } else if (kHairline == mode) { 365 } else if (kHairline == mode) {
355 gEllipseHairlineEdge->ref(); 366 gEllipseHairlineEdge->ref();
356 return gEllipseHairlineEdge; 367 return gEllipseHairlineEdge;
357 } else { 368 } else {
358 gEllipseFillEdge->ref(); 369 gEllipseFillEdge->ref();
359 return gEllipseFillEdge; 370 return gEllipseFillEdge;
360 } 371 }
361 } 372 }
362 373
363 virtual const GrBackendGeometryProcessorFactory& getFactory() const SK_OVERR IDE {
364 return GrTBackendGeometryProcessorFactory<DIEllipseEdgeEffect>::getInsta nce();
365 }
366
367 virtual ~DIEllipseEdgeEffect() {} 374 virtual ~DIEllipseEdgeEffect() {}
368 375
369 static const char* Name() { return "DIEllipseEdge"; } 376 virtual const char* name() const SK_OVERRIDE { return "DIEllipseEdge"; }
370 377
371 const GrAttribute* inPosition() const { return fInPosition; } 378 const GrAttribute* inPosition() const { return fInPosition; }
372 const GrAttribute* inEllipseOffsets0() const { return fInEllipseOffsets0; } 379 const GrAttribute* inEllipseOffsets0() const { return fInEllipseOffsets0; }
373 const GrAttribute* inEllipseOffsets1() const { return fInEllipseOffsets1; } 380 const GrAttribute* inEllipseOffsets1() const { return fInEllipseOffsets1; }
374 381
375 inline Mode getMode() const { return fMode; } 382 inline Mode getMode() const { return fMode; }
376 383
377 class GLProcessor : public GrGLGeometryProcessor { 384 class GLProcessor : public GrGLGeometryProcessor {
378 public: 385 public:
379 GLProcessor(const GrBackendProcessorFactory& factory, 386 GLProcessor(const GrGeometryProcessor&,
380 const GrGeometryProcessor&, 387 const GrBatchTracker&) {}
381 const GrBatchTracker&)
382 : INHERITED (factory) {}
383 388
384 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { 389 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
385 const DIEllipseEdgeEffect& ee = args.fGP.cast<DIEllipseEdgeEffect>() ; 390 const DIEllipseEdgeEffect& ee = args.fGP.cast<DIEllipseEdgeEffect>() ;
386 391
387 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 392 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
388 393
389 GrGLVertToFrag offsets0(kVec2f_GrSLType); 394 GrGLVertToFrag offsets0(kVec2f_GrSLType);
390 args.fPB->addVarying("EllipseOffsets0", &offsets0); 395 args.fPB->addVarying("EllipseOffsets0", &offsets0);
391 vsBuilder->codeAppendf("%s = %s;", offsets0.vsOut(), 396 vsBuilder->codeAppendf("%s = %s;", offsets0.vsOut(),
392 ee.inEllipseOffsets0()->fName); 397 ee.inEllipseOffsets0()->fName);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 461
457 virtual void setData(const GrGLProgramDataManager&, 462 virtual void setData(const GrGLProgramDataManager&,
458 const GrGeometryProcessor&, 463 const GrGeometryProcessor&,
459 const GrBatchTracker&) SK_OVERRIDE { 464 const GrBatchTracker&) SK_OVERRIDE {
460 } 465 }
461 466
462 private: 467 private:
463 typedef GrGLGeometryProcessor INHERITED; 468 typedef GrGLGeometryProcessor INHERITED;
464 }; 469 };
465 470
471 virtual void getGLProcessorKey(const GrBatchTracker& bt,
472 const GrGLCaps& caps,
473 GrProcessorKeyBuilder* b) const SK_OVERRIDE {
474 GLProcessor::GenKey(*this, bt, caps, b);
475 }
476
477 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE {
478 return SkNEW_ARGS(GLProcessor, (*this, bt));
479 }
480
481 virtual uint32_t classID() const {
482 static uint32_t id = GenClassID();
483 return id;
484 }
485
466 private: 486 private:
467 DIEllipseEdgeEffect(Mode mode) { 487 DIEllipseEdgeEffect(Mode mode) {
468 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 488 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
469 fInEllipseOffsets0 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s0", 489 fInEllipseOffsets0 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s0",
470 kVec2f_GrVertexA ttribType)); 490 kVec2f_GrVertexA ttribType));
471 fInEllipseOffsets1 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s1", 491 fInEllipseOffsets1 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s1",
472 kVec2f_GrVertexA ttribType)); 492 kVec2f_GrVertexA ttribType));
473 fMode = mode; 493 fMode = mode;
474 } 494 }
475 495
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 : 1282 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 :
1263 SK_ARRAY_COUNT(gRRectIndices); 1283 SK_ARRAY_COUNT(gRRectIndices);
1264 target->setIndexSourceToBuffer(indexBuffer); 1284 target->setIndexSourceToBuffer(indexBuffer);
1265 target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 1 6, indexCnt, 1285 target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 1 6, indexCnt,
1266 &bounds); 1286 &bounds);
1267 } 1287 }
1268 1288
1269 target->resetIndexSource(); 1289 target->resetIndexSource();
1270 return true; 1290 return true;
1271 } 1291 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698