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

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

Issue 674543004: OptState owns program descriptor (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: feedback inc Created 6 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 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 8
9 #ifndef GrGLProgram_DEFINED 9 #ifndef GrGLProgram_DEFINED
10 #define GrGLProgram_DEFINED 10 #define GrGLProgram_DEFINED
(...skipping 29 matching lines...) Expand all
40 40
41 typedef GrGLProgramBuilder::BuiltinUniformHandles BuiltinUniformHandles; 41 typedef GrGLProgramBuilder::BuiltinUniformHandles BuiltinUniformHandles;
42 42
43 virtual ~GrGLProgram(); 43 virtual ~GrGLProgram();
44 44
45 /** 45 /**
46 * Call to abandon GL objects owned by this program. 46 * Call to abandon GL objects owned by this program.
47 */ 47 */
48 void abandon(); 48 void abandon();
49 49
50 const GrGLProgramDesc& getDesc() { return fDesc; } 50 const GrProgramDesc& getDesc() { return fDesc; }
51 51
52 /** 52 /**
53 * Gets the GL program ID for this program. 53 * Gets the GL program ID for this program.
54 */ 54 */
55 GrGLuint programID() const { return fProgramID; } 55 GrGLuint programID() const { return fProgramID; }
56 56
57 /* 57 /*
58 * The base class always has a vertex shader, only the NVPR variants may omi t a vertex shader 58 * The base class always has a vertex shader, only the NVPR variants may omi t a vertex shader
59 */ 59 */
60 virtual bool hasVertexShader() const { return true; } 60 virtual bool hasVertexShader() const { return true; }
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 void setData(const GrOptDrawState&, 153 void setData(const GrOptDrawState&,
154 GrGpu::DrawType, 154 GrGpu::DrawType,
155 const GrDeviceCoordTexture* dstCopy, // can be NULL 155 const GrDeviceCoordTexture* dstCopy, // can be NULL
156 SharedGLState*); 156 SharedGLState*);
157 157
158 protected: 158 protected:
159 typedef GrGLProgramDataManager::UniformHandle UniformHandle; 159 typedef GrGLProgramDataManager::UniformHandle UniformHandle;
160 typedef GrGLProgramDataManager::UniformInfoArray UniformInfoArray; 160 typedef GrGLProgramDataManager::UniformInfoArray UniformInfoArray;
161 161
162 GrGLProgram(GrGpuGL*, 162 GrGLProgram(GrGpuGL*,
163 const GrGLProgramDesc&, 163 const GrProgramDesc&,
164 const BuiltinUniformHandles&, 164 const BuiltinUniformHandles&,
165 GrGLuint programID, 165 GrGLuint programID,
166 const UniformInfoArray&, 166 const UniformInfoArray&,
167 GrGLInstalledGeoProc* geometryProcessor, 167 GrGLInstalledGeoProc* geometryProcessor,
168 GrGLInstalledFragProcs* fragmentProcessors); 168 GrGLInstalledFragProcs* fragmentProcessors);
169 169
170 // Sets the texture units for samplers. 170 // Sets the texture units for samplers.
171 void initSamplerUniforms(); 171 void initSamplerUniforms();
172 void initSamplers(GrGLInstalledProc*, int* texUnitIdx); 172 void initSamplers(GrGLInstalledProc*, int* texUnitIdx);
173 173
(...skipping 25 matching lines...) Expand all
199 GrColor fColor; 199 GrColor fColor;
200 GrColor fCoverage; 200 GrColor fCoverage;
201 int fDstCopyTexUnit; 201 int fDstCopyTexUnit;
202 BuiltinUniformHandles fBuiltinUniformHandles; 202 BuiltinUniformHandles fBuiltinUniformHandles;
203 GrGLuint fProgramID; 203 GrGLuint fProgramID;
204 204
205 // the installed effects 205 // the installed effects
206 SkAutoTDelete<GrGLInstalledGeoProc> fGeometryProcessor; 206 SkAutoTDelete<GrGLInstalledGeoProc> fGeometryProcessor;
207 SkAutoTUnref<GrGLInstalledFragProcs> fFragmentProcessors; 207 SkAutoTUnref<GrGLInstalledFragProcs> fFragmentProcessors;
208 208
209 GrGLProgramDesc fDesc; 209 GrProgramDesc fDesc;
210 GrGpuGL* fGpu; 210 GrGpuGL* fGpu;
211 GrGLProgramDataManager fProgramDataManager; 211 GrGLProgramDataManager fProgramDataManager;
212 212
213 friend class GrGLProgramBuilder; 213 friend class GrGLProgramBuilder;
214 214
215 typedef SkRefCnt INHERITED; 215 typedef SkRefCnt INHERITED;
216 }; 216 };
217 217
218 /* 218 /*
219 * Below are slight specializations of the program object for the different type s of programs 219 * Below are slight specializations of the program object for the different type s of programs
220 * The default GrGL programs consist of at the very least a vertex and fragment shader. 220 * The default GrGL programs consist of at the very least a vertex and fragment shader.
221 * Legacy Nvpr only has a fragment shader, 1.3+ Nvpr ignores the vertex shader, but both require 221 * Legacy Nvpr only has a fragment shader, 1.3+ Nvpr ignores the vertex shader, but both require
222 * specialized methods for setting transform data. Both types of NVPR also requi re setting the 222 * specialized methods for setting transform data. Both types of NVPR also requi re setting the
223 * projection matrix through a special function call 223 * projection matrix through a special function call
224 */ 224 */
225 class GrGLNvprProgramBase : public GrGLProgram { 225 class GrGLNvprProgramBase : public GrGLProgram {
226 protected: 226 protected:
227 GrGLNvprProgramBase(GrGpuGL*, 227 GrGLNvprProgramBase(GrGpuGL*,
228 const GrGLProgramDesc&, 228 const GrProgramDesc&,
229 const BuiltinUniformHandles&, 229 const BuiltinUniformHandles&,
230 GrGLuint programID, 230 GrGLuint programID,
231 const UniformInfoArray&, 231 const UniformInfoArray&,
232 GrGLInstalledFragProcs* fragmentProcessors); 232 GrGLInstalledFragProcs* fragmentProcessors);
233 virtual void onSetMatrixAndRenderTargetHeight(GrGpu::DrawType, const GrOptDr awState&); 233 virtual void onSetMatrixAndRenderTargetHeight(GrGpu::DrawType, const GrOptDr awState&);
234 234
235 typedef GrGLProgram INHERITED; 235 typedef GrGLProgram INHERITED;
236 }; 236 };
237 237
238 class GrGLNvprProgram : public GrGLNvprProgramBase { 238 class GrGLNvprProgram : public GrGLNvprProgramBase {
239 public: 239 public:
240 virtual bool hasVertexShader() const SK_OVERRIDE { return true; } 240 virtual bool hasVertexShader() const SK_OVERRIDE { return true; }
241 241
242 private: 242 private:
243 typedef GrGLNvprProgramBuilder::SeparableVaryingInfo SeparableVaryingInfo; 243 typedef GrGLNvprProgramBuilder::SeparableVaryingInfo SeparableVaryingInfo;
244 typedef GrGLNvprProgramBuilder::SeparableVaryingInfoArray SeparableVaryingIn foArray; 244 typedef GrGLNvprProgramBuilder::SeparableVaryingInfoArray SeparableVaryingIn foArray;
245 GrGLNvprProgram(GrGpuGL*, 245 GrGLNvprProgram(GrGpuGL*,
246 const GrGLProgramDesc&, 246 const GrProgramDesc&,
247 const BuiltinUniformHandles&, 247 const BuiltinUniformHandles&,
248 GrGLuint programID, 248 GrGLuint programID,
249 const UniformInfoArray&, 249 const UniformInfoArray&,
250 GrGLInstalledFragProcs* fragmentProcessors, 250 GrGLInstalledFragProcs* fragmentProcessors,
251 const SeparableVaryingInfoArray& separableVaryings); 251 const SeparableVaryingInfoArray& separableVaryings);
252 virtual void didSetData(GrGpu::DrawType) SK_OVERRIDE; 252 virtual void didSetData(GrGpu::DrawType) SK_OVERRIDE;
253 virtual void setTransformData(const GrFragmentStage&, GrGLInstalledFragProc* ) SK_OVERRIDE; 253 virtual void setTransformData(const GrFragmentStage&, GrGLInstalledFragProc* ) SK_OVERRIDE;
254 254
255 struct Varying { 255 struct Varying {
256 GrGLint fLocation; 256 GrGLint fLocation;
257 SkDEBUGCODE( 257 SkDEBUGCODE(
258 GrSLType fType; 258 GrSLType fType;
259 ); 259 );
260 }; 260 };
261 SkTArray<Varying, true> fVaryings; 261 SkTArray<Varying, true> fVaryings;
262 262
263 friend class GrGLNvprProgramBuilder; 263 friend class GrGLNvprProgramBuilder;
264 264
265 typedef GrGLNvprProgramBase INHERITED; 265 typedef GrGLNvprProgramBase INHERITED;
266 }; 266 };
267 267
268 class GrGLLegacyNvprProgram : public GrGLNvprProgramBase { 268 class GrGLLegacyNvprProgram : public GrGLNvprProgramBase {
269 public: 269 public:
270 virtual bool hasVertexShader() const SK_OVERRIDE { return false; } 270 virtual bool hasVertexShader() const SK_OVERRIDE { return false; }
271 271
272 private: 272 private:
273 GrGLLegacyNvprProgram(GrGpuGL* gpu, 273 GrGLLegacyNvprProgram(GrGpuGL* gpu,
274 const GrGLProgramDesc& desc, 274 const GrProgramDesc& desc,
275 const BuiltinUniformHandles&, 275 const BuiltinUniformHandles&,
276 GrGLuint programID, 276 GrGLuint programID,
277 const UniformInfoArray&, 277 const UniformInfoArray&,
278 GrGLInstalledFragProcs* fragmentProcessors, 278 GrGLInstalledFragProcs* fragmentProcessors,
279 int texCoordSetCnt); 279 int texCoordSetCnt);
280 virtual void didSetData(GrGpu::DrawType) SK_OVERRIDE; 280 virtual void didSetData(GrGpu::DrawType) SK_OVERRIDE;
281 virtual void setTransformData(const GrFragmentStage&, GrGLInstalledFragProc* ) SK_OVERRIDE; 281 virtual void setTransformData(const GrFragmentStage&, GrGLInstalledFragProc* ) SK_OVERRIDE;
282 282
283 int fTexCoordSetCnt; 283 int fTexCoordSetCnt;
284 284
285 friend class GrGLLegacyNvprProgramBuilder; 285 friend class GrGLLegacyNvprProgramBuilder;
286 286
287 typedef GrGLNvprProgramBase INHERITED; 287 typedef GrGLNvprProgramBase INHERITED;
288 }; 288 };
289 289
290 #endif 290 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698