Index: src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp |
diff --git a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp |
index 488d07b8dbd21f0de7c8d2db4e9bd7ff722668af..5d5741ef9bc8f4cb04379b6e1dc60b73d34698de 100644 |
--- a/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp |
+++ b/src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp |
@@ -42,8 +42,7 @@ |
} |
GrGLFragmentShaderBuilder::DstReadKey |
-GrGLFragmentShaderBuilder::KeyForDstRead(const GrTexture* dstCopy, |
- const GrGLCaps& caps) { |
+GrGLFragmentShaderBuilder::KeyForDstRead(const GrTexture* dstCopy, const GrGLCaps& caps) { |
uint32_t key = kYesDstRead_DstReadKeyBit; |
if (caps.fbFetchSupport()) { |
return key; |
@@ -61,8 +60,7 @@ |
} |
GrGLFragmentShaderBuilder::FragPosKey |
-GrGLFragmentShaderBuilder::KeyForFragmentPosition(const GrRenderTarget* dst, |
- const GrGLCaps&) { |
+GrGLFragmentShaderBuilder::KeyForFragmentPosition(const GrRenderTarget* dst, const GrGLCaps&) { |
if (kTopLeft_GrSurfaceOrigin == dst->origin()) { |
return kTopLeftFragPosRead_FragPosKey; |
} else { |
@@ -88,7 +86,8 @@ |
if (!gpu->glCaps().shaderDerivativeSupport()) { |
return false; |
} |
- if (kGLES_GrGLStandard == gpu->glStandard()) { |
+ if (kGLES_GrGLStandard == gpu->glStandard() && |
+ k110_GrGLSLGeneration == gpu->glslGeneration()) { |
this->addFeature(1 << kStandardDerivatives_GLSLFeature, |
"GL_OES_standard_derivatives"); |
} |
@@ -326,7 +325,9 @@ |
} |
void GrGLFragmentShaderBuilder::bindFragmentShaderLocations(GrGLuint programID) { |
- if (fHasCustomColorOutput) { |
+ // ES 3.00 requires custom color output but doesn't support bindFragDataLocation |
+ if (fHasCustomColorOutput && |
+ kGLES_GrGLStandard != fProgramBuilder->gpu()->ctxInfo().standard()) { |
GL_CALL(BindFragDataLocation(programID, 0, declared_color_output_name())); |
} |
if (fHasSecondaryOutput) { |