| 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 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 } | 95 } |
| 96 }; | 96 }; |
| 97 | 97 |
| 98 /** | 98 /** |
| 99 * This function uploads uniforms and calls each GrGLEffect's setData. It is
called before a | 99 * This function uploads uniforms and calls each GrGLEffect's setData. It is
called before a |
| 100 * draw occurs using the program after the program has already been bound. I
t also uses the | 100 * draw occurs using the program after the program has already been bound. I
t also uses the |
| 101 * GrGpuGL object to bind the textures required by the GrGLEffects. | 101 * GrGpuGL object to bind the textures required by the GrGLEffects. |
| 102 * | 102 * |
| 103 * The color and coverage params override the GrDrawState's getColor() and g
etCoverage() values. | 103 * The color and coverage params override the GrDrawState's getColor() and g
etCoverage() values. |
| 104 */ | 104 */ |
| 105 void setData(GrGpuGL*, GrColor color, GrColor coverage, SharedGLState*); | 105 void setData(GrGpuGL*, |
| 106 GrColor color, |
| 107 GrColor coverage, |
| 108 const GrDeviceCoordTexture* dstCopy, // can be NULL |
| 109 SharedGLState*); |
| 106 | 110 |
| 107 private: | 111 private: |
| 108 GrGLProgram(const GrGLContext& gl, | 112 GrGLProgram(const GrGLContext& gl, |
| 109 const GrGLProgramDesc& desc, | 113 const GrGLProgramDesc& desc, |
| 110 const GrEffectStage* stages[]); | 114 const GrEffectStage* stages[]); |
| 111 | 115 |
| 112 bool succeeded() const { return 0 != fProgramID; } | 116 bool succeeded() const { return 0 != fProgramID; } |
| 113 | 117 |
| 114 /** | 118 /** |
| 115 * This is the heavy initialization routine for building a GLProgram. | 119 * This is the heavy initialization routine for building a GLProgram. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 // Helper for setData() that sets the view matrix and loads the render targe
t height uniform | 151 // Helper for setData() that sets the view matrix and loads the render targe
t height uniform |
| 148 void setMatrixAndRenderTargetHeight(const GrDrawState&); | 152 void setMatrixAndRenderTargetHeight(const GrDrawState&); |
| 149 | 153 |
| 150 typedef SkSTArray<4, UniformHandle, true> SamplerUniSArray; | 154 typedef SkSTArray<4, UniformHandle, true> SamplerUniSArray; |
| 151 | 155 |
| 152 struct UniformHandles { | 156 struct UniformHandles { |
| 153 UniformHandle fViewMatrixUni; | 157 UniformHandle fViewMatrixUni; |
| 154 UniformHandle fColorUni; | 158 UniformHandle fColorUni; |
| 155 UniformHandle fCoverageUni; | 159 UniformHandle fCoverageUni; |
| 156 UniformHandle fColorFilterUni; | 160 UniformHandle fColorFilterUni; |
| 161 |
| 157 // We use the render target height to provide a y-down frag coord when s
pecifying | 162 // We use the render target height to provide a y-down frag coord when s
pecifying |
| 158 // origin_upper_left is not supported. | 163 // origin_upper_left is not supported. |
| 159 UniformHandle fRTHeightUni; | 164 UniformHandle fRTHeightUni; |
| 165 |
| 166 // Uniforms for computing texture coords to do the dst-copy lookup |
| 167 UniformHandle fDstCopyTopLeftUni; |
| 168 UniformHandle fDstCopyScaleUni; |
| 169 UniformHandle fDstCopySamplerUni; |
| 170 |
| 160 // An array of sampler uniform handles for each effect. | 171 // An array of sampler uniform handles for each effect. |
| 161 SamplerUniSArray fSamplerUnis[GrDrawState::kNumStages]; | 172 SamplerUniSArray fEffectSamplerUnis[GrDrawState::kNumStages]; |
| 162 | 173 |
| 163 UniformHandles() { | 174 UniformHandles() { |
| 164 fViewMatrixUni = GrGLUniformManager::kInvalidUniformHandle; | 175 fViewMatrixUni = GrGLUniformManager::kInvalidUniformHandle; |
| 165 fColorUni = GrGLUniformManager::kInvalidUniformHandle; | 176 fColorUni = GrGLUniformManager::kInvalidUniformHandle; |
| 166 fCoverageUni = GrGLUniformManager::kInvalidUniformHandle; | 177 fCoverageUni = GrGLUniformManager::kInvalidUniformHandle; |
| 167 fColorFilterUni = GrGLUniformManager::kInvalidUniformHandle; | 178 fColorFilterUni = GrGLUniformManager::kInvalidUniformHandle; |
| 168 fRTHeightUni = GrGLUniformManager::kInvalidUniformHandle; | 179 fRTHeightUni = GrGLUniformManager::kInvalidUniformHandle; |
| 180 fDstCopyTopLeftUni = GrGLUniformManager::kInvalidUniformHandle; |
| 181 fDstCopyScaleUni = GrGLUniformManager::kInvalidUniformHandle; |
| 182 fDstCopySamplerUni = GrGLUniformManager::kInvalidUniformHandle; |
| 169 } | 183 } |
| 170 }; | 184 }; |
| 171 | 185 |
| 172 // GL IDs | 186 // GL IDs |
| 173 GrGLuint fVShaderID; | 187 GrGLuint fVShaderID; |
| 174 GrGLuint fGShaderID; | 188 GrGLuint fGShaderID; |
| 175 GrGLuint fFShaderID; | 189 GrGLuint fFShaderID; |
| 176 GrGLuint fProgramID; | 190 GrGLuint fProgramID; |
| 177 | 191 |
| 178 // these reflect the current values of uniforms (GL uniform values travel wi
th program) | 192 // these reflect the current values of uniforms (GL uniform values travel wi
th program) |
| 179 MatrixState fMatrixState; | 193 MatrixState fMatrixState; |
| 180 GrColor fColor; | 194 GrColor fColor; |
| 181 GrColor fCoverage; | 195 GrColor fCoverage; |
| 182 GrColor fColorFilterColor; | 196 GrColor fColorFilterColor; |
| 183 | 197 |
| 184 GrGLEffect* fEffects[GrDrawState::kNumStages]; | 198 GrGLEffect* fEffects[GrDrawState::kNumStages]; |
| 185 | 199 |
| 186 GrGLProgramDesc fDesc; | 200 GrGLProgramDesc fDesc; |
| 187 const GrGLContext& fContext; | 201 const GrGLContext& fContext; |
| 188 | 202 |
| 189 GrGLUniformManager fUniformManager; | 203 GrGLUniformManager fUniformManager; |
| 190 UniformHandles fUniformHandles; | 204 UniformHandles fUniformHandles; |
| 191 | 205 |
| 192 typedef GrRefCnt INHERITED; | 206 typedef GrRefCnt INHERITED; |
| 193 }; | 207 }; |
| 194 | 208 |
| 195 #endif | 209 #endif |
| OLD | NEW |