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 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 Loading... |
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 Loading... |
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 |
OLD | NEW |