aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-30 15:52:36 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-30 15:52:36 +0000
commit06f05989570fbf2ced3d2d1690ea1276b7330b5f (patch)
treeb0e61e473fb964c94ea43fab1253b5b715318bba
parent46fbfe0cd1bbe60fd15ce52e784f5d51450ff5fd (diff)
Modify GLSL version declaration to allow access to compat. features
R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://chromiumcodereview.appspot.com/23526008 git-svn-id: http://skia.googlecode.com/svn/trunk@11033 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--src/gpu/gl/GrGLSL.cpp20
-rw-r--r--src/gpu/gl/GrGLSL.h4
-rw-r--r--src/gpu/gl/GrGLShaderBuilder.cpp2
3 files changed, 15 insertions, 11 deletions
diff --git a/src/gpu/gl/GrGLSL.cpp b/src/gpu/gl/GrGLSL.cpp
index 486390b8fb..29596827da 100644
--- a/src/gpu/gl/GrGLSL.cpp
+++ b/src/gpu/gl/GrGLSL.cpp
@@ -33,26 +33,30 @@ GrGLSLGeneration GrGetGLSLGeneration(GrGLBinding binding, const GrGLInterface* g
}
}
-const char* GrGetGLSLVersionDecl(GrGLBinding binding, GrGLSLGeneration gen) {
- switch (gen) {
+const char* GrGetGLSLVersionDecl(const GrGLContextInfo& info) {
+ switch (info.glslGeneration()) {
case k110_GrGLSLGeneration:
- if (kES_GrGLBinding == binding) {
+ if (kES_GrGLBinding == info.binding()) {
// ES2s shader language is based on version 1.20 but is version
// 1.00 of the ES language.
return "#version 100\n";
} else {
- SkASSERT(kDesktop_GrGLBinding == binding);
+ SkASSERT(kDesktop_GrGLBinding == info.binding());
return "#version 110\n";
}
case k130_GrGLSLGeneration:
- SkASSERT(kDesktop_GrGLBinding == binding);
+ SkASSERT(kDesktop_GrGLBinding == info.binding());
return "#version 130\n";
case k140_GrGLSLGeneration:
- SkASSERT(kDesktop_GrGLBinding == binding);
+ SkASSERT(kDesktop_GrGLBinding == info.binding());
return "#version 140\n";
case k150_GrGLSLGeneration:
- SkASSERT(kDesktop_GrGLBinding == binding);
- return "#version 150\n";
+ SkASSERT(kDesktop_GrGLBinding == info.binding());
+ if (info.caps()->isCoreProfile()) {
+ return "#version 150\n";
+ } else {
+ return "#version 150 compatibility\n";
+ }
default:
GrCrash("Unknown GL version.");
return ""; // suppress warning
diff --git a/src/gpu/gl/GrGLSL.h b/src/gpu/gl/GrGLSL.h
index e65c8d3cec..a54bd3b3d7 100644
--- a/src/gpu/gl/GrGLSL.h
+++ b/src/gpu/gl/GrGLSL.h
@@ -12,6 +12,7 @@
#include "GrColor.h"
#include "GrTypesPriv.h"
+class GrGLContextInfo;
class GrGLShaderVar;
class SkString;
@@ -83,8 +84,7 @@ GrGLSLGeneration GrGetGLSLGeneration(GrGLBinding binding,
* Returns a string to include at the beginning of a shader to declare the GLSL
* version.
*/
-const char* GrGetGLSLVersionDecl(GrGLBinding binding,
- GrGLSLGeneration v);
+const char* GrGetGLSLVersionDecl(const GrGLContextInfo&);
/**
* Depending on the GLSL version being emitted there may be an assumed output
diff --git a/src/gpu/gl/GrGLShaderBuilder.cpp b/src/gpu/gl/GrGLShaderBuilder.cpp
index 49d95914d1..9ac4645ee0 100644
--- a/src/gpu/gl/GrGLShaderBuilder.cpp
+++ b/src/gpu/gl/GrGLShaderBuilder.cpp
@@ -589,7 +589,7 @@ void GrGLShaderBuilder::appendUniformDecls(ShaderType stype, SkString* out) cons
}
void GrGLShaderBuilder::getShader(ShaderType type, SkString* shaderStr) const {
- const char* version = GrGetGLSLVersionDecl(fCtxInfo.binding(), fCtxInfo.glslGeneration());
+ const char* version = GrGetGLSLVersionDecl(fCtxInfo);
switch (type) {
case kVertex_ShaderType: