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

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: more clang warnings 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/GrGeometryProcessor.h ('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 "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 }
143 141
144 private: 142 private:
145 CircleEdgeEffect(bool stroke) { 143 CircleEdgeEffect(bool stroke) {
144 this->initClassID<CircleEdgeEffect>();
146 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 145 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
147 fInCircleEdge = &this->addVertexAttrib(GrAttribute("inCircleEdge", 146 fInCircleEdge = &this->addVertexAttrib(GrAttribute("inCircleEdge",
148 kVec4f_GrVertexAttrib Type)); 147 kVec4f_GrVertexAttrib Type));
149 fStroke = stroke; 148 fStroke = stroke;
150 } 149 }
151 150
152 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 151 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
153 const CircleEdgeEffect& cee = other.cast<CircleEdgeEffect>(); 152 const CircleEdgeEffect& cee = other.cast<CircleEdgeEffect>();
154 return cee.fStroke == fStroke; 153 return cee.fStroke == fStroke;
155 } 154 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 193
195 if (stroke) { 194 if (stroke) {
196 gEllipseStrokeEdge->ref(); 195 gEllipseStrokeEdge->ref();
197 return gEllipseStrokeEdge; 196 return gEllipseStrokeEdge;
198 } else { 197 } else {
199 gEllipseFillEdge->ref(); 198 gEllipseFillEdge->ref();
200 return gEllipseFillEdge; 199 return gEllipseFillEdge;
201 } 200 }
202 } 201 }
203 202
204 virtual const GrBackendGeometryProcessorFactory& getFactory() const SK_OVERR IDE {
205 return GrTBackendGeometryProcessorFactory<EllipseEdgeEffect>::getInstanc e();
206 }
207
208 virtual ~EllipseEdgeEffect() {} 203 virtual ~EllipseEdgeEffect() {}
209 204
210 static const char* Name() { return "EllipseEdge"; } 205 virtual const char* name() const SK_OVERRIDE { return "EllipseEdge"; }
211
212 206
213 const GrAttribute* inPosition() const { return fInPosition; } 207 const GrAttribute* inPosition() const { return fInPosition; }
214 const GrAttribute* inEllipseOffset() const { return fInEllipseOffset; } 208 const GrAttribute* inEllipseOffset() const { return fInEllipseOffset; }
215 const GrAttribute* inEllipseRadii() const { return fInEllipseRadii; } 209 const GrAttribute* inEllipseRadii() const { return fInEllipseRadii; }
216 210
217 inline bool isStroked() const { return fStroke; } 211 inline bool isStroked() const { return fStroke; }
218 212
219 class GLProcessor : public GrGLGeometryProcessor { 213 class GLProcessor : public GrGLGeometryProcessor {
220 public: 214 public:
221 GLProcessor(const GrBackendProcessorFactory& factory, 215 GLProcessor(const GrGeometryProcessor&,
222 const GrGeometryProcessor&, 216 const GrBatchTracker&) {}
223 const GrBatchTracker&)
224 : INHERITED (factory) {}
225 217
226 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { 218 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
227 const EllipseEdgeEffect& ee = args.fGP.cast<EllipseEdgeEffect>(); 219 const EllipseEdgeEffect& ee = args.fGP.cast<EllipseEdgeEffect>();
228 220
229 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 221 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
230 222
231 GrGLVertToFrag ellipseOffsets(kVec2f_GrSLType); 223 GrGLVertToFrag ellipseOffsets(kVec2f_GrSLType);
232 args.fPB->addVarying("EllipseOffsets", &ellipseOffsets); 224 args.fPB->addVarying("EllipseOffsets", &ellipseOffsets);
233 vsBuilder->codeAppendf("%s = %s;", ellipseOffsets.vsOut(), 225 vsBuilder->codeAppendf("%s = %s;", ellipseOffsets.vsOut(),
234 ee.inEllipseOffset()->fName); 226 ee.inEllipseOffset()->fName);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 275
284 virtual void setData(const GrGLProgramDataManager&, 276 virtual void setData(const GrGLProgramDataManager&,
285 const GrGeometryProcessor&, 277 const GrGeometryProcessor&,
286 const GrBatchTracker&) SK_OVERRIDE { 278 const GrBatchTracker&) SK_OVERRIDE {
287 } 279 }
288 280
289 private: 281 private:
290 typedef GrGLGeometryProcessor INHERITED; 282 typedef GrGLGeometryProcessor INHERITED;
291 }; 283 };
292 284
285 virtual void getGLProcessorKey(const GrBatchTracker& bt,
286 const GrGLCaps& caps,
287 GrProcessorKeyBuilder* b) const SK_OVERRIDE {
288 GLProcessor::GenKey(*this, bt, caps, b);
289 }
290
291 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE {
292 return SkNEW_ARGS(GLProcessor, (*this, bt));
293 }
294
293 private: 295 private:
294 EllipseEdgeEffect(bool stroke) { 296 EllipseEdgeEffect(bool stroke) {
297 this->initClassID<EllipseEdgeEffect>();
295 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 298 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
296 fInEllipseOffset = &this->addVertexAttrib(GrAttribute("inEllipseOffset", 299 fInEllipseOffset = &this->addVertexAttrib(GrAttribute("inEllipseOffset",
297 kVec2f_GrVertexAtt ribType)); 300 kVec2f_GrVertexAtt ribType));
298 fInEllipseRadii = &this->addVertexAttrib(GrAttribute("inEllipseRadii", 301 fInEllipseRadii = &this->addVertexAttrib(GrAttribute("inEllipseRadii",
299 kVec4f_GrVertexAttr ibType)); 302 kVec4f_GrVertexAttr ibType));
300 fStroke = stroke; 303 fStroke = stroke;
301 } 304 }
302 305
303 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 306 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
304 const EllipseEdgeEffect& eee = other.cast<EllipseEdgeEffect>(); 307 const EllipseEdgeEffect& eee = other.cast<EllipseEdgeEffect>();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 return gEllipseStrokeEdge; 356 return gEllipseStrokeEdge;
354 } else if (kHairline == mode) { 357 } else if (kHairline == mode) {
355 gEllipseHairlineEdge->ref(); 358 gEllipseHairlineEdge->ref();
356 return gEllipseHairlineEdge; 359 return gEllipseHairlineEdge;
357 } else { 360 } else {
358 gEllipseFillEdge->ref(); 361 gEllipseFillEdge->ref();
359 return gEllipseFillEdge; 362 return gEllipseFillEdge;
360 } 363 }
361 } 364 }
362 365
363 virtual const GrBackendGeometryProcessorFactory& getFactory() const SK_OVERR IDE {
364 return GrTBackendGeometryProcessorFactory<DIEllipseEdgeEffect>::getInsta nce();
365 }
366
367 virtual ~DIEllipseEdgeEffect() {} 366 virtual ~DIEllipseEdgeEffect() {}
368 367
369 static const char* Name() { return "DIEllipseEdge"; } 368 virtual const char* name() const SK_OVERRIDE { return "DIEllipseEdge"; }
370 369
371 const GrAttribute* inPosition() const { return fInPosition; } 370 const GrAttribute* inPosition() const { return fInPosition; }
372 const GrAttribute* inEllipseOffsets0() const { return fInEllipseOffsets0; } 371 const GrAttribute* inEllipseOffsets0() const { return fInEllipseOffsets0; }
373 const GrAttribute* inEllipseOffsets1() const { return fInEllipseOffsets1; } 372 const GrAttribute* inEllipseOffsets1() const { return fInEllipseOffsets1; }
374 373
375 inline Mode getMode() const { return fMode; } 374 inline Mode getMode() const { return fMode; }
376 375
377 class GLProcessor : public GrGLGeometryProcessor { 376 class GLProcessor : public GrGLGeometryProcessor {
378 public: 377 public:
379 GLProcessor(const GrBackendProcessorFactory& factory, 378 GLProcessor(const GrGeometryProcessor&,
380 const GrGeometryProcessor&, 379 const GrBatchTracker&) {}
381 const GrBatchTracker&)
382 : INHERITED (factory) {}
383 380
384 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { 381 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
385 const DIEllipseEdgeEffect& ee = args.fGP.cast<DIEllipseEdgeEffect>() ; 382 const DIEllipseEdgeEffect& ee = args.fGP.cast<DIEllipseEdgeEffect>() ;
386 383
387 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 384 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
388 385
389 GrGLVertToFrag offsets0(kVec2f_GrSLType); 386 GrGLVertToFrag offsets0(kVec2f_GrSLType);
390 args.fPB->addVarying("EllipseOffsets0", &offsets0); 387 args.fPB->addVarying("EllipseOffsets0", &offsets0);
391 vsBuilder->codeAppendf("%s = %s;", offsets0.vsOut(), 388 vsBuilder->codeAppendf("%s = %s;", offsets0.vsOut(),
392 ee.inEllipseOffsets0()->fName); 389 ee.inEllipseOffsets0()->fName);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 453
457 virtual void setData(const GrGLProgramDataManager&, 454 virtual void setData(const GrGLProgramDataManager&,
458 const GrGeometryProcessor&, 455 const GrGeometryProcessor&,
459 const GrBatchTracker&) SK_OVERRIDE { 456 const GrBatchTracker&) SK_OVERRIDE {
460 } 457 }
461 458
462 private: 459 private:
463 typedef GrGLGeometryProcessor INHERITED; 460 typedef GrGLGeometryProcessor INHERITED;
464 }; 461 };
465 462
463 virtual void getGLProcessorKey(const GrBatchTracker& bt,
464 const GrGLCaps& caps,
465 GrProcessorKeyBuilder* b) const SK_OVERRIDE {
466 GLProcessor::GenKey(*this, bt, caps, b);
467 }
468
469 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE {
470 return SkNEW_ARGS(GLProcessor, (*this, bt));
471 }
472
466 private: 473 private:
467 DIEllipseEdgeEffect(Mode mode) { 474 DIEllipseEdgeEffect(Mode mode) {
475 this->initClassID<DIEllipseEdgeEffect>();
468 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 476 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
469 fInEllipseOffsets0 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s0", 477 fInEllipseOffsets0 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s0",
470 kVec2f_GrVertexA ttribType)); 478 kVec2f_GrVertexA ttribType));
471 fInEllipseOffsets1 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s1", 479 fInEllipseOffsets1 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s1",
472 kVec2f_GrVertexA ttribType)); 480 kVec2f_GrVertexA ttribType));
473 fMode = mode; 481 fMode = mode;
474 } 482 }
475 483
476 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE { 484 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE {
477 const DIEllipseEdgeEffect& eee = other.cast<DIEllipseEdgeEffect>(); 485 const DIEllipseEdgeEffect& eee = other.cast<DIEllipseEdgeEffect>();
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 : 1270 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 :
1263 SK_ARRAY_COUNT(gRRectIndices); 1271 SK_ARRAY_COUNT(gRRectIndices);
1264 target->setIndexSourceToBuffer(indexBuffer); 1272 target->setIndexSourceToBuffer(indexBuffer);
1265 target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 1 6, indexCnt, 1273 target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 1 6, indexCnt,
1266 &bounds); 1274 &bounds);
1267 } 1275 }
1268 1276
1269 target->resetIndexSource(); 1277 target->resetIndexSource();
1270 return true; 1278 return true;
1271 } 1279 }
OLDNEW
« no previous file with comments | « src/gpu/GrGeometryProcessor.h ('k') | src/gpu/GrProcessor.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698