OLD | NEW |
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 Loading... |
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 | |
124 /* a specialization of the above for GPs. Lets the user add uniforms, varyings,
and VS / FS code */ | 72 /* a specialization of the above for GPs. Lets the user add uniforms, varyings,
and VS / FS code */ |
125 class GrGLGPBuilder : public virtual GrGLUniformBuilder { | 73 class GrGLGPBuilder : public virtual GrGLUniformBuilder { |
126 public: | 74 public: |
127 virtual void addVarying(const char* name, | 75 virtual void addVarying(GrSLType type, |
128 GrGLVarying*, | 76 const char* name, |
| 77 const char** vsOutName = NULL, |
| 78 const char** fsInName = NULL, |
129 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::
kDefault_Precision) = 0; | 79 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::
kDefault_Precision) = 0; |
130 | 80 |
131 // TODO rename getFragmentBuilder | 81 // TODO rename getFragmentBuilder |
132 virtual GrGLGPFragmentBuilder* getFragmentShaderBuilder() = 0; | 82 virtual GrGLGPFragmentBuilder* getFragmentShaderBuilder() = 0; |
133 virtual GrGLVertexBuilder* getVertexShaderBuilder() = 0; | 83 virtual GrGLVertexBuilder* getVertexShaderBuilder() = 0; |
134 | 84 |
135 /* | 85 /* |
136 * *NOTE* NO MEMBERS ALLOWED, MULTIPLE INHERITANCE | 86 * *NOTE* NO MEMBERS ALLOWED, MULTIPLE INHERITANCE |
137 */ | 87 */ |
138 }; | 88 }; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 } | 145 } |
196 | 146 |
197 virtual const GrGLContextInfo& ctxInfo() const SK_OVERRIDE; | 147 virtual const GrGLContextInfo& ctxInfo() const SK_OVERRIDE; |
198 | 148 |
199 virtual GrGpuGL* gpu() const SK_OVERRIDE { return fGpu; } | 149 virtual GrGpuGL* gpu() const SK_OVERRIDE { return fGpu; } |
200 | 150 |
201 virtual GrGLFPFragmentBuilder* getFragmentShaderBuilder() SK_OVERRIDE { retu
rn &fFS; } | 151 virtual GrGLFPFragmentBuilder* getFragmentShaderBuilder() SK_OVERRIDE { retu
rn &fFS; } |
202 virtual GrGLVertexBuilder* getVertexShaderBuilder() SK_OVERRIDE { return &fV
S; } | 152 virtual GrGLVertexBuilder* getVertexShaderBuilder() SK_OVERRIDE { return &fV
S; } |
203 | 153 |
204 virtual void addVarying( | 154 virtual void addVarying( |
| 155 GrSLType type, |
205 const char* name, | 156 const char* name, |
206 GrGLVarying*, | 157 const char** vsOutName = NULL, |
| 158 const char** fsInName = NULL, |
207 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::kDefault_Precisi
on) SK_OVERRIDE; | 159 GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::kDefault_Precisi
on) SK_OVERRIDE; |
208 | 160 |
209 // Handles for program uniforms (other than per-effect uniforms) | 161 // Handles for program uniforms (other than per-effect uniforms) |
210 struct BuiltinUniformHandles { | 162 struct BuiltinUniformHandles { |
211 UniformHandle fViewMatrixUni; | 163 UniformHandle fViewMatrixUni; |
212 UniformHandle fRTAdjustmentUni; | 164 UniformHandle fRTAdjustmentUni; |
213 UniformHandle fColorUni; | 165 UniformHandle fColorUni; |
214 UniformHandle fCoverageUni; | 166 UniformHandle fCoverageUni; |
215 | 167 |
216 // We use the render target height to provide a y-down frag coord when s
pecifying | 168 // 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 Loading... |
389 SkSTArray<2, Transform, true> fTransforms; | 341 SkSTArray<2, Transform, true> fTransforms; |
390 bool fLocalCoordAttrib; | 342 bool fLocalCoordAttrib; |
391 }; | 343 }; |
392 | 344 |
393 struct GrGLInstalledFragProcs : public SkRefCnt { | 345 struct GrGLInstalledFragProcs : public SkRefCnt { |
394 virtual ~GrGLInstalledFragProcs(); | 346 virtual ~GrGLInstalledFragProcs(); |
395 SkSTArray<8, GrGLInstalledFragProc*, true> fProcs; | 347 SkSTArray<8, GrGLInstalledFragProc*, true> fProcs; |
396 }; | 348 }; |
397 | 349 |
398 #endif | 350 #endif |
OLD | NEW |