mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 17:20:36 +00:00
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.
This commit is contained in:
parent
b01ae6e5e6
commit
efc015f27d
12 changed files with 26 additions and 62 deletions
|
@ -995,7 +995,6 @@ gst_ca_opengl_layer_sink_on_draw (GstCAOpenGLLayerSink * ca_sink)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (ca_sink->vao);
|
gl->BindVertexArray (ca_sink->vao);
|
||||||
else
|
|
||||||
_bind_buffer (ca_sink);
|
_bind_buffer (ca_sink);
|
||||||
|
|
||||||
gl->ActiveTexture (GL_TEXTURE0);
|
gl->ActiveTexture (GL_TEXTURE0);
|
||||||
|
@ -1006,7 +1005,6 @@ gst_ca_opengl_layer_sink_on_draw (GstCAOpenGLLayerSink * ca_sink)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (ca_sink);
|
_unbind_buffer (ca_sink);
|
||||||
|
|
||||||
/* end default opengl scene */
|
/* end default opengl scene */
|
||||||
|
|
|
@ -213,7 +213,6 @@ _src_shader_fill_bound_fbo (gpointer impl)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (src->vao);
|
gl->BindVertexArray (src->vao);
|
||||||
else
|
|
||||||
_bind_buffer (src);
|
_bind_buffer (src);
|
||||||
|
|
||||||
gl->DrawElements (GL_TRIANGLES, src->n_indices, GL_UNSIGNED_SHORT,
|
gl->DrawElements (GL_TRIANGLES, src->n_indices, GL_UNSIGNED_SHORT,
|
||||||
|
@ -221,7 +220,6 @@ _src_shader_fill_bound_fbo (gpointer impl)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (src);
|
_unbind_buffer (src);
|
||||||
|
|
||||||
gst_gl_context_clear_shader (src->base.context);
|
gst_gl_context_clear_shader (src->base.context);
|
||||||
|
|
|
@ -476,14 +476,12 @@ _callback (gpointer stuff)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (cube_filter->vao);
|
gl->BindVertexArray (cube_filter->vao);
|
||||||
else
|
|
||||||
_bind_buffer (cube_filter);
|
_bind_buffer (cube_filter);
|
||||||
|
|
||||||
gl->DrawElements (GL_TRIANGLES, 36, GL_UNSIGNED_SHORT, 0);
|
gl->DrawElements (GL_TRIANGLES, 36, GL_UNSIGNED_SHORT, 0);
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (cube_filter);
|
_unbind_buffer (cube_filter);
|
||||||
|
|
||||||
gl->Disable (GL_DEPTH_TEST);
|
gl->Disable (GL_DEPTH_TEST);
|
||||||
|
|
|
@ -2228,7 +2228,6 @@ gst_glimage_sink_on_draw (GstGLImageSink * gl_sink)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (gl_sink->vao);
|
gl->BindVertexArray (gl_sink->vao);
|
||||||
else
|
|
||||||
_bind_buffer (gl_sink);
|
_bind_buffer (gl_sink);
|
||||||
|
|
||||||
gl->ActiveTexture (GL_TEXTURE0);
|
gl->ActiveTexture (GL_TEXTURE0);
|
||||||
|
@ -2258,7 +2257,6 @@ gst_glimage_sink_on_draw (GstGLImageSink * gl_sink)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (gl_sink);
|
_unbind_buffer (gl_sink);
|
||||||
|
|
||||||
if (gl_sink->ignore_alpha)
|
if (gl_sink->ignore_alpha)
|
||||||
|
|
|
@ -522,9 +522,7 @@ gst_gl_overlay_callback (GstGLFilter * filter, GstGLMemory * in_tex,
|
||||||
GL_STATIC_DRAW);
|
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);
|
gl->BindTexture (GL_TEXTURE_2D, image_tex);
|
||||||
gst_gl_shader_set_uniform_1f (overlay->shader, "alpha", overlay->alpha);
|
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;
|
ret = TRUE;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (gl->GenVertexArrays) {
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
} else {
|
|
||||||
_unbind_buffer (overlay);
|
_unbind_buffer (overlay);
|
||||||
}
|
|
||||||
|
|
||||||
gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context);
|
gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context);
|
||||||
|
|
||||||
|
|
|
@ -960,18 +960,14 @@ gst_gl_transformation_callback (gpointer stuff)
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (transformation->vao);
|
gl->BindVertexArray (transformation->vao);
|
||||||
|
|
||||||
if (transformation->caps_change) {
|
if (transformation->caps_change)
|
||||||
_upload_vertices (transformation);
|
_upload_vertices (transformation);
|
||||||
_bind_buffer (transformation);
|
_bind_buffer (transformation);
|
||||||
} else if (!gl->GenVertexArrays) {
|
|
||||||
_bind_buffer (transformation);
|
|
||||||
}
|
|
||||||
|
|
||||||
gl->DrawElements (GL_TRIANGLE_STRIP, 5, GL_UNSIGNED_SHORT, 0);
|
gl->DrawElements (GL_TRIANGLE_STRIP, 5, GL_UNSIGNED_SHORT, 0);
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (transformation);
|
_unbind_buffer (transformation);
|
||||||
|
|
||||||
gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context);
|
gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context);
|
||||||
|
|
|
@ -191,7 +191,6 @@ _redraw_texture (GtkGstGLWidget * gst_widget, guint tex)
|
||||||
|
|
||||||
if (gl->BindVertexArray)
|
if (gl->BindVertexArray)
|
||||||
gl->BindVertexArray (priv->vao);
|
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->ActiveTexture (GL_TEXTURE0);
|
||||||
|
@ -202,7 +201,6 @@ _redraw_texture (GtkGstGLWidget * gst_widget, guint tex)
|
||||||
|
|
||||||
if (gl->BindVertexArray)
|
if (gl->BindVertexArray)
|
||||||
gl->BindVertexArray (0);
|
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);
|
gl->BindTexture (GL_TEXTURE_2D, 0);
|
||||||
|
|
|
@ -2476,7 +2476,6 @@ _do_convert_draw (GstGLContext * context, GstGLColorConvert * convert)
|
||||||
|
|
||||||
if (gl->BindVertexArray)
|
if (gl->BindVertexArray)
|
||||||
gl->BindVertexArray (convert->priv->vao);
|
gl->BindVertexArray (convert->priv->vao);
|
||||||
else
|
|
||||||
_bind_buffer (convert);
|
_bind_buffer (convert);
|
||||||
|
|
||||||
for (i = c_info->in_n_textures - 1; i >= 0; i--) {
|
for (i = c_info->in_n_textures - 1; i >= 0; i--) {
|
||||||
|
@ -2501,7 +2500,6 @@ _do_convert_draw (GstGLContext * context, GstGLColorConvert * convert)
|
||||||
|
|
||||||
if (gl->BindVertexArray)
|
if (gl->BindVertexArray)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (convert);
|
_unbind_buffer (convert);
|
||||||
|
|
||||||
if (gl->DrawBuffer)
|
if (gl->DrawBuffer)
|
||||||
|
|
|
@ -1203,26 +1203,16 @@ gst_gl_filter_draw_fullscreen_quad (GstGLFilter * filter)
|
||||||
gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, filter->vbo_indices);
|
gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, filter->vbo_indices);
|
||||||
gl->BufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (indices), indices,
|
gl->BufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (indices), indices,
|
||||||
GL_STATIC_DRAW);
|
GL_STATIC_DRAW);
|
||||||
|
|
||||||
if (gl->GenVertexArrays) {
|
|
||||||
_bind_buffer (filter);
|
|
||||||
gl->BindVertexArray (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
gl->BindBuffer (GL_ARRAY_BUFFER, 0);
|
|
||||||
gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (filter->vao);
|
gl->BindVertexArray (filter->vao);
|
||||||
else
|
|
||||||
_bind_buffer (filter);
|
_bind_buffer (filter);
|
||||||
|
|
||||||
gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
|
gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (filter);
|
_unbind_buffer (filter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1923,7 +1923,6 @@ _do_view_convert_draw (GstGLContext * context, GstGLViewConvert * viewconvert)
|
||||||
|
|
||||||
if (gl->BindVertexArray)
|
if (gl->BindVertexArray)
|
||||||
gl->BindVertexArray (priv->vao);
|
gl->BindVertexArray (priv->vao);
|
||||||
else
|
|
||||||
_bind_buffer (viewconvert);
|
_bind_buffer (viewconvert);
|
||||||
|
|
||||||
if (in_mode == GST_VIDEO_MULTIVIEW_MODE_SEPARATED ||
|
if (in_mode == GST_VIDEO_MULTIVIEW_MODE_SEPARATED ||
|
||||||
|
@ -1944,7 +1943,6 @@ _do_view_convert_draw (GstGLContext * context, GstGLViewConvert * viewconvert)
|
||||||
|
|
||||||
if (gl->BindVertexArray)
|
if (gl->BindVertexArray)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (viewconvert);
|
_unbind_buffer (viewconvert);
|
||||||
if (gl->DrawBuffer)
|
if (gl->DrawBuffer)
|
||||||
gl->DrawBuffer (GL_NONE);
|
gl->DrawBuffer (GL_NONE);
|
||||||
|
|
|
@ -239,14 +239,12 @@ blit_tex (gpointer data)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (vao);
|
gl->BindVertexArray (vao);
|
||||||
else
|
|
||||||
_bind_buffer (context);
|
_bind_buffer (context);
|
||||||
|
|
||||||
gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
|
gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (context);
|
_unbind_buffer (context);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -237,7 +237,6 @@ blit_tex (gpointer data)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (vao);
|
gl->BindVertexArray (vao);
|
||||||
else
|
|
||||||
_bind_buffer (context);
|
_bind_buffer (context);
|
||||||
|
|
||||||
gl->ActiveTexture (GL_TEXTURE0);
|
gl->ActiveTexture (GL_TEXTURE0);
|
||||||
|
@ -248,7 +247,6 @@ blit_tex (gpointer data)
|
||||||
|
|
||||||
if (gl->GenVertexArrays)
|
if (gl->GenVertexArrays)
|
||||||
gl->BindVertexArray (0);
|
gl->BindVertexArray (0);
|
||||||
else
|
|
||||||
_unbind_buffer (context);
|
_unbind_buffer (context);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in a new issue