Use BindFragDataLocation (rather than indexed variant) for FS color output.
Review URL: http://codereview.appspot.com/5098042/
git-svn-id: http://skia.googlecode.com/svn/trunk@2299 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/src/GrGLInterface.cpp b/gpu/src/GrGLInterface.cpp
index 4bbcfa5..e943d58 100644
--- a/gpu/src/GrGLInterface.cpp
+++ b/gpu/src/GrGLInterface.cpp
@@ -115,6 +115,7 @@
fAttachShader = NULL;
fBindAttribLocation = NULL;
fBindBuffer = NULL;
+ fBindFragDataLocation = NULL;
fBindTexture = NULL;
fBlendColor = NULL;
fBlendFunc = NULL;
@@ -406,6 +407,9 @@
return false;
}
}
+ if (major >= 3 && NULL == fBindFragDataLocation) {
+ return false;
+ }
if (major >= 2 ||
has_gl_extension_from_string("GL_ARB_draw_buffers", ext)) {
if (NULL == fDrawBuffers) {
diff --git a/gpu/src/GrGLProgram.cpp b/gpu/src/GrGLProgram.cpp
index 27eb367..0c707c5 100644
--- a/gpu/src/GrGLProgram.cpp
+++ b/gpu/src/GrGLProgram.cpp
@@ -965,8 +965,8 @@
GR_GL_CALL(gl, AttachShader(progID, programData->fFShaderID));
if (bindColorOut) {
- GR_GL_CALL(gl, BindFragDataLocationIndexed(programData->fProgramID,
- 0, 0, declared_color_output_name()));
+ GR_GL_CALL(gl, BindFragDataLocation(programData->fProgramID,
+ 0, declared_color_output_name()));
}
if (bindDualSrcOut) {
GR_GL_CALL(gl, BindFragDataLocationIndexed(programData->fProgramID,
diff --git a/gpu/src/mac/GrGLDefaultInterface_mac.cpp b/gpu/src/mac/GrGLDefaultInterface_mac.cpp
index e724569..ef6b73c 100644
--- a/gpu/src/mac/GrGLDefaultInterface_mac.cpp
+++ b/gpu/src/mac/GrGLDefaultInterface_mac.cpp
@@ -22,6 +22,9 @@
interface->fAttachShader = glAttachShader;
interface->fBindAttribLocation = glBindAttribLocation;
interface->fBindBuffer = glBindBuffer;
+#if GL_VERSION_3_0
+ interface->fBindFragDataLocation = glBindFragDataLocation;
+#endif
interface->fBindTexture = glBindTexture;
interface->fBlendColor = glBlendColor;
interface->fBlendFunc = glBlendFunc;
diff --git a/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp b/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
index cc27205..15eedec 100644
--- a/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
+++ b/gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
@@ -38,6 +38,7 @@
GR_GL_GET_PROC(AttachShader);
GR_GL_GET_PROC(BindAttribLocation);
GR_GL_GET_PROC(BindBuffer);
+ GR_GL_GET_PROC(BindFragDataLocation);
interface->fBindTexture = glBindTexture;
interface->fBlendColor = glBlendColor;
interface->fBlendFunc = glBlendFunc;
diff --git a/gpu/src/unix/GrGLDefaultInterface_unix.cpp b/gpu/src/unix/GrGLDefaultInterface_unix.cpp
index fff01ed..04c6e30 100644
--- a/gpu/src/unix/GrGLDefaultInterface_unix.cpp
+++ b/gpu/src/unix/GrGLDefaultInterface_unix.cpp
@@ -41,6 +41,7 @@
GR_GL_GET_PROC(AttachShader);
GR_GL_GET_PROC(BindAttribLocation);
GR_GL_GET_PROC(BindBuffer);
+ GR_GL_GET_PROC(BindFragDataLocation);
interface->fBindTexture = glBindTexture;
interface->fBlendColor = glBlendColor;
interface->fBlendFunc = glBlendFunc;
diff --git a/gpu/src/win/GrGLDefaultInterface_win.cpp b/gpu/src/win/GrGLDefaultInterface_win.cpp
index 89986e6..b257b94 100644
--- a/gpu/src/win/GrGLDefaultInterface_win.cpp
+++ b/gpu/src/win/GrGLDefaultInterface_win.cpp
@@ -92,6 +92,7 @@
GR_GL_GET_PROC(BindAttribLocation);
GR_GL_GET_PROC(BindBuffer);
GR_GL_GET_PROC(BindTexture);
+ GR_GL_GET_PROC(BindFragDataLocation);
GR_GL_GET_PROC(BlendColor);
GR_GL_GET_PROC(BufferData);
GR_GL_GET_PROC(BufferSubData);