Index: src/gpu/gl/GrGLGLSL.cpp |
diff --git a/src/gpu/gl/GrGLGLSL.cpp b/src/gpu/gl/GrGLGLSL.cpp |
index 4d2bf9794baa43f7ef593f50cb0e0f292d05fbab..76988513c03ea88c789525621d31eb2f52555aba 100755 |
--- a/src/gpu/gl/GrGLGLSL.cpp |
+++ b/src/gpu/gl/GrGLGLSL.cpp |
@@ -48,6 +48,48 @@ |
} |
} |
+const char* GrGLGetGLSLVersionDecl(const GrGLContextInfo& info) { |
+ switch (info.glslGeneration()) { |
+ case k110_GrGLSLGeneration: |
+ if (kGLES_GrGLStandard == info.standard()) { |
+ // ES2s shader language is based on version 1.20 but is version |
+ // 1.00 of the ES language. |
+ return "#version 100\n"; |
+ } else { |
+ SkASSERT(kGL_GrGLStandard == info.standard()); |
+ return "#version 110\n"; |
+ } |
+ case k130_GrGLSLGeneration: |
+ SkASSERT(kGL_GrGLStandard == info.standard()); |
+ return "#version 130\n"; |
+ case k140_GrGLSLGeneration: |
+ SkASSERT(kGL_GrGLStandard == info.standard()); |
+ return "#version 140\n"; |
+ case k150_GrGLSLGeneration: |
+ SkASSERT(kGL_GrGLStandard == info.standard()); |
+ if (info.caps()->isCoreProfile()) { |
+ return "#version 150\n"; |
+ } 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()); |
+ if (info.caps()->isCoreProfile()) { |
+ return "#version 330\n"; |
+ } else { |
+ return "#version 330 compatibility\n"; |
+ } |
+ } |
+ case k310es_GrGLSLGeneration: |
+ SkASSERT(kGLES_GrGLStandard == info.standard()); |
+ return "#version 310 es\n"; |
+ } |
+ return "<no version>"; |
+} |
+ |
void GrGLAppendGLSLDefaultFloatPrecisionDeclaration(GrSLPrecision p, GrGLStandard s, SkString* out) { |
// Desktop GLSL has added precision qualifiers but they don't do anything. |
if (kGLES_GrGLStandard == s) { |