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" |
11 #include "GrEffect.h" | 11 #include "GrEffect.h" |
12 #include "GrCoordTransform.h" | 12 #include "GrCoordTransform.h" |
13 #include "GrDrawEffect.h" | 13 #include "GrDrawEffect.h" |
14 #include "GrGLEffect.h" | 14 #include "GrGLEffect.h" |
15 #include "GrGpuGL.h" | 15 #include "GrGpuGL.h" |
16 #include "GrGLShaderVar.h" | 16 #include "GrGLShaderVar.h" |
17 #include "GrGLSL.h" | 17 #include "GrGLSL.h" |
18 #include "SkXfermode.h" | 18 #include "SkXfermode.h" |
19 | 19 |
20 #define GL_CALL(X) GR_GL_CALL(fGpu->glInterface(), X) | 20 #define GL_CALL(X) GR_GL_CALL(fGpu->glInterface(), X) |
21 #define GL_CALL_RET(R, X) GR_GL_CALL_RET(fGpu->glInterface(), R, X) | 21 #define GL_CALL_RET(R, X) GR_GL_CALL_RET(fGpu->glInterface(), R, X) |
22 | 22 |
23 GrGLProgram* GrGLProgram::Create(GrGpuGL* gpu, | 23 GrGLProgram* GrGLProgram::Create(GrGpuGL* gpu, |
24 const GrGLProgramDesc& desc, | 24 const GrGLProgramDesc& desc, |
25 const GrEffectStage* colorStages[], | 25 const GrEffectStage* colorStages[], |
26 const GrEffectStage* coverageStages[]) { | 26 const GrEffectStage* coverageStages[]) { |
27 SkAutoTDelete<GrGLShaderBuilder> builder; | 27 SkAutoTDelete<GrGLProgramBuilder> builder; |
28 if (desc.getHeader().fHasVertexCode ||!gpu->shouldUseFixedFunctionTexturing(
)) { | 28 if (desc.getHeader().fHasVertexCode ||!gpu->shouldUseFixedFunctionTexturing(
)) { |
29 builder.reset(SkNEW_ARGS(GrGLFullShaderBuilder, (gpu, desc))); | 29 builder.reset(SkNEW_ARGS(GrGLFullProgramBuilder, (gpu, desc))); |
30 } else { | 30 } else { |
31 builder.reset(SkNEW_ARGS(GrGLFragmentOnlyShaderBuilder, (gpu, desc))); | 31 builder.reset(SkNEW_ARGS(GrGLFragmentOnlyProgramBuilder, (gpu, desc))); |
32 } | 32 } |
33 | |
34 if (builder->genProgram(colorStages, coverageStages)) { | 33 if (builder->genProgram(colorStages, coverageStages)) { |
35 SkASSERT(0 != builder->getProgramID()); | 34 SkASSERT(0 != builder->getProgramID()); |
36 return SkNEW_ARGS(GrGLProgram, (gpu, desc, *builder)); | 35 return SkNEW_ARGS(GrGLProgram, (gpu, desc, *builder)); |
37 } | 36 } |
38 return NULL; | 37 return NULL; |
39 } | 38 } |
40 | 39 |
41 GrGLProgram::GrGLProgram(GrGpuGL* gpu, | 40 GrGLProgram::GrGLProgram(GrGpuGL* gpu, |
42 const GrGLProgramDesc& desc, | 41 const GrGLProgramDesc& desc, |
43 const GrGLShaderBuilder& builder) | 42 const GrGLProgramBuilder& builder) |
44 : fColor(GrColor_ILLEGAL) | 43 : fColor(GrColor_ILLEGAL) |
45 , fCoverage(GrColor_ILLEGAL) | 44 , fCoverage(GrColor_ILLEGAL) |
46 , fDstCopyTexUnit(-1) | 45 , fDstCopyTexUnit(-1) |
47 , fBuiltinUniformHandles(builder.getBuiltinUniformHandles()) | 46 , fBuiltinUniformHandles(builder.getBuiltinUniformHandles()) |
48 , fColorEffects(SkRef(builder.getColorEffects())) | 47 , fColorEffects(SkRef(builder.getColorEffects())) |
49 , fCoverageEffects(SkRef(builder.getCoverageEffects())) | 48 , fCoverageEffects(SkRef(builder.getCoverageEffects())) |
50 , fProgramID(builder.getProgramID()) | 49 , fProgramID(builder.getProgramID()) |
51 , fHasVertexShader(builder.hasVertexShader()) | 50 , fHasVertexShader(builder.hasVertexShader()) |
52 , fTexCoordSetCnt(builder.getTexCoordSetCount()) | 51 , fTexCoordSetCnt(builder.getTexCoordSetCount()) |
53 , fDesc(desc) | 52 , fDesc(desc) |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 | 258 |
260 GrGLfloat viewMatrix[3 * 3]; | 259 GrGLfloat viewMatrix[3 * 3]; |
261 fMatrixState.getGLMatrix<3>(viewMatrix); | 260 fMatrixState.getGLMatrix<3>(viewMatrix); |
262 fProgramDataManager.setMatrix3f(fBuiltinUniformHandles.fViewMatrixUni, v
iewMatrix); | 261 fProgramDataManager.setMatrix3f(fBuiltinUniformHandles.fViewMatrixUni, v
iewMatrix); |
263 | 262 |
264 GrGLfloat rtAdjustmentVec[4]; | 263 GrGLfloat rtAdjustmentVec[4]; |
265 fMatrixState.getRTAdjustmentVec(rtAdjustmentVec); | 264 fMatrixState.getRTAdjustmentVec(rtAdjustmentVec); |
266 fProgramDataManager.set4fv(fBuiltinUniformHandles.fRTAdjustmentUni, 1, r
tAdjustmentVec); | 265 fProgramDataManager.set4fv(fBuiltinUniformHandles.fRTAdjustmentUni, 1, r
tAdjustmentVec); |
267 } | 266 } |
268 } | 267 } |
OLD | NEW |