| 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 "builders/GrGLFullProgramBuilder.h" |
| 10 #include "builders/GrGLFragmentOnlyProgramBuilder.h" | 11 #include "builders/GrGLFragmentOnlyProgramBuilder.h" |
| 11 #include "builders/GrGLFullProgramBuilder.h" | |
| 12 #include "GrAllocator.h" | 12 #include "GrAllocator.h" |
| 13 #include "GrEffect.h" | 13 #include "GrProcessor.h" |
| 14 #include "GrCoordTransform.h" | 14 #include "GrCoordTransform.h" |
| 15 #include "GrGLEffect.h" | 15 #include "GrGLProcessor.h" |
| 16 #include "GrGpuGL.h" | 16 #include "GrGpuGL.h" |
| 17 #include "GrGLPathRendering.h" | 17 #include "GrGLPathRendering.h" |
| 18 #include "GrGLShaderVar.h" | 18 #include "GrGLShaderVar.h" |
| 19 #include "GrGLSL.h" | 19 #include "GrGLSL.h" |
| 20 #include "GrOptDrawState.h" | 20 #include "GrOptDrawState.h" |
| 21 #include "SkXfermode.h" | 21 #include "SkXfermode.h" |
| 22 | 22 |
| 23 #define GL_CALL(X) GR_GL_CALL(fGpu->glInterface(), X) | 23 #define GL_CALL(X) GR_GL_CALL(fGpu->glInterface(), X) |
| 24 #define GL_CALL_RET(R, X) GR_GL_CALL_RET(fGpu->glInterface(), R, X) | 24 #define GL_CALL_RET(R, X) GR_GL_CALL_RET(fGpu->glInterface(), R, X) |
| 25 | 25 |
| 26 GrGLProgram* GrGLProgram::Create(GrGpuGL* gpu, | 26 GrGLProgram* GrGLProgram::Create(GrGpuGL* gpu, |
| 27 const GrGLProgramDesc& desc, | 27 const GrGLProgramDesc& desc, |
| 28 const GrEffectStage* geometryProcessor, | 28 const GrGeometryStage* geometryProcessor, |
| 29 const GrEffectStage* colorStages[], | 29 const GrFragmentStage* colorStages[], |
| 30 const GrEffectStage* coverageStages[]) { | 30 const GrFragmentStage* coverageStages[]) { |
| 31 SkAutoTDelete<GrGLProgramBuilder> builder; | 31 SkAutoTDelete<GrGLProgramBuilder> builder; |
| 32 if (!desc.getHeader().fRequiresVertexShader && | 32 if (!desc.getHeader().fRequiresVertexShader && |
| 33 gpu->glCaps().pathRenderingSupport() && | 33 gpu->glCaps().pathRenderingSupport() && |
| 34 gpu->glPathRendering()->texturingMode() == GrGLPathRendering::FixedFunct
ion_TexturingMode) { | 34 gpu->glPathRendering()->texturingMode() == GrGLPathRendering::FixedFunct
ion_TexturingMode) { |
| 35 SkASSERT(NULL == geometryProcessor); | 35 SkASSERT(NULL == geometryProcessor); |
| 36 builder.reset(SkNEW_ARGS(GrGLFragmentOnlyProgramBuilder, (gpu, desc))); | 36 builder.reset(SkNEW_ARGS(GrGLFragmentOnlyProgramBuilder, (gpu, desc))); |
| 37 } else { | 37 } else { |
| 38 builder.reset(SkNEW_ARGS(GrGLFullProgramBuilder, (gpu, desc))); | 38 builder.reset(SkNEW_ARGS(GrGLFullProgramBuilder, (gpu, desc))); |
| 39 } | 39 } |
| 40 if (builder->genProgram(geometryProcessor, colorStages, coverageStages)) { | 40 if (builder->genProgram(geometryProcessor, colorStages, coverageStages)) { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 fGeometryProcessor->initSamplers(fProgramDataManager, &texUnitIdx); | 106 fGeometryProcessor->initSamplers(fProgramDataManager, &texUnitIdx); |
| 107 } | 107 } |
| 108 fColorEffects->initSamplers(fProgramDataManager, &texUnitIdx); | 108 fColorEffects->initSamplers(fProgramDataManager, &texUnitIdx); |
| 109 fCoverageEffects->initSamplers(fProgramDataManager, &texUnitIdx); | 109 fCoverageEffects->initSamplers(fProgramDataManager, &texUnitIdx); |
| 110 } | 110 } |
| 111 | 111 |
| 112 /////////////////////////////////////////////////////////////////////////////// | 112 /////////////////////////////////////////////////////////////////////////////// |
| 113 | 113 |
| 114 void GrGLProgram::setData(const GrOptDrawState& optState, | 114 void GrGLProgram::setData(const GrOptDrawState& optState, |
| 115 GrGpu::DrawType drawType, | 115 GrGpu::DrawType drawType, |
| 116 const GrEffectStage* geometryProcessor, | 116 const GrGeometryStage* geometryProcessor, |
| 117 const GrEffectStage* colorStages[], | 117 const GrFragmentStage* colorStages[], |
| 118 const GrEffectStage* coverageStages[], | 118 const GrFragmentStage* coverageStages[], |
| 119 const GrDeviceCoordTexture* dstCopy, | 119 const GrDeviceCoordTexture* dstCopy, |
| 120 SharedGLState* sharedState) { | 120 SharedGLState* sharedState) { |
| 121 GrColor color = optState.getColor(); | 121 GrColor color = optState.getColor(); |
| 122 GrColor coverage = optState.getCoverageColor(); | 122 GrColor coverage = optState.getCoverageColor(); |
| 123 | 123 |
| 124 this->setColor(optState, color, sharedState); | 124 this->setColor(optState, color, sharedState); |
| 125 this->setCoverage(optState, coverage, sharedState); | 125 this->setCoverage(optState, coverage, sharedState); |
| 126 this->setMatrixAndRenderTargetHeight(drawType, optState); | 126 this->setMatrixAndRenderTargetHeight(drawType, optState); |
| 127 | 127 |
| 128 if (dstCopy) { | 128 if (dstCopy) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 141 SkASSERT(!fBuiltinUniformHandles.fDstCopySamplerUni.isValid()); | 141 SkASSERT(!fBuiltinUniformHandles.fDstCopySamplerUni.isValid()); |
| 142 } | 142 } |
| 143 } else { | 143 } else { |
| 144 SkASSERT(!fBuiltinUniformHandles.fDstCopyTopLeftUni.isValid()); | 144 SkASSERT(!fBuiltinUniformHandles.fDstCopyTopLeftUni.isValid()); |
| 145 SkASSERT(!fBuiltinUniformHandles.fDstCopyScaleUni.isValid()); | 145 SkASSERT(!fBuiltinUniformHandles.fDstCopyScaleUni.isValid()); |
| 146 SkASSERT(!fBuiltinUniformHandles.fDstCopySamplerUni.isValid()); | 146 SkASSERT(!fBuiltinUniformHandles.fDstCopySamplerUni.isValid()); |
| 147 } | 147 } |
| 148 | 148 |
| 149 if (fGeometryProcessor.get()) { | 149 if (fGeometryProcessor.get()) { |
| 150 SkASSERT(geometryProcessor); | 150 SkASSERT(geometryProcessor); |
| 151 fGeometryProcessor->setData(fGpu, drawType, fProgramDataManager, &geomet
ryProcessor); | 151 fGeometryProcessor->setData(fGpu, drawType, fProgramDataManager, geometr
yProcessor); |
| 152 } | 152 } |
| 153 fColorEffects->setData(fGpu, drawType, fProgramDataManager, colorStages); | 153 fColorEffects->setData(fGpu, drawType, fProgramDataManager, colorStages); |
| 154 fCoverageEffects->setData(fGpu, drawType, fProgramDataManager, coverageStage
s); | 154 fCoverageEffects->setData(fGpu, drawType, fProgramDataManager, coverageStage
s); |
| 155 | 155 |
| 156 // PathTexGen state applies to the the fixed function vertex shader. For | 156 // PathTexGen state applies to the the fixed function vertex shader. For |
| 157 // custom shaders, it's ignored, so we don't need to change the texgen | 157 // custom shaders, it's ignored, so we don't need to change the texgen |
| 158 // settings in that case. | 158 // settings in that case. |
| 159 if (!fHasVertexShader) { | 159 if (!fHasVertexShader) { |
| 160 fGpu->glPathRendering()->flushPathTexGenSettings(fTexCoordSetCnt); | 160 fGpu->glPathRendering()->flushPathTexGenSettings(fTexCoordSetCnt); |
| 161 } | 161 } |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 | 264 |
| 265 GrGLfloat viewMatrix[3 * 3]; | 265 GrGLfloat viewMatrix[3 * 3]; |
| 266 fMatrixState.getGLMatrix<3>(viewMatrix); | 266 fMatrixState.getGLMatrix<3>(viewMatrix); |
| 267 fProgramDataManager.setMatrix3f(fBuiltinUniformHandles.fViewMatrixUni, v
iewMatrix); | 267 fProgramDataManager.setMatrix3f(fBuiltinUniformHandles.fViewMatrixUni, v
iewMatrix); |
| 268 | 268 |
| 269 GrGLfloat rtAdjustmentVec[4]; | 269 GrGLfloat rtAdjustmentVec[4]; |
| 270 fMatrixState.getRTAdjustmentVec(rtAdjustmentVec); | 270 fMatrixState.getRTAdjustmentVec(rtAdjustmentVec); |
| 271 fProgramDataManager.set4fv(fBuiltinUniformHandles.fRTAdjustmentUni, 1, r
tAdjustmentVec); | 271 fProgramDataManager.set4fv(fBuiltinUniformHandles.fRTAdjustmentUni, 1, r
tAdjustmentVec); |
| 272 } | 272 } |
| 273 } | 273 } |
| OLD | NEW |