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

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: cleanup 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 class GrGLVarying {
74 public:
75 bool vsVarying() const { return kVertToFrag_Varying == fVarying ||
76 kVertToGeo_Varying == fVarying; }
77 bool fsVarying() const { return kVertToFrag_Varying == fVarying ||
78 kGeoToFrag_Varying == fVarying; }
79 const char* vsOut() const { return fVsOut; }
80 const char* gsIn() const { return fGsIn; }
81 const char* gsOut() const { return fGsOut; }
82 const char* fsIn() const { return fFsIn; }
83
84 protected:
85 enum Varying {
86 kVertToFrag_Varying,
87 kVertToGeo_Varying,
88 kGeoToFrag_Varying,
89 };
90
91 GrGLVarying(GrSLType type, Varying varying)
92 : fVarying(varying), fType(type), fVsOut(NULL), fGsIn(NULL), fGsOut(NULL ),
93 fFsIn(NULL) {}
94
95 Varying fVarying;
96
97 private:
98 GrSLType fType;
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(GrSLType type)
111 : GrGLVarying(type, kVertToFrag_Varying) {}
112 };
113
114 struct GrGLVertToGeo : public GrGLVarying {
115 GrGLVertToGeo(GrSLType type)
116 : GrGLVarying(type, kVertToGeo_Varying) {}
117 };
118
119 struct GrGLGeoToFrag : public GrGLVarying {
120 GrGLGeoToFrag(GrSLType type)
121 : GrGLVarying(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(const char* name,
76 const char* name, 128 GrGLVarying*,
77 const char** vsOutName = NULL,
78 const char** fsInName = NULL,
79 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar:: kDefault_Precision) = 0; 129 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar:: kDefault_Precision) = 0;
80 130
81 // TODO rename getFragmentBuilder 131 // TODO rename getFragmentBuilder
82 virtual GrGLGPFragmentBuilder* getFragmentShaderBuilder() = 0; 132 virtual GrGLGPFragmentBuilder* getFragmentShaderBuilder() = 0;
83 virtual GrGLVertexBuilder* getVertexShaderBuilder() = 0; 133 virtual GrGLVertexBuilder* getVertexShaderBuilder() = 0;
84 134
85 /* 135 /*
86 * *NOTE* NO MEMBERS ALLOWED, MULTIPLE INHERITANCE 136 * *NOTE* NO MEMBERS ALLOWED, MULTIPLE INHERITANCE
87 */ 137 */
88 }; 138 };
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 } 195 }
146 196
147 virtual const GrGLContextInfo& ctxInfo() const SK_OVERRIDE; 197 virtual const GrGLContextInfo& ctxInfo() const SK_OVERRIDE;
148 198
149 virtual GrGpuGL* gpu() const SK_OVERRIDE { return fGpu; } 199 virtual GrGpuGL* gpu() const SK_OVERRIDE { return fGpu; }
150 200
151 virtual GrGLFPFragmentBuilder* getFragmentShaderBuilder() SK_OVERRIDE { retu rn &fFS; } 201 virtual GrGLFPFragmentBuilder* getFragmentShaderBuilder() SK_OVERRIDE { retu rn &fFS; }
152 virtual GrGLVertexBuilder* getVertexShaderBuilder() SK_OVERRIDE { return &fV S; } 202 virtual GrGLVertexBuilder* getVertexShaderBuilder() SK_OVERRIDE { return &fV S; }
153 203
154 virtual void addVarying( 204 virtual void addVarying(
155 GrSLType type,
156 const char* name, 205 const char* name,
157 const char** vsOutName = NULL, 206 GrGLVarying*,
158 const char** fsInName = NULL,
159 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::kDefault_Precisi on) SK_OVERRIDE; 207 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::kDefault_Precisi on) SK_OVERRIDE;
160 208
161 // Handles for program uniforms (other than per-effect uniforms) 209 // Handles for program uniforms (other than per-effect uniforms)
162 struct BuiltinUniformHandles { 210 struct BuiltinUniformHandles {
163 UniformHandle fViewMatrixUni; 211 UniformHandle fViewMatrixUni;
164 UniformHandle fRTAdjustmentUni; 212 UniformHandle fRTAdjustmentUni;
165 UniformHandle fColorUni; 213 UniformHandle fColorUni;
166 UniformHandle fCoverageUni; 214 UniformHandle fCoverageUni;
167 215
168 // We use the render target height to provide a y-down frag coord when s pecifying 216 // 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; 389 SkSTArray<2, Transform, true> fTransforms;
342 bool fLocalCoordAttrib; 390 bool fLocalCoordAttrib;
343 }; 391 };
344 392
345 struct GrGLInstalledFragProcs : public SkRefCnt { 393 struct GrGLInstalledFragProcs : public SkRefCnt {
346 virtual ~GrGLInstalledFragProcs(); 394 virtual ~GrGLInstalledFragProcs();
347 SkSTArray<8, GrGLInstalledFragProc*, true> fProcs; 395 SkSTArray<8, GrGLInstalledFragProc*, true> fProcs;
348 }; 396 };
349 397
350 #endif 398 #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