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

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

Issue 671023002: Added varying struct (Closed) Base URL: https://skia.googlesource.com/skia.git@gp_emit_struct
Patch Set: feedback incorporated 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 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 62
63 virtual const GrGLContextInfo& ctxInfo() const = 0; 63 virtual const GrGLContextInfo& ctxInfo() const = 0;
64 64
65 virtual GrGpuGL* gpu() const = 0; 65 virtual GrGpuGL* gpu() const = 0;
66 66
67 /* 67 /*
68 * *NOTE* NO MEMBERS ALLOWED, MULTIPLE INHERITANCE 68 * *NOTE* NO MEMBERS ALLOWED, MULTIPLE INHERITANCE
69 */ 69 */
70 }; 70 };
71 71
72 // TODO move this into GrGLGPBuilder and move them both out of this file
73 struct GrGLVarying {
74 bool vsVarying() const { return kVertToFrag_Varying == fVarying ||
75 kVertToGeo_Varying == fVarying; }
76 bool fsVarying() const { return kVertToFrag_Varying == fVarying ||
77 kGeoToFrag_Varying == fVarying; }
78 const char* vsOut() const { return fVsOut; }
79 const char* gsIn() const { return fGsIn; }
80 const char* gsOut() const { return fGsOut; }
81 const char* fsIn() const { return fFsIn; }
82
83 protected:
84 enum Varying {
85 kVertToFrag_Varying,
86 kVertToGeo_Varying,
87 kGeoToFrag_Varying,
88 };
89
90 GrGLVarying(const char* name, GrSLType type, Varying varying)
91 : fVarying(varying), fType(type), fName(name), fVsOut(NULL), fGsIn(NULL) , fGsOut(NULL),
92 fFsIn(NULL) {}
93
94 Varying fVarying;
95
96 private:
97 GrSLType fType;
98 const char* fName;
99 const char* fVsOut;
100 const char* fGsIn;
101 const char* fGsOut;
102 const char* fFsIn;
103
104 friend class GrGLVertexBuilder;
105 friend class GrGLGeometryBuilder;
106 friend class GrGLFragmentShaderBuilder;
107 };
108
109 struct GrGLVertToFrag : public GrGLVarying {
110 GrGLVertToFrag(const char* name, GrSLType type)
111 : GrGLVarying(name, type, kVertToFrag_Varying) {}
112 };
113
114 struct GrGLVertToGeo : public GrGLVarying {
115 GrGLVertToGeo(const char* name, GrSLType type)
116 : GrGLVarying(name, type, kVertToGeo_Varying) {}
117 };
118
119 struct GrGLGeoToFrag : public GrGLVarying {
120 GrGLGeoToFrag(const char* name, GrSLType type)
121 : GrGLVarying(name, type, kGeoToFrag_Varying) {}
122 };
123
72 /* a specialization of the above for GPs. Lets the user add uniforms, varyings, and VS / FS code */ 124 /* a specialization of the above for GPs. Lets the user add uniforms, varyings, and VS / FS code */
73 class GrGLGPBuilder : public virtual GrGLUniformBuilder { 125 class GrGLGPBuilder : public virtual GrGLUniformBuilder {
74 public: 126 public:
75 virtual void addVarying(GrSLType type, 127 virtual void addVarying(GrGLVarying*,
76 const char* name,
77 const char** vsOutName = NULL,
78 const char** fsInName = NULL,
79 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar:: kDefault_Precision) = 0; 128 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar:: kDefault_Precision) = 0;
80 129
81 // TODO rename getFragmentBuilder 130 // TODO rename getFragmentBuilder
82 virtual GrGLGPFragmentBuilder* getFragmentShaderBuilder() = 0; 131 virtual GrGLGPFragmentBuilder* getFragmentShaderBuilder() = 0;
83 virtual GrGLVertexBuilder* getVertexShaderBuilder() = 0; 132 virtual GrGLVertexBuilder* getVertexShaderBuilder() = 0;
84 133
85 /* 134 /*
86 * *NOTE* NO MEMBERS ALLOWED, MULTIPLE INHERITANCE 135 * *NOTE* NO MEMBERS ALLOWED, MULTIPLE INHERITANCE
87 */ 136 */
88 }; 137 };
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 } 194 }
146 195
147 virtual const GrGLContextInfo& ctxInfo() const SK_OVERRIDE; 196 virtual const GrGLContextInfo& ctxInfo() const SK_OVERRIDE;
148 197
149 virtual GrGpuGL* gpu() const SK_OVERRIDE { return fGpu; } 198 virtual GrGpuGL* gpu() const SK_OVERRIDE { return fGpu; }
150 199
151 virtual GrGLFPFragmentBuilder* getFragmentShaderBuilder() SK_OVERRIDE { retu rn &fFS; } 200 virtual GrGLFPFragmentBuilder* getFragmentShaderBuilder() SK_OVERRIDE { retu rn &fFS; }
152 virtual GrGLVertexBuilder* getVertexShaderBuilder() SK_OVERRIDE { return &fV S; } 201 virtual GrGLVertexBuilder* getVertexShaderBuilder() SK_OVERRIDE { return &fV S; }
153 202
154 virtual void addVarying( 203 virtual void addVarying(
155 GrSLType type, 204 GrGLVarying*,
156 const char* name,
157 const char** vsOutName = NULL,
158 const char** fsInName = NULL,
159 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::kDefault_Precisi on) SK_OVERRIDE; 205 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::kDefault_Precisi on) SK_OVERRIDE;
160 206
161 // Handles for program uniforms (other than per-effect uniforms) 207 // Handles for program uniforms (other than per-effect uniforms)
162 struct BuiltinUniformHandles { 208 struct BuiltinUniformHandles {
163 UniformHandle fViewMatrixUni; 209 UniformHandle fViewMatrixUni;
164 UniformHandle fRTAdjustmentUni; 210 UniformHandle fRTAdjustmentUni;
165 UniformHandle fColorUni; 211 UniformHandle fColorUni;
166 UniformHandle fCoverageUni; 212 UniformHandle fCoverageUni;
167 213
168 // We use the render target height to provide a y-down frag coord when s pecifying 214 // We use the render target height to provide a y-down frag coord when s pecifying
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 SkSTArray<2, Transform, true> fTransforms; 387 SkSTArray<2, Transform, true> fTransforms;
342 bool fLocalCoordAttrib; 388 bool fLocalCoordAttrib;
343 }; 389 };
344 390
345 struct GrGLInstalledFragProcs : public SkRefCnt { 391 struct GrGLInstalledFragProcs : public SkRefCnt {
346 virtual ~GrGLInstalledFragProcs(); 392 virtual ~GrGLInstalledFragProcs();
347 SkSTArray<8, GrGLInstalledFragProc*, true> fProcs; 393 SkSTArray<8, GrGLInstalledFragProc*, true> fProcs;
348 }; 394 };
349 395
350 #endif 396 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698