Index: src/gpu/gl/GrGLCaps.cpp |
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp |
index 2302ef05685ae96a65f6b8ff69020f340bf70cd5..62bf71a3a9414d39e894b5b7b06f323e086f614f 100644 |
--- a/src/gpu/gl/GrGLCaps.cpp |
+++ b/src/gpu/gl/GrGLCaps.cpp |
@@ -551,9 +551,19 @@ const char* get_glsl_version_decl_string(GrGLStandard standard, GrGLSLGeneration |
return "#version 330 compatibility\n"; |
} |
} |
+ case k400_GrGLSLGeneration: |
+ SkASSERT(kGL_GrGLStandard == standard); |
+ if (isCoreProfile) { |
+ return "#version 400\n"; |
+ } else { |
+ return "#version 400 compatibility\n"; |
+ } |
case k310es_GrGLSLGeneration: |
SkASSERT(kGLES_GrGLStandard == standard); |
return "#version 310 es\n"; |
+ case k320es_GrGLSLGeneration: |
+ SkASSERT(kGLES_GrGLStandard == standard); |
+ return "#version 320 es\n"; |
} |
return "<no version>"; |
} |
@@ -595,6 +605,22 @@ void GrGLCaps::initGLSL(const GrGLContextInfo& ctxInfo) { |
glslCaps->fBindlessTextureSupport = ctxInfo.hasExtension("GL_NV_bindless_texture"); |
if (kGL_GrGLStandard == standard) { |
+ glslCaps->fSampleVariablesSupport = ctxInfo.glslGeneration() >= k400_GrGLSLGeneration; |
+ } else { |
+ if (ctxInfo.glslGeneration() >= k320es_GrGLSLGeneration) { |
+ glslCaps->fSampleVariablesSupport = true; |
+ } else if (ctxInfo.hasExtension("GL_OES_sample_variables")) { |
+ glslCaps->fSampleVariablesSupport = true; |
+ glslCaps->fSampleVariablesExtensionString = "GL_OES_sample_variables"; |
+ } |
+ } |
+ |
+ if (glslCaps->fSampleVariablesSupport) { |
+ glslCaps->fSampleMaskOverrideCoverageSupport = |
+ ctxInfo.hasExtension("GL_NV_sample_mask_override_coverage"); |
+ } |
+ |
+ if (kGL_GrGLStandard == standard) { |
glslCaps->fFlatInterpolationSupport = ctxInfo.glslGeneration() >= k130_GrGLSLGeneration; |
} else { |
glslCaps->fFlatInterpolationSupport = |