Index: src/gpu/gl/GrGLCaps.cpp |
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp |
index 79c99c224adcfb392edaf21bea5f2390b45b5fdb..ea34a0046d0a995898e2e8345f2d657ed314016d 100644 |
--- a/src/gpu/gl/GrGLCaps.cpp |
+++ b/src/gpu/gl/GrGLCaps.cpp |
@@ -806,7 +806,7 @@ void GrGLCaps::initShaderPrecisionTable(const GrGLContextInfo& ctxInfo, const Gr |
if (kGLES_GrGLStandard == ctxInfo.standard() || ctxInfo.version() >= GR_GL_VER(4,1) || |
ctxInfo.hasExtension("GL_ARB_ES2_compatibility")) { |
for (int s = 0; s < kGrShaderTypeCount; ++s) { |
- if (kGeometry_GrShaderType != s || fGeometryShaderSupport) { |
+ if (kGeometry_GrShaderType != s) { |
GrShaderType shaderType = static_cast<GrShaderType>(s); |
GrGLenum glShader = shader_type_to_gl_shader(shaderType); |
PrecisionInfo* first = NULL; |
@@ -834,7 +834,7 @@ void GrGLCaps::initShaderPrecisionTable(const GrGLContextInfo& ctxInfo, const Gr |
// We're on a desktop GL that doesn't have precision info. Assume they're all 32bit float. |
fShaderPrecisionVaries = false; |
for (int s = 0; s < kGrShaderTypeCount; ++s) { |
- if (kGeometry_GrShaderType != s || fGeometryShaderSupport) { |
+ if (kGeometry_GrShaderType != s) { |
for (int p = 0; p < kGrSLPrecisionCount; ++p) { |
fFloatPrecisions[s][p].fLogRangeLow = 127; |
fFloatPrecisions[s][p].fLogRangeHigh = 127; |
@@ -843,6 +843,15 @@ void GrGLCaps::initShaderPrecisionTable(const GrGLContextInfo& ctxInfo, const Gr |
} |
} |
} |
+ // GetShaderPrecisionFormat doesn't accept GL_GEOMETRY_SHADER as a shader type. Assume they're |
+ // the same as the vertex shader. Only fragment shaders were ever allowed to omit support for |
+ // highp. GS was added after GetShaderPrecisionFormat was added to the list of features that |
+ // are recommended against. |
+ if (fGeometryShaderSupport) { |
+ for (int p = 0; p < kGrSLPrecisionCount; ++p) { |
+ fFloatPrecisions[kGeometry_GrShaderType][p] = fFloatPrecisions[kVertex_GrShaderType][p]; |
+ } |
+ } |
} |