Index: src/gpu/gl/GrGLSL.cpp |
diff --git a/src/gpu/gl/GrGLSL.cpp b/src/gpu/gl/GrGLSL.cpp |
index 866a0d13d3a03dbc408c79913b1e4cd2143dd5bb..34c805e21fcada65618a8874c9bffc9ee4cf083f 100644 |
--- a/src/gpu/gl/GrGLSL.cpp |
+++ b/src/gpu/gl/GrGLSL.cpp |
@@ -18,7 +18,9 @@ bool GrGetGLSLGeneration(const GrGLInterface* gl, GrGLSLGeneration* generation) |
switch (gl->fStandard) { |
case kGL_GrGLStandard: |
SkASSERT(ver >= GR_GLSL_VER(1,10)); |
- if (ver >= GR_GLSL_VER(1,50)) { |
+ if (ver >= GR_GLSL_VER(3,30)) { |
+ *generation = k330_GrGLSLGeneration; |
+ } else if (ver >= GR_GLSL_VER(1,50)) { |
*generation = k150_GrGLSLGeneration; |
} else if (ver >= GR_GLSL_VER(1,40)) { |
*generation = k140_GrGLSLGeneration; |
@@ -29,9 +31,15 @@ bool GrGetGLSLGeneration(const GrGLInterface* gl, GrGLSLGeneration* generation) |
} |
return true; |
case kGLES_GrGLStandard: |
- // version 1.00 of ES GLSL based on ver 1.20 of desktop GLSL |
SkASSERT(ver >= GR_GL_VER(1,00)); |
- *generation = k110_GrGLSLGeneration; |
+ if (ver >= GR_GLSL_VER(3,1)) { |
+ *generation = k310es_GrGLSLGeneration; |
+ } |
+ else if (ver >= GR_GLSL_VER(3,0)) { |
+ *generation = k330_GrGLSLGeneration; |
+ } else { |
+ *generation = k110_GrGLSLGeneration; |
+ } |
return true; |
default: |
SkFAIL("Unknown GL Standard"); |
@@ -63,6 +71,16 @@ const char* GrGetGLSLVersionDecl(const GrGLContextInfo& info) { |
} else { |
return "#version 150 compatibility\n"; |
} |
+ case k330_GrGLSLGeneration: |
+ if (kGLES_GrGLStandard == info.standard()) { |
+ return "#version 300 es\n"; |
+ } else { |
+ SkASSERT(kGL_GrGLStandard == info.standard()); |
+ return "#version 330 compatibility\n"; |
+ } |
+ case k310es_GrGLSLGeneration: |
+ SkASSERT(kGLES_GrGLStandard == info.standard()); |
+ return "#version 310 es\n"; |
default: |
SkFAIL("Unknown GL version."); |
return ""; // suppress warning |