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

Side by Side Diff: src/gpu/gl/builders/GrGLProgramBuilder.h

Issue 746423007: Draft change to start pulling uniform color into GP (Closed) Base URL: https://skia.googlesource.com/skia.git@no_factories
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
OLDNEW
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 #ifndef GrGLProgramBuilder_DEFINED 8 #ifndef GrGLProgramBuilder_DEFINED
9 #define GrGLProgramBuilder_DEFINED 9 #define GrGLProgramBuilder_DEFINED
10 10
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 GrSLPrecision fsPrecision = kDefault_GrSLPrecision) SK_OVERRIDE; 235 GrSLPrecision fsPrecision = kDefault_GrSLPrecision) SK_OVERRIDE;
236 236
237 void addPassThroughAttribute(const GrGeometryProcessor::GrAttribute*, 237 void addPassThroughAttribute(const GrGeometryProcessor::GrAttribute*,
238 const char* output) SK_OVERRIDE; 238 const char* output) SK_OVERRIDE;
239 239
240 240
241 // Handles for program uniforms (other than per-effect uniforms) 241 // Handles for program uniforms (other than per-effect uniforms)
242 struct BuiltinUniformHandles { 242 struct BuiltinUniformHandles {
243 UniformHandle fViewMatrixUni; 243 UniformHandle fViewMatrixUni;
244 UniformHandle fRTAdjustmentUni; 244 UniformHandle fRTAdjustmentUni;
245 UniformHandle fColorUni;
246 UniformHandle fCoverageUni;
247 245
248 // We use the render target height to provide a y-down frag coord when s pecifying 246 // We use the render target height to provide a y-down frag coord when s pecifying
249 // origin_upper_left is not supported. 247 // origin_upper_left is not supported.
250 UniformHandle fRTHeightUni; 248 UniformHandle fRTHeightUni;
251 249
252 // Uniforms for computing texture coords to do the dst-copy lookup 250 // Uniforms for computing texture coords to do the dst-copy lookup
253 UniformHandle fDstCopyTopLeftUni; 251 UniformHandle fDstCopyTopLeftUni;
254 UniformHandle fDstCopyScaleUni; 252 UniformHandle fDstCopyScaleUni;
255 UniformHandle fDstCopySamplerUni; 253 UniformHandle fDstCopySamplerUni;
256 }; 254 };
257 255
258 protected: 256 protected:
259 typedef GrGLProgramDataManager::UniformInfo UniformInfo; 257 typedef GrGLProgramDataManager::UniformInfo UniformInfo;
260 typedef GrGLProgramDataManager::UniformInfoArray UniformInfoArray; 258 typedef GrGLProgramDataManager::UniformInfoArray UniformInfoArray;
261 259
262 static GrGLProgramBuilder* CreateProgramBuilder(const GrOptDrawState&, 260 static GrGLProgramBuilder* CreateProgramBuilder(const GrOptDrawState&,
263 bool hasGeometryProcessor, 261 bool hasGeometryProcessor,
264 GrGpuGL*); 262 GrGpuGL*);
265 263
266 GrGLProgramBuilder(GrGpuGL*, const GrOptDrawState&); 264 GrGLProgramBuilder(GrGpuGL*, const GrOptDrawState&);
267 265
268 const GrOptDrawState& optState() const { return fOptState; } 266 const GrOptDrawState& optState() const { return fOptState; }
269 const GrProgramDesc& desc() const { return fDesc; } 267 const GrProgramDesc& desc() const { return fDesc; }
270 const GrProgramDesc::KeyHeader& header() const { return fDesc.header(); } 268 const GrProgramDesc::KeyHeader& header() const { return fDesc.header(); }
271 269
272 // Generates a name for a variable. The generated string will be name prefix ed by the prefix 270 // Generates a name for a variable. The generated string will be name prefix ed by the prefix
273 // char (unless the prefix is '\0'). It also mangles the name to be stage-sp ecific if we're 271 // char (unless the prefix is '\0'). It also mangles the name to be stage-sp ecific if we're
274 // generating stage code. 272 // generating stage code.
275 void nameVariable(SkString* out, char prefix, const char* name); 273 void nameVariable(SkString* out, char prefix, const char* name);
276 void setupUniformColorAndCoverageIfNeeded(GrGLSLExpr4* inputColor, GrGLSLExp r1* inputCoverage);
277 // Generates a possibly mangled name for a stage variable and writes it to t he fragment shader. 274 // Generates a possibly mangled name for a stage variable and writes it to t he fragment shader.
278 // If GrGLSLExpr4 has a valid name then it will use that instead 275 // If GrGLSLExpr4 has a valid name then it will use that instead
279 void nameExpression(GrGLSLExpr4*, const char* baseName); 276 void nameExpression(GrGLSLExpr4*, const char* baseName);
280 void emitAndInstallProcs(GrGLSLExpr4* inputColor, 277 void emitAndInstallProcs(GrGLSLExpr4* inputColor,
281 GrGLSLExpr4* inputCoverage); 278 GrGLSLExpr4* inputCoverage);
282 void emitAndInstallFragProcs(int procOffset, int numProcs, GrGLSLExpr4* inOu t); 279 void emitAndInstallFragProcs(int procOffset, int numProcs, GrGLSLExpr4* inOu t);
283 void emitAndInstallProc(const GrPendingFragmentStage&, 280 void emitAndInstallProc(const GrPendingFragmentStage&,
284 int index, 281 int index,
285 const GrGLSLExpr4& input, 282 const GrGLSLExpr4& input,
286 GrGLSLExpr4* output); 283 GrGLSLExpr4* output);
287 284
288 void emitAndInstallProc(const GrGeometryProcessor&, 285 void emitAndInstallProc(const GrPrimitiveProcessor&,
289 GrGLSLExpr4* outputColor, 286 GrGLSLExpr4* outputColor,
290 GrGLSLExpr4* outputCoverage); 287 GrGLSLExpr4* outputCoverage);
291 288
292 // these emit functions help to keep the createAndEmitProcessors template ge neral 289 // these emit functions help to keep the createAndEmitProcessors template ge neral
293 void emitAndInstallProc(const GrPendingFragmentStage&, 290 void emitAndInstallProc(const GrPendingFragmentStage&,
294 const char* outColor, 291 const char* outColor,
295 const char* inColor); 292 const char* inColor);
296 void emitAndInstallProc(const GrGeometryProcessor&, 293 void emitAndInstallProc(const GrPrimitiveProcessor&,
297 const char* outColor, 294 const char* outColor,
298 const char* outCoverage); 295 const char* outCoverage);
299 void emitAndInstallXferProc(const GrXferProcessor&, 296 void emitAndInstallXferProc(const GrXferProcessor&,
300 const GrGLSLExpr4& colorIn, 297 const GrGLSLExpr4& colorIn,
301 const GrGLSLExpr4& coverageIn); 298 const GrGLSLExpr4& coverageIn);
302 299
303 void verify(const GrGeometryProcessor&); 300 void verify(const GrPrimitiveProcessor&);
304 void verify(const GrXferProcessor&); 301 void verify(const GrXferProcessor&);
305 void verify(const GrFragmentProcessor&); 302 void verify(const GrFragmentProcessor&);
306 void emitSamplers(const GrProcessor&, 303 void emitSamplers(const GrProcessor&,
307 GrGLProcessor::TextureSamplerArray* outSamplers, 304 GrGLProcessor::TextureSamplerArray* outSamplers,
308 GrGLInstalledProc*); 305 GrGLInstalledProc*);
309 306
310 // each specific program builder has a distinct transform and must override this function 307 // each specific program builder has a distinct transform and must override this function
311 virtual void emitTransforms(const GrPendingFragmentStage&, 308 virtual void emitTransforms(const GrPendingFragmentStage&,
312 GrGLProcessor::TransformedCoordsArray* outCoords , 309 GrGLProcessor::TransformedCoordsArray* outCoords ,
313 GrGLInstalledFragProc*); 310 GrGLInstalledFragProc*);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 SkAutoTDelete<GrGLFragmentProcessor> fGLProc; 437 SkAutoTDelete<GrGLFragmentProcessor> fGLProc;
441 SkSTArray<2, Transform, true> fTransforms; 438 SkSTArray<2, Transform, true> fTransforms;
442 }; 439 };
443 440
444 struct GrGLInstalledFragProcs : public SkRefCnt { 441 struct GrGLInstalledFragProcs : public SkRefCnt {
445 virtual ~GrGLInstalledFragProcs(); 442 virtual ~GrGLInstalledFragProcs();
446 SkSTArray<8, GrGLInstalledFragProc*, true> fProcs; 443 SkSTArray<8, GrGLInstalledFragProc*, true> fProcs;
447 }; 444 };
448 445
449 #endif 446 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/builders/GrGLNvprProgramBuilder.cpp ('k') | src/gpu/gl/builders/GrGLProgramBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698