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

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

Issue 1806983002: Update how we send draws to gpu backend to reduce state setting. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: nit Created 4 years, 9 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/GrGLVaryingHandler.cpp ('k') | src/gpu/gl/builders/GrGLProgramBuilder.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 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
11 #include "GrPipeline.h" 11 #include "GrPipeline.h"
12 #include "gl/GrGLProgramDataManager.h" 12 #include "gl/GrGLProgramDataManager.h"
13 #include "gl/GrGLUniformHandler.h" 13 #include "gl/GrGLUniformHandler.h"
14 #include "gl/GrGLVaryingHandler.h" 14 #include "gl/GrGLVaryingHandler.h"
15 #include "glsl/GrGLSLProgramBuilder.h" 15 #include "glsl/GrGLSLProgramBuilder.h"
16 #include "glsl/GrGLSLProgramDataManager.h" 16 #include "glsl/GrGLSLProgramDataManager.h"
17 17
18 class GrFragmentProcessor; 18 class GrFragmentProcessor;
19 class GrGLContextInfo; 19 class GrGLContextInfo;
20 class GrGLProgramDesc;
20 class GrGLSLShaderBuilder; 21 class GrGLSLShaderBuilder;
21 class GrGLSLCaps; 22 class GrGLSLCaps;
22 23
23 class GrGLProgramBuilder : public GrGLSLProgramBuilder { 24 class GrGLProgramBuilder : public GrGLSLProgramBuilder {
24 public: 25 public:
25 /** Generates a shader program. 26 /** Generates a shader program.
26 * 27 *
27 * The program implements what is specified in the stages given as input. 28 * The program implements what is specified in the stages given as input.
28 * After successful generation, the builder result objects are available 29 * After successful generation, the builder result objects are available
29 * to be used. 30 * to be used.
30 * @return true if generation was successful. 31 * @return true if generation was successful.
31 */ 32 */
32 static GrGLProgram* CreateProgram(const DrawArgs&, GrGLGpu*); 33 static GrGLProgram* CreateProgram(const GrPipeline&,
34 const GrPrimitiveProcessor&,
35 const GrGLProgramDesc&,
36 GrGLGpu*);
33 37
34 const GrCaps* caps() const override; 38 const GrCaps* caps() const override;
35 const GrGLSLCaps* glslCaps() const override; 39 const GrGLSLCaps* glslCaps() const override;
36 40
37 GrGLGpu* gpu() const { return fGpu; } 41 GrGLGpu* gpu() const { return fGpu; }
38 42
39 private: 43 private:
40 GrGLProgramBuilder(GrGLGpu*, const DrawArgs&); 44 GrGLProgramBuilder(GrGLGpu*, const GrPipeline&, const GrPrimitiveProcessor&,
45 const GrGLProgramDesc&);
41 46
42 bool compileAndAttachShaders(GrGLSLShaderBuilder& shader, 47 bool compileAndAttachShaders(GrGLSLShaderBuilder& shader,
43 GrGLuint programId, 48 GrGLuint programId,
44 GrGLenum type, 49 GrGLenum type,
45 SkTDArray<GrGLuint>* shaderIds); 50 SkTDArray<GrGLuint>* shaderIds);
46 GrGLProgram* finalize(); 51 GrGLProgram* finalize();
47 void bindProgramResourceLocations(GrGLuint programID); 52 void bindProgramResourceLocations(GrGLuint programID);
48 bool checkLinkStatus(GrGLuint programID); 53 bool checkLinkStatus(GrGLuint programID);
49 void resolveProgramResourceLocations(GrGLuint programID); 54 void resolveProgramResourceLocations(GrGLuint programID);
50 void cleanupProgram(GrGLuint programID, const SkTDArray<GrGLuint>& shaderIDs ); 55 void cleanupProgram(GrGLuint programID, const SkTDArray<GrGLuint>& shaderIDs );
51 void cleanupShaders(const SkTDArray<GrGLuint>& shaderIDs); 56 void cleanupShaders(const SkTDArray<GrGLuint>& shaderIDs);
52 57
53 // Subclasses create different programs 58 // Subclasses create different programs
54 GrGLProgram* createProgram(GrGLuint programID); 59 GrGLProgram* createProgram(GrGLuint programID);
55 60
56 GrGLSLUniformHandler* uniformHandler() override { return &fUniformHandler; } 61 GrGLSLUniformHandler* uniformHandler() override { return &fUniformHandler; }
57 const GrGLSLUniformHandler* uniformHandler() const override { return &fUnifo rmHandler; } 62 const GrGLSLUniformHandler* uniformHandler() const override { return &fUnifo rmHandler; }
58 GrGLSLVaryingHandler* varyingHandler() override { return &fVaryingHandler; } 63 GrGLSLVaryingHandler* varyingHandler() override { return &fVaryingHandler; }
59 64
60 65
61 GrGLGpu* fGpu; 66 GrGLGpu* fGpu;
62 GrGLVaryingHandler fVaryingHandler; 67 GrGLVaryingHandler fVaryingHandler;
63 GrGLUniformHandler fUniformHandler; 68 GrGLUniformHandler fUniformHandler;
64 69
65 typedef GrGLSLProgramBuilder INHERITED; 70 typedef GrGLSLProgramBuilder INHERITED;
66 }; 71 };
67 #endif 72 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLVaryingHandler.cpp ('k') | src/gpu/gl/builders/GrGLProgramBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698