glshader: some compatibility changes for GL 1.4
authorMatthew Waters <matthew@centricular.com>
Thu, 10 Mar 2016 06:46:05 +0000 (17:46 +1100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:32:17 +0000 (19:32 +0000)
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.

gst-libs/gst/gl/gstglshader.c
gst-libs/gst/gl/gstglslstage.c

index e7800b7..9d96784 100644 (file)
@@ -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));
index caa5860..770b1d0 100644 (file)
@@ -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,