diff options
author | Matthew Waters <matthew@centricular.com> | 2017-03-14 14:15:00 +1100 |
---|---|---|
committer | Matthew Waters <matthew@centricular.com> | 2017-03-14 14:15:00 +1100 |
commit | efc015f27deca351e4f7cca1ebf6bc23bad6fd71 (patch) | |
tree | c4eff99ce3b74cabcf0def88e8a2c0f2b2d4da1f /ext | |
parent | b01ae6e5e69bd04763b6b75cc978d0d9874514bc (diff) | |
download | gstreamer-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.m | 6 | ||||
-rw-r--r-- | ext/gl/gltestsrc.c | 6 | ||||
-rw-r--r-- | ext/gl/gstglfiltercube.c | 6 | ||||
-rw-r--r-- | ext/gl/gstglimagesink.c | 6 | ||||
-rw-r--r-- | ext/gl/gstgloverlay.c | 10 | ||||
-rw-r--r-- | ext/gl/gstgltransformation.c | 10 | ||||
-rw-r--r-- | ext/gtk/gtkgstglwidget.c | 6 |
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); } |