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

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

Issue 774133003: Revert of create and thread batch tracker object (Closed) Base URL: https://skia.googlesource.com/skia.git@2_vertex_attr
Patch Set: 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/effects/GrBezierEffect.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 "gl/builders/GrGLProgramBuilder.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 } 84 }
85 85
86 virtual ~CircleEdgeEffect() {} 86 virtual ~CircleEdgeEffect() {}
87 87
88 static const char* Name() { return "CircleEdge"; } 88 static const char* Name() { return "CircleEdge"; }
89 89
90 inline bool isStroked() const { return fStroke; } 90 inline bool isStroked() const { return fStroke; }
91 91
92 class GLProcessor : public GrGLGeometryProcessor { 92 class GLProcessor : public GrGLGeometryProcessor {
93 public: 93 public:
94 GLProcessor(const GrBackendProcessorFactory& factory, 94 GLProcessor(const GrBackendProcessorFactory& factory, const GrProcessor& )
95 const GrGeometryProcessor&,
96 const GrBatchTracker&)
97 : INHERITED (factory) {} 95 : INHERITED (factory) {}
98 96
99 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { 97 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
100 const CircleEdgeEffect& ce = args.fGP.cast<CircleEdgeEffect>(); 98 const CircleEdgeEffect& ce = args.fGP.cast<CircleEdgeEffect>();
101 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 99 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
102 100
103 GrGLVertToFrag v(kVec4f_GrSLType); 101 GrGLVertToFrag v(kVec4f_GrSLType);
104 args.fPB->addVarying("CircleEdge", &v); 102 args.fPB->addVarying("CircleEdge", &v);
105 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), ce.inCircleEdge()->fNa me); 103 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), ce.inCircleEdge()->fNa me);
106 104
(...skipping 10 matching lines...) Expand all
117 fsBuilder->codeAppendf("float edgeAlpha = clamp(%s.z - d, 0.0, 1.0); ", v.fsIn()); 115 fsBuilder->codeAppendf("float edgeAlpha = clamp(%s.z - d, 0.0, 1.0); ", v.fsIn());
118 if (ce.isStroked()) { 116 if (ce.isStroked()) {
119 fsBuilder->codeAppendf("float innerAlpha = clamp(d - %s.w, 0.0, 1.0);", 117 fsBuilder->codeAppendf("float innerAlpha = clamp(d - %s.w, 0.0, 1.0);",
120 v.fsIn()); 118 v.fsIn());
121 fsBuilder->codeAppend("edgeAlpha *= innerAlpha;"); 119 fsBuilder->codeAppend("edgeAlpha *= innerAlpha;");
122 } 120 }
123 121
124 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); 122 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage );
125 } 123 }
126 124
127 static void GenKey(const GrGeometryProcessor& processor, 125 static void GenKey(const GrProcessor& processor, const GrGLCaps&,
128 const GrBatchTracker&,
129 const GrGLCaps&,
130 GrProcessorKeyBuilder* b) { 126 GrProcessorKeyBuilder* b) {
131 const CircleEdgeEffect& circleEffect = processor.cast<CircleEdgeEffe ct>(); 127 const CircleEdgeEffect& circleEffect = processor.cast<CircleEdgeEffe ct>();
132 b->add32(circleEffect.isStroked()); 128 b->add32(circleEffect.isStroked());
133 } 129 }
134 130
135 virtual void setData(const GrGLProgramDataManager&, 131 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_OVERRIDE {}
136 const GrGeometryProcessor&,
137 const GrBatchTracker&) SK_OVERRIDE {}
138 132
139 private: 133 private:
140 typedef GrGLGeometryProcessor INHERITED; 134 typedef GrGLGeometryProcessor INHERITED;
141 }; 135 };
142 136
143 137
144 private: 138 private:
145 CircleEdgeEffect(bool stroke) { 139 CircleEdgeEffect(bool stroke) {
146 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 140 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
147 fInCircleEdge = &this->addVertexAttrib(GrAttribute("inCircleEdge", 141 fInCircleEdge = &this->addVertexAttrib(GrAttribute("inCircleEdge",
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 205
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 GrBackendProcessorFactory& factory, const GrProcessor& )
222 const GrGeometryProcessor&,
223 const GrBatchTracker&)
224 : INHERITED (factory) {} 216 : 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(),
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 fsBuilder->codeAppend("test = dot(scaledOffset, scaledOffset) - 1.0;"); 258 fsBuilder->codeAppend("test = dot(scaledOffset, scaledOffset) - 1.0;");
267 fsBuilder->codeAppendf("grad = 2.0*scaledOffset*%s.zw;", 259 fsBuilder->codeAppendf("grad = 2.0*scaledOffset*%s.zw;",
268 ellipseRadii.fsIn()); 260 ellipseRadii.fsIn());
269 fsBuilder->codeAppend("invlen = inversesqrt(dot(grad, grad));"); 261 fsBuilder->codeAppend("invlen = inversesqrt(dot(grad, grad));");
270 fsBuilder->codeAppend("edgeAlpha *= clamp(0.5+test*invlen, 0.0, 1.0);"); 262 fsBuilder->codeAppend("edgeAlpha *= clamp(0.5+test*invlen, 0.0, 1.0);");
271 } 263 }
272 264
273 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); 265 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage );
274 } 266 }
275 267
276 static void GenKey(const GrGeometryProcessor& processor, 268 static void GenKey(const GrProcessor& processor, const GrGLCaps&,
277 const GrBatchTracker&,
278 const GrGLCaps&,
279 GrProcessorKeyBuilder* b) { 269 GrProcessorKeyBuilder* b) {
280 const EllipseEdgeEffect& ellipseEffect = processor.cast<EllipseEdgeE ffect>(); 270 const EllipseEdgeEffect& ellipseEffect = processor.cast<EllipseEdgeE ffect>();
281 b->add32(ellipseEffect.isStroked()); 271 b->add32(ellipseEffect.isStroked());
282 } 272 }
283 273
284 virtual void setData(const GrGLProgramDataManager&, 274 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_OVERRIDE {
285 const GrGeometryProcessor&,
286 const GrBatchTracker&) SK_OVERRIDE {
287 } 275 }
288 276
289 private: 277 private:
290 typedef GrGLGeometryProcessor INHERITED; 278 typedef GrGLGeometryProcessor INHERITED;
291 }; 279 };
292 280
293 private: 281 private:
294 EllipseEdgeEffect(bool stroke) { 282 EllipseEdgeEffect(bool stroke) {
295 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 283 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
296 fInEllipseOffset = &this->addVertexAttrib(GrAttribute("inEllipseOffset", 284 fInEllipseOffset = &this->addVertexAttrib(GrAttribute("inEllipseOffset",
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 static const char* Name() { return "DIEllipseEdge"; } 357 static const char* Name() { return "DIEllipseEdge"; }
370 358
371 const GrAttribute* inPosition() const { return fInPosition; } 359 const GrAttribute* inPosition() const { return fInPosition; }
372 const GrAttribute* inEllipseOffsets0() const { return fInEllipseOffsets0; } 360 const GrAttribute* inEllipseOffsets0() const { return fInEllipseOffsets0; }
373 const GrAttribute* inEllipseOffsets1() const { return fInEllipseOffsets1; } 361 const GrAttribute* inEllipseOffsets1() const { return fInEllipseOffsets1; }
374 362
375 inline Mode getMode() const { return fMode; } 363 inline Mode getMode() const { return fMode; }
376 364
377 class GLProcessor : public GrGLGeometryProcessor { 365 class GLProcessor : public GrGLGeometryProcessor {
378 public: 366 public:
379 GLProcessor(const GrBackendProcessorFactory& factory, 367 GLProcessor(const GrBackendProcessorFactory& factory, const GrProcessor& )
380 const GrGeometryProcessor&,
381 const GrBatchTracker&)
382 : INHERITED (factory) {} 368 : INHERITED (factory) {}
383 369
384 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { 370 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
385 const DIEllipseEdgeEffect& ee = args.fGP.cast<DIEllipseEdgeEffect>() ; 371 const DIEllipseEdgeEffect& ee = args.fGP.cast<DIEllipseEdgeEffect>() ;
386 372
387 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 373 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
388 374
389 GrGLVertToFrag offsets0(kVec2f_GrSLType); 375 GrGLVertToFrag offsets0(kVec2f_GrSLType);
390 args.fPB->addVarying("EllipseOffsets0", &offsets0); 376 args.fPB->addVarying("EllipseOffsets0", &offsets0);
391 vsBuilder->codeAppendf("%s = %s;", offsets0.vsOut(), 377 vsBuilder->codeAppendf("%s = %s;", offsets0.vsOut(),
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 " 2.0*%s.x*duvdy.x + 2.0*%s.y* duvdy.y);", 424 " 2.0*%s.x*duvdy.x + 2.0*%s.y* duvdy.y);",
439 offsets1.fsIn(), offsets1.fsIn(), offsets 1.fsIn(), 425 offsets1.fsIn(), offsets1.fsIn(), offsets 1.fsIn(),
440 offsets1.fsIn()); 426 offsets1.fsIn());
441 fsBuilder->codeAppend("invlen = inversesqrt(dot(grad, grad));"); 427 fsBuilder->codeAppend("invlen = inversesqrt(dot(grad, grad));");
442 fsBuilder->codeAppend("edgeAlpha *= clamp(0.5+test*invlen, 0.0, 1.0);"); 428 fsBuilder->codeAppend("edgeAlpha *= clamp(0.5+test*invlen, 0.0, 1.0);");
443 } 429 }
444 430
445 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); 431 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage );
446 } 432 }
447 433
448 static void GenKey(const GrGeometryProcessor& processor, 434 static void GenKey(const GrProcessor& processor, const GrGLCaps&,
449 const GrBatchTracker&,
450 const GrGLCaps&,
451 GrProcessorKeyBuilder* b) { 435 GrProcessorKeyBuilder* b) {
452 const DIEllipseEdgeEffect& ellipseEffect = processor.cast<DIEllipseE dgeEffect>(); 436 const DIEllipseEdgeEffect& ellipseEffect = processor.cast<DIEllipseE dgeEffect>();
453 437
454 b->add32(ellipseEffect.getMode()); 438 b->add32(ellipseEffect.getMode());
455 } 439 }
456 440
457 virtual void setData(const GrGLProgramDataManager&, 441 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_OVERRIDE {
458 const GrGeometryProcessor&,
459 const GrBatchTracker&) SK_OVERRIDE {
460 } 442 }
461 443
462 private: 444 private:
463 typedef GrGLGeometryProcessor INHERITED; 445 typedef GrGLGeometryProcessor INHERITED;
464 }; 446 };
465 447
466 private: 448 private:
467 DIEllipseEdgeEffect(Mode mode) { 449 DIEllipseEdgeEffect(Mode mode) {
468 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType)); 450 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_Gr VertexAttribType));
469 fInEllipseOffsets0 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s0", 451 fInEllipseOffsets0 = &this->addVertexAttrib(GrAttribute("inEllipseOffset s0",
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 : 1244 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 :
1263 SK_ARRAY_COUNT(gRRectIndices); 1245 SK_ARRAY_COUNT(gRRectIndices);
1264 target->setIndexSourceToBuffer(indexBuffer); 1246 target->setIndexSourceToBuffer(indexBuffer);
1265 target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 1 6, indexCnt, 1247 target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 1 6, indexCnt,
1266 &bounds); 1248 &bounds);
1267 } 1249 }
1268 1250
1269 target->resetIndexSource(); 1251 target->resetIndexSource();
1270 return true; 1252 return true;
1271 } 1253 }
OLDNEW
« no previous file with comments | « src/gpu/GrOptDrawState.cpp ('k') | src/gpu/effects/GrBezierEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698