| Index: src/gpu/gl/GrGpuGL_program.cpp
|
| diff --git a/src/gpu/gl/GrGpuGL_program.cpp b/src/gpu/gl/GrGpuGL_program.cpp
|
| index 2e6bfc4f925651d8235fa4c14ab27530e16a1e61..50773468c4c24773c10fff88150b52278a67d37c 100644
|
| --- a/src/gpu/gl/GrGpuGL_program.cpp
|
| +++ b/src/gpu/gl/GrGpuGL_program.cpp
|
| @@ -90,7 +90,8 @@ int GrGpuGL::ProgramCache::search(const GrGLProgramDesc& desc) const {
|
| return SkTSearch(fEntries, fCount, desc, sizeof(Entry*), less);
|
| }
|
|
|
| -GrGLProgram* GrGpuGL::ProgramCache::getProgram(const GrGLProgramDesc& desc,
|
| +GrGLProgram* GrGpuGL::ProgramCache::getProgram(const GrOptDrawState& optState,
|
| + const GrGLProgramDesc& desc,
|
| const GrGeometryStage* geometryProcessor,
|
| const GrFragmentStage* colorStages[],
|
| const GrFragmentStage* coverageStages[]) {
|
| @@ -128,8 +129,8 @@ GrGLProgram* GrGpuGL::ProgramCache::getProgram(const GrGLProgramDesc& desc,
|
| #ifdef PROGRAM_CACHE_STATS
|
| ++fCacheMisses;
|
| #endif
|
| - GrGLProgram* program = GrGLProgram::Create(fGpu, desc, geometryProcessor,
|
| - colorStages, coverageStages);
|
| + GrGLProgram* program = GrGLProgram::Create(fGpu, optState, desc, geometryProcessor,
|
| + colorStages, coverageStages);
|
| if (NULL == program) {
|
| return NULL;
|
| }
|
| @@ -221,12 +222,6 @@ bool GrGpuGL::flushGraphicsState(DrawType type, const GrDeviceCoordTexture* dstC
|
| GrBlendCoeff srcCoeff = optState->getSrcBlendCoeff();
|
| GrBlendCoeff dstCoeff = optState->getDstBlendCoeff();
|
|
|
| - // In these blend coeff's we end up drawing nothing so we can skip draw all together
|
| - if (kZero_GrBlendCoeff == srcCoeff && kOne_GrBlendCoeff == dstCoeff &&
|
| - !optState->getStencil().doesWrite()) {
|
| - return false;
|
| - }
|
| -
|
| const GrGeometryStage* geometryProcessor = NULL;
|
| SkSTArray<8, const GrFragmentStage*, true> colorStages;
|
| SkSTArray<8, const GrFragmentStage*, true> coverageStages;
|
| @@ -245,7 +240,8 @@ bool GrGpuGL::flushGraphicsState(DrawType type, const GrDeviceCoordTexture* dstC
|
| return false;
|
| }
|
|
|
| - fCurrentProgram.reset(fProgramCache->getProgram(desc,
|
| + fCurrentProgram.reset(fProgramCache->getProgram(*optState.get(),
|
| + desc,
|
| geometryProcessor,
|
| colorStages.begin(),
|
| coverageStages.begin()));
|
|
|