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