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

Side by Side Diff: src/gpu/effects/GrBezierEffect.cpp

Issue 772513002: create and thread batch tracker object (Closed) Base URL: https://skia.googlesource.com/skia.git@2_vertex_attr
Patch Set: rebase 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/GrOvalRenderer.cpp ('k') | src/gpu/effects/GrCustomCoordsTextureEffect.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 "GrBezierEffect.h" 8 #include "GrBezierEffect.h"
9 9
10 #include "gl/builders/GrGLProgramBuilder.h" 10 #include "gl/builders/GrGLProgramBuilder.h"
11 #include "gl/GrGLProcessor.h" 11 #include "gl/GrGLProcessor.h"
12 #include "gl/GrGLSL.h" 12 #include "gl/GrGLSL.h"
13 #include "gl/GrGLGeometryProcessor.h" 13 #include "gl/GrGLGeometryProcessor.h"
14 #include "GrTBackendProcessorFactory.h" 14 #include "GrTBackendProcessorFactory.h"
15 15
16 class GrGLConicEffect : public GrGLGeometryProcessor { 16 class GrGLConicEffect : public GrGLGeometryProcessor {
17 public: 17 public:
18 GrGLConicEffect(const GrBackendProcessorFactory&, const GrProcessor&); 18 GrGLConicEffect(const GrBackendProcessorFactory&,
19 const GrGeometryProcessor&,
20 const GrBatchTracker&);
19 21
20 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; 22 virtual void emitCode(const EmitArgs&) SK_OVERRIDE;
21 23
22 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe yBuilder*); 24 static inline void GenKey(const GrGeometryProcessor&,
25 const GrBatchTracker&,
26 const GrGLCaps&,
27 GrProcessorKeyBuilder*);
23 28
24 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O VERRIDE {} 29 virtual void setData(const GrGLProgramDataManager&,
30 const GrGeometryProcessor&,
31 const GrBatchTracker&) SK_OVERRIDE {}
25 32
26 private: 33 private:
27 GrPrimitiveEdgeType fEdgeType; 34 GrPrimitiveEdgeType fEdgeType;
28 35
29 typedef GrGLGeometryProcessor INHERITED; 36 typedef GrGLGeometryProcessor INHERITED;
30 }; 37 };
31 38
32 GrGLConicEffect::GrGLConicEffect(const GrBackendProcessorFactory& factory, 39 GrGLConicEffect::GrGLConicEffect(const GrBackendProcessorFactory& factory,
33 const GrProcessor& effect) 40 const GrGeometryProcessor& processor,
41 const GrBatchTracker& bt)
34 : INHERITED (factory) { 42 : INHERITED (factory) {
35 const GrConicEffect& ce = effect.cast<GrConicEffect>(); 43 const GrConicEffect& ce = processor.cast<GrConicEffect>();
36 fEdgeType = ce.getEdgeType(); 44 fEdgeType = ce.getEdgeType();
37 } 45 }
38 46
39 void GrGLConicEffect::emitCode(const EmitArgs& args) { 47 void GrGLConicEffect::emitCode(const EmitArgs& args) {
40 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 48 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
41 const GrConicEffect& gp = args.fGP.cast<GrConicEffect>(); 49 const GrConicEffect& gp = args.fGP.cast<GrConicEffect>();
42 50
43 GrGLVertToFrag v(kVec4f_GrSLType); 51 GrGLVertToFrag v(kVec4f_GrSLType);
44 args.fPB->addVarying("ConicCoeffs", &v); 52 args.fPB->addVarying("ConicCoeffs", &v);
45 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inConicCoeffs()->fName); 53 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inConicCoeffs()->fName);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 fsBuilder->codeAppend("edgeAlpha = float(edgeAlpha < 0.0);"); 113 fsBuilder->codeAppend("edgeAlpha = float(edgeAlpha < 0.0);");
106 break; 114 break;
107 } 115 }
108 default: 116 default:
109 SkFAIL("Shouldn't get here"); 117 SkFAIL("Shouldn't get here");
110 } 118 }
111 119
112 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage); 120 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage);
113 } 121 }
114 122
115 void GrGLConicEffect::GenKey(const GrProcessor& processor, const GrGLCaps&, 123 void GrGLConicEffect::GenKey(const GrGeometryProcessor& processor,
124 const GrBatchTracker&,
125 const GrGLCaps&,
116 GrProcessorKeyBuilder* b) { 126 GrProcessorKeyBuilder* b) {
117 const GrConicEffect& ce = processor.cast<GrConicEffect>(); 127 const GrConicEffect& ce = processor.cast<GrConicEffect>();
118 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2; 128 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
119 b->add32(key); 129 b->add32(key);
120 } 130 }
121 131
122 ////////////////////////////////////////////////////////////////////////////// 132 //////////////////////////////////////////////////////////////////////////////
123 133
124 GrConicEffect::~GrConicEffect() {} 134 GrConicEffect::~GrConicEffect() {}
125 135
(...skipping 29 matching lines...) Expand all
155 } while (NULL == gp); 165 } while (NULL == gp);
156 return gp; 166 return gp;
157 } 167 }
158 168
159 ////////////////////////////////////////////////////////////////////////////// 169 //////////////////////////////////////////////////////////////////////////////
160 // Quad 170 // Quad
161 ////////////////////////////////////////////////////////////////////////////// 171 //////////////////////////////////////////////////////////////////////////////
162 172
163 class GrGLQuadEffect : public GrGLGeometryProcessor { 173 class GrGLQuadEffect : public GrGLGeometryProcessor {
164 public: 174 public:
165 GrGLQuadEffect(const GrBackendProcessorFactory&, const GrProcessor&); 175 GrGLQuadEffect(const GrBackendProcessorFactory&,
176 const GrGeometryProcessor&,
177 const GrBatchTracker&);
166 178
167 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; 179 virtual void emitCode(const EmitArgs&) SK_OVERRIDE;
168 180
169 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe yBuilder*); 181 static inline void GenKey(const GrGeometryProcessor&,
182 const GrBatchTracker&,
183 const GrGLCaps&,
184 GrProcessorKeyBuilder*);
170 185
171 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O VERRIDE {} 186 virtual void setData(const GrGLProgramDataManager&,
187 const GrGeometryProcessor&,
188 const GrBatchTracker&) SK_OVERRIDE {}
172 189
173 private: 190 private:
174 GrPrimitiveEdgeType fEdgeType; 191 GrPrimitiveEdgeType fEdgeType;
175 192
176 typedef GrGLGeometryProcessor INHERITED; 193 typedef GrGLGeometryProcessor INHERITED;
177 }; 194 };
178 195
179 GrGLQuadEffect::GrGLQuadEffect(const GrBackendProcessorFactory& factory, 196 GrGLQuadEffect::GrGLQuadEffect(const GrBackendProcessorFactory& factory,
180 const GrProcessor& effect) 197 const GrGeometryProcessor& processor,
198 const GrBatchTracker& bt)
181 : INHERITED (factory) { 199 : INHERITED (factory) {
182 const GrQuadEffect& ce = effect.cast<GrQuadEffect>(); 200 const GrQuadEffect& ce = processor.cast<GrQuadEffect>();
183 fEdgeType = ce.getEdgeType(); 201 fEdgeType = ce.getEdgeType();
184 } 202 }
185 203
186 void GrGLQuadEffect::emitCode(const EmitArgs& args) { 204 void GrGLQuadEffect::emitCode(const EmitArgs& args) {
187 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 205 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
188 const GrQuadEffect& gp = args.fGP.cast<GrQuadEffect>(); 206 const GrQuadEffect& gp = args.fGP.cast<GrQuadEffect>();
189 207
190 GrGLVertToFrag v(kVec4f_GrSLType); 208 GrGLVertToFrag v(kVec4f_GrSLType);
191 args.fPB->addVarying("HairQuadEdge", &v); 209 args.fPB->addVarying("HairQuadEdge", &v);
192 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inHairQuadEdge()->fName); 210 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inHairQuadEdge()->fName);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 fsBuilder->codeAppend("edgeAlpha = float(edgeAlpha < 0.0);"); 256 fsBuilder->codeAppend("edgeAlpha = float(edgeAlpha < 0.0);");
239 break; 257 break;
240 } 258 }
241 default: 259 default:
242 SkFAIL("Shouldn't get here"); 260 SkFAIL("Shouldn't get here");
243 } 261 }
244 262
245 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage); 263 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage);
246 } 264 }
247 265
248 void GrGLQuadEffect::GenKey(const GrProcessor& processor, const GrGLCaps&, 266 void GrGLQuadEffect::GenKey(const GrGeometryProcessor& processor,
267 const GrBatchTracker&,
268 const GrGLCaps&,
249 GrProcessorKeyBuilder* b) { 269 GrProcessorKeyBuilder* b) {
250 const GrQuadEffect& ce = processor.cast<GrQuadEffect>(); 270 const GrQuadEffect& ce = processor.cast<GrQuadEffect>();
251 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2; 271 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
252 b->add32(key); 272 b->add32(key);
253 } 273 }
254 274
255 ////////////////////////////////////////////////////////////////////////////// 275 //////////////////////////////////////////////////////////////////////////////
256 276
257 GrQuadEffect::~GrQuadEffect() {} 277 GrQuadEffect::~GrQuadEffect() {}
258 278
(...skipping 29 matching lines...) Expand all
288 } while (NULL == gp); 308 } while (NULL == gp);
289 return gp; 309 return gp;
290 } 310 }
291 311
292 ////////////////////////////////////////////////////////////////////////////// 312 //////////////////////////////////////////////////////////////////////////////
293 // Cubic 313 // Cubic
294 ////////////////////////////////////////////////////////////////////////////// 314 //////////////////////////////////////////////////////////////////////////////
295 315
296 class GrGLCubicEffect : public GrGLGeometryProcessor { 316 class GrGLCubicEffect : public GrGLGeometryProcessor {
297 public: 317 public:
298 GrGLCubicEffect(const GrBackendProcessorFactory&, const GrProcessor&); 318 GrGLCubicEffect(const GrBackendProcessorFactory&,
319 const GrGeometryProcessor&,
320 const GrBatchTracker&);
299 321
300 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; 322 virtual void emitCode(const EmitArgs&) SK_OVERRIDE;
301 323
302 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe yBuilder*); 324 static inline void GenKey(const GrGeometryProcessor&,
325 const GrBatchTracker&,
326 const GrGLCaps&,
327 GrProcessorKeyBuilder*);
303 328
304 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O VERRIDE {} 329 virtual void setData(const GrGLProgramDataManager&,
330 const GrGeometryProcessor&,
331 const GrBatchTracker&) SK_OVERRIDE {}
305 332
306 private: 333 private:
307 GrPrimitiveEdgeType fEdgeType; 334 GrPrimitiveEdgeType fEdgeType;
308 335
309 typedef GrGLGeometryProcessor INHERITED; 336 typedef GrGLGeometryProcessor INHERITED;
310 }; 337 };
311 338
312 GrGLCubicEffect::GrGLCubicEffect(const GrBackendProcessorFactory& factory, 339 GrGLCubicEffect::GrGLCubicEffect(const GrBackendProcessorFactory& factory,
313 const GrProcessor& processor) 340 const GrGeometryProcessor& processor,
341 const GrBatchTracker&)
314 : INHERITED (factory) { 342 : INHERITED (factory) {
315 const GrCubicEffect& ce = processor.cast<GrCubicEffect>(); 343 const GrCubicEffect& ce = processor.cast<GrCubicEffect>();
316 fEdgeType = ce.getEdgeType(); 344 fEdgeType = ce.getEdgeType();
317 } 345 }
318 346
319 void GrGLCubicEffect::emitCode(const EmitArgs& args) { 347 void GrGLCubicEffect::emitCode(const EmitArgs& args) {
320 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); 348 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
321 const GrCubicEffect& gp = args.fGP.cast<GrCubicEffect>(); 349 const GrCubicEffect& gp = args.fGP.cast<GrCubicEffect>();
322 350
323 GrGLVertToFrag v(kVec4f_GrSLType); 351 GrGLVertToFrag v(kVec4f_GrSLType);
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 break; 440 break;
413 } 441 }
414 default: 442 default:
415 SkFAIL("Shouldn't get here"); 443 SkFAIL("Shouldn't get here");
416 } 444 }
417 445
418 446
419 fsBuilder->codeAppendf("%s = vec4(%s);", args.fOutputCoverage, edgeAlpha.c_s tr()); 447 fsBuilder->codeAppendf("%s = vec4(%s);", args.fOutputCoverage, edgeAlpha.c_s tr());
420 } 448 }
421 449
422 void GrGLCubicEffect::GenKey(const GrProcessor& processor, const GrGLCaps&, 450 void GrGLCubicEffect::GenKey(const GrGeometryProcessor& processor,
451 const GrBatchTracker&,
452 const GrGLCaps&,
423 GrProcessorKeyBuilder* b) { 453 GrProcessorKeyBuilder* b) {
424 const GrCubicEffect& ce = processor.cast<GrCubicEffect>(); 454 const GrCubicEffect& ce = processor.cast<GrCubicEffect>();
425 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2; 455 uint32_t key = ce.isAntiAliased() ? (ce.isFilled() ? 0x0 : 0x1) : 0x2;
426 b->add32(key); 456 b->add32(key);
427 } 457 }
428 458
429 ////////////////////////////////////////////////////////////////////////////// 459 //////////////////////////////////////////////////////////////////////////////
430 460
431 GrCubicEffect::~GrCubicEffect() {} 461 GrCubicEffect::~GrCubicEffect() {}
432 462
(...skipping 23 matching lines...) Expand all
456 GrTexture*[]) { 486 GrTexture*[]) {
457 GrGeometryProcessor* gp; 487 GrGeometryProcessor* gp;
458 do { 488 do {
459 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( 489 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>(
460 random->nextULessThan(kGrPro cessorEdgeTypeCnt)); 490 random->nextULessThan(kGrPro cessorEdgeTypeCnt));
461 gp = GrCubicEffect::Create(edgeType, caps); 491 gp = GrCubicEffect::Create(edgeType, caps);
462 } while (NULL == gp); 492 } while (NULL == gp);
463 return gp; 493 return gp;
464 } 494 }
465 495
OLDNEW
« no previous file with comments | « src/gpu/GrOvalRenderer.cpp ('k') | src/gpu/effects/GrCustomCoordsTextureEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698