| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 | 8 |
| 9 #ifndef GrGLProgram_DEFINED | 9 #ifndef GrGLProgram_DEFINED |
| 10 #define GrGLProgram_DEFINED | 10 #define GrGLProgram_DEFINED |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 // secondary source is output and what value it holds. | 158 // secondary source is output and what value it holds. |
| 159 enum DualSrcOutput { | 159 enum DualSrcOutput { |
| 160 kNone_DualSrcOutput, | 160 kNone_DualSrcOutput, |
| 161 kCoverage_DualSrcOutput, | 161 kCoverage_DualSrcOutput, |
| 162 kCoverageISA_DualSrcOutput, | 162 kCoverageISA_DualSrcOutput, |
| 163 kCoverageISC_DualSrcOutput, | 163 kCoverageISC_DualSrcOutput, |
| 164 | 164 |
| 165 kDualSrcOutputCnt | 165 kDualSrcOutputCnt |
| 166 }; | 166 }; |
| 167 | 167 |
| 168 // TODO: remove these two members when edge-aa can be rewritten as a GrE
ffect. | |
| 169 GrDrawState::VertexEdgeType fVertexEdgeType; | |
| 170 // should the FS discard if the edge-aa coverage is zero (to avoid stenc
il manipulation) | 168 // should the FS discard if the edge-aa coverage is zero (to avoid stenc
il manipulation) |
| 171 bool fDiscardIfOutsideEdge; | 169 bool fDiscardIfOutsideEdge; |
| 172 | 170 |
| 173 // stripped of bits that don't affect program generation | 171 // stripped of bits that don't affect program generation |
| 174 GrAttribBindings fAttribBindings; | 172 GrAttribBindings fAttribBindings; |
| 175 | 173 |
| 176 /** Non-zero if this stage has an effect */ | 174 /** Non-zero if this stage has an effect */ |
| 177 GrGLEffect::EffectKey fEffectKeys[GrDrawState::kNumStages]; | 175 GrGLEffect::EffectKey fEffectKeys[GrDrawState::kNumStages]; |
| 178 | 176 |
| 179 // To enable experimental geometry shader code (not for use in | 177 // To enable experimental geometry shader code (not for use in |
| 180 // production) | 178 // production) |
| 181 #if GR_GL_EXPERIMENTAL_GS | 179 #if GR_GL_EXPERIMENTAL_GS |
| 182 bool fExperimentalGS; | 180 bool fExperimentalGS; |
| 183 #endif | 181 #endif |
| 184 uint8_t fColorInput; // casts to enum Col
orInput | 182 uint8_t fColorInput; // casts to enum Col
orInput |
| 185 uint8_t fCoverageInput; // casts to enum Col
orInput | 183 uint8_t fCoverageInput; // casts to enum Col
orInput |
| 186 uint8_t fDualSrcOutput; // casts to enum Dua
lSrcOutput | 184 uint8_t fDualSrcOutput; // casts to enum Dua
lSrcOutput |
| 187 int8_t fFirstCoverageStage; | 185 int8_t fFirstCoverageStage; |
| 188 SkBool8 fEmitsPointSize; | 186 SkBool8 fEmitsPointSize; |
| 189 uint8_t fColorFilterXfermode; // casts to enum SkX
fermode::Mode | 187 uint8_t fColorFilterXfermode; // casts to enum SkX
fermode::Mode |
| 190 | 188 |
| 191 int8_t fPositionAttributeIndex; | 189 int8_t fPositionAttributeIndex; |
| 192 int8_t fColorAttributeIndex; | 190 int8_t fColorAttributeIndex; |
| 193 int8_t fCoverageAttributeIndex; | 191 int8_t fCoverageAttributeIndex; |
| 194 int8_t fEdgeAttributeIndex; | |
| 195 int8_t fLocalCoordsAttributeIndex; | 192 int8_t fLocalCoordsAttributeIndex; |
| 196 | 193 |
| 197 friend class GrGLProgram; | 194 friend class GrGLProgram; |
| 198 }; | 195 }; |
| 199 | 196 |
| 200 // Layout information for OpenGL vertex attributes | 197 // Layout information for OpenGL vertex attributes |
| 201 struct AttribLayout { | 198 struct AttribLayout { |
| 202 GrGLint fCount; | 199 GrGLint fCount; |
| 203 GrGLenum fType; | 200 GrGLenum fType; |
| 204 GrGLboolean fNormalized; | 201 GrGLboolean fNormalized; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 218 bool genProgram(const GrEffectStage* stages[]); | 215 bool genProgram(const GrEffectStage* stages[]); |
| 219 | 216 |
| 220 void genInputColor(GrGLShaderBuilder* builder, SkString* inColor); | 217 void genInputColor(GrGLShaderBuilder* builder, SkString* inColor); |
| 221 | 218 |
| 222 void genGeometryShader(GrGLShaderBuilder* segments) const; | 219 void genGeometryShader(GrGLShaderBuilder* segments) const; |
| 223 | 220 |
| 224 typedef GrGLUniformManager::UniformHandle UniformHandle; | 221 typedef GrGLUniformManager::UniformHandle UniformHandle; |
| 225 | 222 |
| 226 void genUniformCoverage(GrGLShaderBuilder* segments, SkString* inOutCoverage
); | 223 void genUniformCoverage(GrGLShaderBuilder* segments, SkString* inOutCoverage
); |
| 227 | 224 |
| 228 // generates code to compute coverage based on edge AA. Returns true if edge
coverage was | |
| 229 // inserted in which case coverageVar will be updated to refer to a scalar.
Otherwise, | |
| 230 // coverageVar is set to an empty string. | |
| 231 bool genEdgeCoverage(SkString* coverageVar, GrGLShaderBuilder* builder) cons
t; | |
| 232 | |
| 233 // Creates a GL program ID, binds shader attributes to GL vertex attrs, and
links the program | 225 // Creates a GL program ID, binds shader attributes to GL vertex attrs, and
links the program |
| 234 bool bindOutputsAttribsAndLinkProgram(const GrGLShaderBuilder& builder, | 226 bool bindOutputsAttribsAndLinkProgram(const GrGLShaderBuilder& builder, |
| 235 bool bindColorOut, | 227 bool bindColorOut, |
| 236 bool bindDualSrcOut); | 228 bool bindDualSrcOut); |
| 237 | 229 |
| 238 // Sets the texture units for samplers | 230 // Sets the texture units for samplers |
| 239 void initSamplerUniforms(); | 231 void initSamplerUniforms(); |
| 240 | 232 |
| 241 bool compileShaders(const GrGLShaderBuilder& builder); | 233 bool compileShaders(const GrGLShaderBuilder& builder); |
| 242 | 234 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 Desc fDesc; | 284 Desc fDesc; |
| 293 const GrGLContext& fContext; | 285 const GrGLContext& fContext; |
| 294 | 286 |
| 295 GrGLUniformManager fUniformManager; | 287 GrGLUniformManager fUniformManager; |
| 296 UniformHandles fUniformHandles; | 288 UniformHandles fUniformHandles; |
| 297 | 289 |
| 298 typedef GrRefCnt INHERITED; | 290 typedef GrRefCnt INHERITED; |
| 299 }; | 291 }; |
| 300 | 292 |
| 301 #endif | 293 #endif |
| OLD | NEW |