summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Waters <matthew@centricular.com>2016-03-10 17:46:05 +1100
committerMatthew Waters <matthew@centricular.com>2016-03-10 22:53:02 +1100
commit5061095e056864c08e676067d5a868fb2cb37a64 (patch)
treefd533adb6715c846a9108714a34b4f0e25a252a9
parent8ceeca93b289a51e60c04b5102cd26bcb7262929 (diff)
downloadgstreamer-plugins-bad-5061095e056864c08e676067d5a868fb2cb37a64.tar.gz
glshader: some compatibility changes for GL 1.4
GL 1.4 (with GL_ARB_shader_objects) doesn't have glIsProgram or glIsShader equivalents. As they are simply assertions, skip them when there isn't a valid function pointer.
-rw-r--r--gst-libs/gst/gl/gstglshader.c16
-rw-r--r--gst-libs/gst/gl/gstglslstage.c2
2 files changed, 11 insertions, 7 deletions
diff --git a/gst-libs/gst/gl/gstglshader.c b/gst-libs/gst/gl/gstglshader.c
index e7800b705..9d96784ae 100644
--- a/gst-libs/gst/gl/gstglshader.c
+++ b/gst-libs/gst/gl/gstglshader.c
@@ -458,9 +458,11 @@ gst_gl_shader_detach_unlocked (GstGLShader * shader, GstGLSLStage * stage)
return;
}
- g_assert (shader->context->gl_vtable->IsProgram (shader->priv->
- program_handle));
- g_assert (shader->context->gl_vtable->IsShader (stage_handle));
+ if (shader->context->gl_vtable->IsProgram)
+ g_assert (shader->context->gl_vtable->IsProgram (shader->
+ priv->program_handle));
+ if (shader->context->gl_vtable->IsShader)
+ g_assert (shader->context->gl_vtable->IsShader (stage_handle));
GST_LOG_OBJECT (shader, "detaching shader %i from program %i", stage_handle,
(int) shader->priv->program_handle);
@@ -533,9 +535,11 @@ gst_gl_shader_attach_unlocked (GstGLShader * shader, GstGLSLStage * stage)
return FALSE;
}
- g_assert (shader->context->gl_vtable->IsProgram (shader->priv->
- program_handle));
- g_assert (shader->context->gl_vtable->IsShader (stage_handle));
+ if (shader->context->gl_vtable->IsProgram)
+ g_assert (shader->context->gl_vtable->IsProgram (shader->
+ priv->program_handle));
+ if (shader->context->gl_vtable->IsShader)
+ g_assert (shader->context->gl_vtable->IsShader (stage_handle));
shader->priv->stages =
g_list_prepend (shader->priv->stages, gst_object_ref_sink (stage));
diff --git a/gst-libs/gst/gl/gstglslstage.c b/gst-libs/gst/gl/gstglslstage.c
index caa5860bf..770b1d012 100644
--- a/gst-libs/gst/gl/gstglslstage.c
+++ b/gst-libs/gst/gl/gstglslstage.c
@@ -471,7 +471,7 @@ _compile_shader (GstGLContext * context, struct compile *data)
/* FIXME: supported threaded GLSL compilers and don't destroy compilation
* performance by getting the compilation result directly after compilation */
status = GL_FALSE;
- gl->GetShaderiv (priv->handle, GL_COMPILE_STATUS, &status);
+ vtable->GetShaderiv (priv->handle, GL_COMPILE_STATUS, &status);
len = 0;
vtable->GetShaderInfoLog (priv->handle, sizeof (info_buffer) - 1, &len,