summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorMatthew Waters <matthew@centricular.com>2017-03-14 14:15:00 +1100
committerMatthew Waters <matthew@centricular.com>2017-03-14 14:15:00 +1100
commitefc015f27deca351e4f7cca1ebf6bc23bad6fd71 (patch)
treec4eff99ce3b74cabcf0def88e8a2c0f2b2d4da1f /ext
parentb01ae6e5e69bd04763b6b75cc978d0d9874514bc (diff)
downloadgstreamer-plugins-bad-efc015f27deca351e4f7cca1ebf6bc23bad6fd71.tar.gz
gl: GL_ARRAY_BUFFER is not a part of VAO state
As a result we need to bind it on every draw in order to have the correct state in the GL state machine.
Diffstat (limited to 'ext')
-rw-r--r--ext/gl/caopengllayersink.m6
-rw-r--r--ext/gl/gltestsrc.c6
-rw-r--r--ext/gl/gstglfiltercube.c6
-rw-r--r--ext/gl/gstglimagesink.c6
-rw-r--r--ext/gl/gstgloverlay.c10
-rw-r--r--ext/gl/gstgltransformation.c10
-rw-r--r--ext/gtk/gtkgstglwidget.c6
7 files changed, 16 insertions, 34 deletions
diff --git a/ext/gl/caopengllayersink.m b/ext/gl/caopengllayersink.m
index 1e42034ac..fc96258b9 100644
--- a/ext/gl/caopengllayersink.m
+++ b/ext/gl/caopengllayersink.m
@@ -995,8 +995,7 @@ gst_ca_opengl_layer_sink_on_draw (GstCAOpenGLLayerSink * ca_sink)
if (gl->GenVertexArrays)
gl->BindVertexArray (ca_sink->vao);
- else
- _bind_buffer (ca_sink);
+ _bind_buffer (ca_sink);
gl->ActiveTexture (GL_TEXTURE0);
gl->BindTexture (GL_TEXTURE_2D, ca_sink->redisplay_texture);
@@ -1006,8 +1005,7 @@ gst_ca_opengl_layer_sink_on_draw (GstCAOpenGLLayerSink * ca_sink)
if (gl->GenVertexArrays)
gl->BindVertexArray (0);
- else
- _unbind_buffer (ca_sink);
+ _unbind_buffer (ca_sink);
/* end default opengl scene */
GST_CA_OPENGL_LAYER_SINK_UNLOCK (ca_sink);
diff --git a/ext/gl/gltestsrc.c b/ext/gl/gltestsrc.c
index 87e302c55..ac845c68f 100644
--- a/ext/gl/gltestsrc.c
+++ b/ext/gl/gltestsrc.c
@@ -213,16 +213,14 @@ _src_shader_fill_bound_fbo (gpointer impl)
if (gl->GenVertexArrays)
gl->BindVertexArray (src->vao);
- else
- _bind_buffer (src);
+ _bind_buffer (src);
gl->DrawElements (GL_TRIANGLES, src->n_indices, GL_UNSIGNED_SHORT,
(gpointer) (gintptr) src->index_offset);
if (gl->GenVertexArrays)
gl->BindVertexArray (0);
- else
- _unbind_buffer (src);
+ _unbind_buffer (src);
gst_gl_context_clear_shader (src->base.context);
diff --git a/ext/gl/gstglfiltercube.c b/ext/gl/gstglfiltercube.c
index 0d5865646..735d45e5e 100644
--- a/ext/gl/gstglfiltercube.c
+++ b/ext/gl/gstglfiltercube.c
@@ -476,15 +476,13 @@ _callback (gpointer stuff)
if (gl->GenVertexArrays)
gl->BindVertexArray (cube_filter->vao);
- else
- _bind_buffer (cube_filter);
+ _bind_buffer (cube_filter);
gl->DrawElements (GL_TRIANGLES, 36, GL_UNSIGNED_SHORT, 0);
if (gl->GenVertexArrays)
gl->BindVertexArray (0);
- else
- _unbind_buffer (cube_filter);
+ _unbind_buffer (cube_filter);
gl->Disable (GL_DEPTH_TEST);
diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c
index 2b20b1e2c..1c8d314f2 100644
--- a/ext/gl/gstglimagesink.c
+++ b/ext/gl/gstglimagesink.c
@@ -2228,8 +2228,7 @@ gst_glimage_sink_on_draw (GstGLImageSink * gl_sink)
if (gl->GenVertexArrays)
gl->BindVertexArray (gl_sink->vao);
- else
- _bind_buffer (gl_sink);
+ _bind_buffer (gl_sink);
gl->ActiveTexture (GL_TEXTURE0);
gl->BindTexture (gl_target, gl_sink->redisplay_texture);
@@ -2258,8 +2257,7 @@ gst_glimage_sink_on_draw (GstGLImageSink * gl_sink)
if (gl->GenVertexArrays)
gl->BindVertexArray (0);
- else
- _unbind_buffer (gl_sink);
+ _unbind_buffer (gl_sink);
if (gl_sink->ignore_alpha)
gl->Disable (GL_BLEND);
diff --git a/ext/gl/gstgloverlay.c b/ext/gl/gstgloverlay.c
index 9846f5365..8c21bac77 100644
--- a/ext/gl/gstgloverlay.c
+++ b/ext/gl/gstgloverlay.c
@@ -522,9 +522,7 @@ gst_gl_overlay_callback (GstGLFilter * filter, GstGLMemory * in_tex,
GL_STATIC_DRAW);
}
- if (!gl->GenVertexArrays || overlay->geometry_change) {
- _bind_buffer (overlay, overlay->overlay_vbo);
- }
+ _bind_buffer (overlay, overlay->overlay_vbo);
gl->BindTexture (GL_TEXTURE_2D, image_tex);
gst_gl_shader_set_uniform_1f (overlay->shader, "alpha", overlay->alpha);
@@ -539,11 +537,9 @@ gst_gl_overlay_callback (GstGLFilter * filter, GstGLMemory * in_tex,
ret = TRUE;
out:
- if (gl->GenVertexArrays) {
+ if (gl->GenVertexArrays)
gl->BindVertexArray (0);
- } else {
- _unbind_buffer (overlay);
- }
+ _unbind_buffer (overlay);
gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context);
diff --git a/ext/gl/gstgltransformation.c b/ext/gl/gstgltransformation.c
index eec262bb3..f6c9e3f26 100644
--- a/ext/gl/gstgltransformation.c
+++ b/ext/gl/gstgltransformation.c
@@ -960,19 +960,15 @@ gst_gl_transformation_callback (gpointer stuff)
if (gl->GenVertexArrays)
gl->BindVertexArray (transformation->vao);
- if (transformation->caps_change) {
+ if (transformation->caps_change)
_upload_vertices (transformation);
- _bind_buffer (transformation);
- } else if (!gl->GenVertexArrays) {
- _bind_buffer (transformation);
- }
+ _bind_buffer (transformation);
gl->DrawElements (GL_TRIANGLE_STRIP, 5, GL_UNSIGNED_SHORT, 0);
if (gl->GenVertexArrays)
gl->BindVertexArray (0);
- else
- _unbind_buffer (transformation);
+ _unbind_buffer (transformation);
gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context);
transformation->caps_change = FALSE;
diff --git a/ext/gtk/gtkgstglwidget.c b/ext/gtk/gtkgstglwidget.c
index e3d08ab3b..e780ebd38 100644
--- a/ext/gtk/gtkgstglwidget.c
+++ b/ext/gtk/gtkgstglwidget.c
@@ -191,8 +191,7 @@ _redraw_texture (GtkGstGLWidget * gst_widget, guint tex)
if (gl->BindVertexArray)
gl->BindVertexArray (priv->vao);
- else
- gtk_gst_gl_widget_bind_buffer (gst_widget);
+ gtk_gst_gl_widget_bind_buffer (gst_widget);
gl->ActiveTexture (GL_TEXTURE0);
gl->BindTexture (GL_TEXTURE_2D, tex);
@@ -202,8 +201,7 @@ _redraw_texture (GtkGstGLWidget * gst_widget, guint tex)
if (gl->BindVertexArray)
gl->BindVertexArray (0);
- else
- gtk_gst_gl_widget_unbind_buffer (gst_widget);
+ gtk_gst_gl_widget_unbind_buffer (gst_widget);
gl->BindTexture (GL_TEXTURE_2D, 0);
}