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 #include "GrGLProgram.h" | 8 #include "GrGLProgram.h" |
9 | 9 |
10 #include "GrAllocator.h" | 10 #include "GrAllocator.h" |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 } | 93 } |
94 } | 94 } |
95 | 95 |
96 void GrGLProgram::initSamplerUniforms() { | 96 void GrGLProgram::initSamplerUniforms() { |
97 GL_CALL(UseProgram(fProgramID)); | 97 GL_CALL(UseProgram(fProgramID)); |
98 GrGLint texUnitIdx = 0; | 98 GrGLint texUnitIdx = 0; |
99 if (fBuiltinUniformHandles.fDstCopySamplerUni.isValid()) { | 99 if (fBuiltinUniformHandles.fDstCopySamplerUni.isValid()) { |
100 fProgramDataManager.setSampler(fBuiltinUniformHandles.fDstCopySamplerUni
, texUnitIdx); | 100 fProgramDataManager.setSampler(fBuiltinUniformHandles.fDstCopySamplerUni
, texUnitIdx); |
101 fDstCopyTexUnit = texUnitIdx++; | 101 fDstCopyTexUnit = texUnitIdx++; |
102 } | 102 } |
103 if (NULL != fGeometryProcessor.get()) { | 103 if (fGeometryProcessor.get()) { |
104 fGeometryProcessor->initSamplers(fProgramDataManager, &texUnitIdx); | 104 fGeometryProcessor->initSamplers(fProgramDataManager, &texUnitIdx); |
105 } | 105 } |
106 fColorEffects->initSamplers(fProgramDataManager, &texUnitIdx); | 106 fColorEffects->initSamplers(fProgramDataManager, &texUnitIdx); |
107 fCoverageEffects->initSamplers(fProgramDataManager, &texUnitIdx); | 107 fCoverageEffects->initSamplers(fProgramDataManager, &texUnitIdx); |
108 } | 108 } |
109 | 109 |
110 /////////////////////////////////////////////////////////////////////////////// | 110 /////////////////////////////////////////////////////////////////////////////// |
111 | 111 |
112 void GrGLProgram::setData(GrGpu::DrawType drawType, | 112 void GrGLProgram::setData(GrGpu::DrawType drawType, |
113 GrDrawState::BlendOptFlags blendOpts, | 113 GrDrawState::BlendOptFlags blendOpts, |
(...skipping 14 matching lines...) Expand all Loading... |
128 coverage = drawState.getCoverageColor(); | 128 coverage = drawState.getCoverageColor(); |
129 } else { | 129 } else { |
130 color = drawState.getColor(); | 130 color = drawState.getColor(); |
131 coverage = drawState.getCoverageColor(); | 131 coverage = drawState.getCoverageColor(); |
132 } | 132 } |
133 | 133 |
134 this->setColor(drawState, color, sharedState); | 134 this->setColor(drawState, color, sharedState); |
135 this->setCoverage(drawState, coverage, sharedState); | 135 this->setCoverage(drawState, coverage, sharedState); |
136 this->setMatrixAndRenderTargetHeight(drawType, drawState); | 136 this->setMatrixAndRenderTargetHeight(drawType, drawState); |
137 | 137 |
138 if (NULL != dstCopy) { | 138 if (dstCopy) { |
139 if (fBuiltinUniformHandles.fDstCopyTopLeftUni.isValid()) { | 139 if (fBuiltinUniformHandles.fDstCopyTopLeftUni.isValid()) { |
140 fProgramDataManager.set2f(fBuiltinUniformHandles.fDstCopyTopLeftUni, | 140 fProgramDataManager.set2f(fBuiltinUniformHandles.fDstCopyTopLeftUni, |
141 static_cast<GrGLfloat>(dstCopy->offset().
fX), | 141 static_cast<GrGLfloat>(dstCopy->offset().
fX), |
142 static_cast<GrGLfloat>(dstCopy->offset().
fY)); | 142 static_cast<GrGLfloat>(dstCopy->offset().
fY)); |
143 fProgramDataManager.set2f(fBuiltinUniformHandles.fDstCopyScaleUni, | 143 fProgramDataManager.set2f(fBuiltinUniformHandles.fDstCopyScaleUni, |
144 1.f / dstCopy->texture()->width(), | 144 1.f / dstCopy->texture()->width(), |
145 1.f / dstCopy->texture()->height()); | 145 1.f / dstCopy->texture()->height()); |
146 GrGLTexture* texture = static_cast<GrGLTexture*>(dstCopy->texture())
; | 146 GrGLTexture* texture = static_cast<GrGLTexture*>(dstCopy->texture())
; |
147 static GrTextureParams kParams; // the default is clamp, nearest fil
tering. | 147 static GrTextureParams kParams; // the default is clamp, nearest fil
tering. |
148 fGpu->bindTexture(fDstCopyTexUnit, kParams, texture); | 148 fGpu->bindTexture(fDstCopyTexUnit, kParams, texture); |
149 } else { | 149 } else { |
150 SkASSERT(!fBuiltinUniformHandles.fDstCopyScaleUni.isValid()); | 150 SkASSERT(!fBuiltinUniformHandles.fDstCopyScaleUni.isValid()); |
151 SkASSERT(!fBuiltinUniformHandles.fDstCopySamplerUni.isValid()); | 151 SkASSERT(!fBuiltinUniformHandles.fDstCopySamplerUni.isValid()); |
152 } | 152 } |
153 } else { | 153 } else { |
154 SkASSERT(!fBuiltinUniformHandles.fDstCopyTopLeftUni.isValid()); | 154 SkASSERT(!fBuiltinUniformHandles.fDstCopyTopLeftUni.isValid()); |
155 SkASSERT(!fBuiltinUniformHandles.fDstCopyScaleUni.isValid()); | 155 SkASSERT(!fBuiltinUniformHandles.fDstCopyScaleUni.isValid()); |
156 SkASSERT(!fBuiltinUniformHandles.fDstCopySamplerUni.isValid()); | 156 SkASSERT(!fBuiltinUniformHandles.fDstCopySamplerUni.isValid()); |
157 } | 157 } |
158 | 158 |
159 if (NULL != fGeometryProcessor.get()) { | 159 if (fGeometryProcessor.get()) { |
160 SkASSERT(NULL != geometryProcessor); | 160 SkASSERT(geometryProcessor); |
161 fGeometryProcessor->setData(fGpu, drawType,fProgramDataManager, geometry
Processor); | 161 fGeometryProcessor->setData(fGpu, drawType,fProgramDataManager, geometry
Processor); |
162 } | 162 } |
163 fColorEffects->setData(fGpu, drawType,fProgramDataManager, colorStages); | 163 fColorEffects->setData(fGpu, drawType,fProgramDataManager, colorStages); |
164 fCoverageEffects->setData(fGpu, drawType,fProgramDataManager, coverageStages
); | 164 fCoverageEffects->setData(fGpu, drawType,fProgramDataManager, coverageStages
); |
165 | 165 |
166 // PathTexGen state applies to the the fixed function vertex shader. For | 166 // PathTexGen state applies to the the fixed function vertex shader. For |
167 // custom shaders, it's ignored, so we don't need to change the texgen | 167 // custom shaders, it's ignored, so we don't need to change the texgen |
168 // settings in that case. | 168 // settings in that case. |
169 if (!fHasVertexShader) { | 169 if (!fHasVertexShader) { |
170 fGpu->glPathRendering()->flushPathTexGenSettings(fTexCoordSetCnt); | 170 fGpu->glPathRendering()->flushPathTexGenSettings(fTexCoordSetCnt); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 | 274 |
275 GrGLfloat viewMatrix[3 * 3]; | 275 GrGLfloat viewMatrix[3 * 3]; |
276 fMatrixState.getGLMatrix<3>(viewMatrix); | 276 fMatrixState.getGLMatrix<3>(viewMatrix); |
277 fProgramDataManager.setMatrix3f(fBuiltinUniformHandles.fViewMatrixUni, v
iewMatrix); | 277 fProgramDataManager.setMatrix3f(fBuiltinUniformHandles.fViewMatrixUni, v
iewMatrix); |
278 | 278 |
279 GrGLfloat rtAdjustmentVec[4]; | 279 GrGLfloat rtAdjustmentVec[4]; |
280 fMatrixState.getRTAdjustmentVec(rtAdjustmentVec); | 280 fMatrixState.getRTAdjustmentVec(rtAdjustmentVec); |
281 fProgramDataManager.set4fv(fBuiltinUniformHandles.fRTAdjustmentUni, 1, r
tAdjustmentVec); | 281 fProgramDataManager.set4fv(fBuiltinUniformHandles.fRTAdjustmentUni, 1, r
tAdjustmentVec); |
282 } | 282 } |
283 } | 283 } |
OLD | NEW |