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

Side by Side Diff: src/gpu/gl/GrGLPrimitiveProcessor.h

Issue 920863002: A simple change to move a bunch of stuff out of Gr*Geometry.h (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: clang fix Created 5 years, 10 months 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/gl/GrGLPathProcessor.cpp ('k') | src/gpu/gl/GrGLPrimitiveProcessor.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 #ifndef GrGLGeometryProcessor_DEFINED 8 #ifndef GrGLPrimitiveProcessor_DEFINED
9 #define GrGLGeometryProcessor_DEFINED 9 #define GrGLPrimitiveProcessor_DEFINED
10 10
11 #include "GrPrimitiveProcessor.h"
11 #include "GrGLProcessor.h" 12 #include "GrGLProcessor.h"
12 13
13 class GrBatchTracker; 14 class GrBatchTracker;
14 class GrFragmentProcessor; 15 class GrPrimitiveProcessor;
15 class GrGLGPBuilder; 16 class GrGLGPBuilder;
16 17
17 class GrGLPrimitiveProcessor { 18 class GrGLPrimitiveProcessor {
18 public: 19 public:
19 GrGLPrimitiveProcessor() : fViewMatrixName(NULL) { fViewMatrix = SkMatrix::I nvalidMatrix(); } 20 GrGLPrimitiveProcessor() : fViewMatrixName(NULL) { fViewMatrix = SkMatrix::I nvalidMatrix(); }
20 virtual ~GrGLPrimitiveProcessor() {} 21 virtual ~GrGLPrimitiveProcessor() {}
21 22
22 typedef GrGLProgramDataManager::UniformHandle UniformHandle; 23 typedef GrGLProgramDataManager::UniformHandle UniformHandle;
23 typedef GrGLProcessor::TextureSamplerArray TextureSamplerArray; 24 typedef GrGLProcessor::TextureSamplerArray TextureSamplerArray;
24 25
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 75
75 protected: 76 protected:
76 /** a helper which can setup vertex, constant, or uniform color depending on inputType. 77 /** a helper which can setup vertex, constant, or uniform color depending on inputType.
77 * This function will only do the minimum required to emit the correct shad er code. If 78 * This function will only do the minimum required to emit the correct shad er code. If
78 * inputType == attribute, then colorAttr must not be NULL. Likewise, if i nputType == Uniform 79 * inputType == attribute, then colorAttr must not be NULL. Likewise, if i nputType == Uniform
79 * then colorUniform must not be NULL. 80 * then colorUniform must not be NULL.
80 */ 81 */
81 void setupColorPassThrough(GrGLGPBuilder* pb, 82 void setupColorPassThrough(GrGLGPBuilder* pb,
82 GrGPInput inputType, 83 GrGPInput inputType,
83 const char* inputName, 84 const char* inputName,
84 const GrGeometryProcessor::Attribute* colorAttr, 85 const GrPrimitiveProcessor::Attribute* colorAttr,
85 UniformHandle* colorUniform); 86 UniformHandle* colorUniform);
86 87
87 const char* uViewM() const { return fViewMatrixName; } 88 const char* uViewM() const { return fViewMatrixName; }
88 89
89 /** a helper function to setup the uniform handle for the uniform view matri x */ 90 /** a helper function to setup the uniform handle for the uniform view matri x */
90 void addUniformViewMatrix(GrGLGPBuilder*); 91 void addUniformViewMatrix(GrGLGPBuilder*);
91 92
92 93
93 /** a helper function to upload a uniform viewmatrix. 94 /** a helper function to upload a uniform viewmatrix.
94 * TODO we can remove this function when we have deferred geometry in place 95 * TODO we can remove this function when we have deferred geometry in place
(...skipping 24 matching lines...) Expand all
119 }; 120 };
120 121
121 SkSTArray<8, SkSTArray<2, Transform, true> > fInstalledTransforms; 122 SkSTArray<8, SkSTArray<2, Transform, true> > fInstalledTransforms;
122 123
123 private: 124 private:
124 UniformHandle fViewMatrixUniform; 125 UniformHandle fViewMatrixUniform;
125 SkMatrix fViewMatrix; 126 SkMatrix fViewMatrix;
126 const char* fViewMatrixName; 127 const char* fViewMatrixName;
127 }; 128 };
128 129
129 class GrGLPathRendering;
130 class GrGLVertexBuilder;
131 /**
132 * If a GL effect needs a GrGLFullShaderBuilder* object to emit vertex code, the n it must inherit
133 * from this class. Since paths don't have vertices, this class is only meant to be used internally
134 * by skia, for special cases.
135 */
136 class GrGLGeometryProcessor : public GrGLPrimitiveProcessor {
137 public:
138 /* Any general emit code goes in the base class emitCode. Subclasses overri de onEmitCode */
139 void emitCode(EmitArgs&) SK_OVERRIDE;
140
141 void setTransformData(const GrPrimitiveProcessor&,
142 const GrGLProgramDataManager&,
143 int index,
144 const SkTArray<const GrCoordTransform*, true>& transfo rms);
145
146 protected:
147 // Many GrGeometryProcessors do not need explicit local coords
148 void emitTransforms(GrGLGPBuilder* gp,
149 const GrShaderVar& posVar,
150 const SkMatrix& localMatrix,
151 const TransformsIn& tin,
152 TransformsOut* tout) {
153 this->emitTransforms(gp, posVar, posVar.c_str(), localMatrix, tin, tout) ;
154 }
155
156 void emitTransforms(GrGLGPBuilder*,
157 const GrShaderVar& posVar,
158 const char* localCoords,
159 const SkMatrix& localMatrix,
160 const TransformsIn&,
161 TransformsOut*);
162
163 struct GrGPArgs {
164 // The variable used by a GP to store its position. It can be
165 // either a vec2 or a vec3 depending on the presence of perspective.
166 GrShaderVar fPositionVar;
167 };
168
169 // Create the correct type of position variable given the CTM
170 static void SetupPosition(GrGLVertexBuilder* vsBuilder,
171 GrGPArgs* gpArgs,
172 const char* posName,
173 const SkMatrix& mat,
174 const char* matName);
175
176 static uint32_t ComputePosKey(const SkMatrix& mat) {
177 if (mat.isIdentity()) {
178 return 0x0;
179 } else if (!mat.hasPerspective()) {
180 return 0x01;
181 } else {
182 return 0x02;
183 }
184 }
185
186 private:
187 virtual void onEmitCode(EmitArgs&, GrGPArgs*) = 0;
188
189 typedef GrGLPrimitiveProcessor INHERITED;
190 };
191
192 class GrGLGpu;
193
194 class GrGLPathProcessor : public GrGLPrimitiveProcessor {
195 public:
196 GrGLPathProcessor(const GrPathProcessor&, const GrBatchTracker&);
197
198 static void GenKey(const GrPathProcessor&,
199 const GrBatchTracker& bt,
200 const GrGLCaps&,
201 GrProcessorKeyBuilder* b);
202
203 void emitCode(EmitArgs&) SK_OVERRIDE;
204
205 virtual void emitTransforms(GrGLGPBuilder*, const TransformsIn&, TransformsO ut*) = 0;
206
207 virtual void resolveSeparableVaryings(GrGLGpu* gpu, GrGLuint programId) {}
208
209 void setData(const GrGLProgramDataManager&,
210 const GrPrimitiveProcessor&,
211 const GrBatchTracker&) SK_OVERRIDE;
212
213 virtual void setTransformData(const GrPrimitiveProcessor&,
214 int index,
215 const SkTArray<const GrCoordTransform*, true>& transforms,
216 GrGLPathRendering*,
217 GrGLuint programID) = 0;
218
219 virtual void didSetData(GrGLPathRendering*) {}
220
221 private:
222 UniformHandle fColorUniform;
223 GrColor fColor;
224
225 typedef GrGLPrimitiveProcessor INHERITED;
226 };
227
228 #endif 130 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLPathProcessor.cpp ('k') | src/gpu/gl/GrGLPrimitiveProcessor.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698