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())); |