OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 "GrDefaultGeoProcFactory.h" | 8 #include "GrDefaultGeoProcFactory.h" |
9 | 9 |
10 #include "GrDrawState.h" | 10 #include "GrDrawState.h" |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 return GrTBackendGeometryProcessorFactory<DefaultGeoProc>::getInstance()
; | 68 return GrTBackendGeometryProcessorFactory<DefaultGeoProc>::getInstance()
; |
69 } | 69 } |
70 | 70 |
71 const GrAttribute* inPosition() const { return fInPosition; } | 71 const GrAttribute* inPosition() const { return fInPosition; } |
72 const GrAttribute* inColor() const { return fInColor; } | 72 const GrAttribute* inColor() const { return fInColor; } |
73 const GrAttribute* inLocalCoords() const { return fInLocalCoords; } | 73 const GrAttribute* inLocalCoords() const { return fInLocalCoords; } |
74 const GrAttribute* inCoverage() const { return fInCoverage; } | 74 const GrAttribute* inCoverage() const { return fInCoverage; } |
75 | 75 |
76 class GLProcessor : public GrGLGeometryProcessor { | 76 class GLProcessor : public GrGLGeometryProcessor { |
77 public: | 77 public: |
78 GLProcessor(const GrBackendProcessorFactory& factory, const GrProcessor&
) | 78 GLProcessor(const GrBackendProcessorFactory& factory, |
| 79 const GrGeometryProcessor&, |
| 80 const GrBatchTracker&) |
79 : INHERITED (factory) {} | 81 : INHERITED (factory) {} |
80 | 82 |
81 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { | 83 virtual void emitCode(const EmitArgs& args) SK_OVERRIDE { |
82 const DefaultGeoProc& gp = args.fGP.cast<DefaultGeoProc>(); | 84 const DefaultGeoProc& gp = args.fGP.cast<DefaultGeoProc>(); |
83 GrGLVertexBuilder* vs = args.fPB->getVertexShaderBuilder(); | 85 GrGLVertexBuilder* vs = args.fPB->getVertexShaderBuilder(); |
84 | 86 |
85 vs->codeAppendf("%s = %s;", vs->positionCoords(), gp.inPosition()->f
Name); | 87 vs->codeAppendf("%s = %s;", vs->positionCoords(), gp.inPosition()->f
Name); |
86 | 88 |
87 // Setup pass through color | 89 // Setup pass through color |
88 if (gp.inColor()) { | 90 if (gp.inColor()) { |
(...skipping 13 matching lines...) Expand all Loading... |
102 | 104 |
103 // Setup coverage as pass through | 105 // Setup coverage as pass through |
104 GrGLGPFragmentBuilder* fs = args.fPB->getFragmentShaderBuilder(); | 106 GrGLGPFragmentBuilder* fs = args.fPB->getFragmentShaderBuilder(); |
105 fs->codeAppendf("float alpha = 1.0;"); | 107 fs->codeAppendf("float alpha = 1.0;"); |
106 if (gp.inCoverage()) { | 108 if (gp.inCoverage()) { |
107 args.fPB->addPassThroughAttribute(gp.inCoverage(), "alpha"); | 109 args.fPB->addPassThroughAttribute(gp.inCoverage(), "alpha"); |
108 } | 110 } |
109 fs->codeAppendf("%s = vec4(alpha);", args.fOutputCoverage); | 111 fs->codeAppendf("%s = vec4(alpha);", args.fOutputCoverage); |
110 } | 112 } |
111 | 113 |
112 static inline void GenKey(const GrProcessor& gp, const GrGLCaps&, GrProc
essorKeyBuilder* b) { | 114 static inline void GenKey(const GrGeometryProcessor& gp, |
| 115 const GrBatchTracker&, |
| 116 const GrGLCaps&, |
| 117 GrProcessorKeyBuilder* b) { |
113 const DefaultGeoProc& def = gp.cast<DefaultGeoProc>(); | 118 const DefaultGeoProc& def = gp.cast<DefaultGeoProc>(); |
114 b->add32(def.fFlags); | 119 b->add32(def.fFlags); |
115 } | 120 } |
116 | 121 |
117 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&)
SK_OVERRIDE {} | 122 virtual void setData(const GrGLProgramDataManager&, |
| 123 const GrGeometryProcessor&, |
| 124 const GrBatchTracker&) SK_OVERRIDE {} |
118 | 125 |
119 private: | 126 private: |
120 typedef GrGLGeometryProcessor INHERITED; | 127 typedef GrGLGeometryProcessor INHERITED; |
121 }; | 128 }; |
122 | 129 |
123 private: | 130 private: |
124 DefaultGeoProc(uint32_t gpTypeFlags) | 131 DefaultGeoProc(uint32_t gpTypeFlags) |
125 : fInPosition(NULL) | 132 : fInPosition(NULL) |
126 , fInColor(NULL) | 133 , fInColor(NULL) |
127 , fInLocalCoords(NULL) | 134 , fInLocalCoords(NULL) |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 if (random->nextBool()) { | 194 if (random->nextBool()) { |
188 flags |= GrDefaultGeoProcFactory::kLocalCoord_GPType; | 195 flags |= GrDefaultGeoProcFactory::kLocalCoord_GPType; |
189 } | 196 } |
190 | 197 |
191 return DefaultGeoProc::Create(flags); | 198 return DefaultGeoProc::Create(flags); |
192 } | 199 } |
193 | 200 |
194 const GrGeometryProcessor* GrDefaultGeoProcFactory::Create(uint32_t gpTypeFlags)
{ | 201 const GrGeometryProcessor* GrDefaultGeoProcFactory::Create(uint32_t gpTypeFlags)
{ |
195 return DefaultGeoProc::Create(gpTypeFlags); | 202 return DefaultGeoProc::Create(gpTypeFlags); |
196 } | 203 } |
OLD | NEW |