diff options
Diffstat (limited to 'recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0026-glframebuffer-check-frame-buffer-status-need-use-spe.patch')
-rw-r--r-- | recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0026-glframebuffer-check-frame-buffer-status-need-use-spe.patch | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0026-glframebuffer-check-frame-buffer-status-need-use-spe.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0026-glframebuffer-check-frame-buffer-status-need-use-spe.patch new file mode 100644 index 0000000..9d3f569 --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0026-glframebuffer-check-frame-buffer-status-need-use-spe.patch @@ -0,0 +1,132 @@ +From bf7eb6a0725daf770dc68503216d7cd8e1e314c4 Mon Sep 17 00:00:00 2001 +From: Haihua Hu <jared.hu@nxp.com> +Date: Thu, 25 May 2017 10:09:04 +0800 +Subject: [PATCH 25/26] glframebuffer: check frame buffer status need use + specific fbo target + +Upstream-Status: Pending +https://bugzilla.gnome.org/show_bug.cgi?id=783065 +--- + ext/qt/qtwindow.cc | 4 ++-- + gst-libs/gst/gl/gstglcolorconvert.c | 2 +- + gst-libs/gst/gl/gstglframebuffer.c | 10 ++++++++-- + gst-libs/gst/gl/gstglframebuffer.h | 3 ++- + gst-libs/gst/gl/gstglmemory.c | 8 ++++---- + 5 files changed, 17 insertions(+), 10 deletions(-) + +diff --git a/ext/qt/qtwindow.cc b/ext/qt/qtwindow.cc +index 92c5834..6f1df7e 100644 +--- a/ext/qt/qtwindow.cc ++++ b/ext/qt/qtwindow.cc +@@ -217,7 +217,7 @@ QtGLWindow::afterRendering() + + gl->BindFramebuffer (GL_READ_FRAMEBUFFER, this->source->renderTargetId()); + +- ret = gst_gl_context_check_framebuffer_status (context); ++ ret = gst_gl_context_check_framebuffer_status (context, GL_READ_FRAMEBUFFER); + if (!ret) { + GST_ERROR ("FBO errors"); + goto errors; +@@ -233,7 +233,7 @@ QtGLWindow::afterRendering() + gl->FramebufferTexture2D (GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_TEXTURE_2D, dst_tex, 0); + +- ret = gst_gl_context_check_framebuffer_status (context); ++ ret = gst_gl_context_check_framebuffer_status (context, GL_DRAW_FRAMEBUFFER); + if (!ret) { + GST_ERROR ("FBO errors"); + goto errors; +diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c +index adf5a6e..45d2d32 100644 +--- a/gst-libs/gst/gl/gstglcolorconvert.c ++++ b/gst-libs/gst/gl/gstglcolorconvert.c +@@ -2516,7 +2516,7 @@ _do_convert_draw (GstGLContext * context, GstGLColorConvert * convert) + gl->Viewport (viewport_dim[0], viewport_dim[1], viewport_dim[2], + viewport_dim[3]); + +- if (!gst_gl_context_check_framebuffer_status (context)) ++ if (!gst_gl_context_check_framebuffer_status (context, GL_FRAMEBUFFER)) + ret = FALSE; + + gst_gl_context_clear_framebuffer (context); +diff --git a/gst-libs/gst/gl/gstglframebuffer.c b/gst-libs/gst/gl/gstglframebuffer.c +index f628997..7dc9727 100644 +--- a/gst-libs/gst/gl/gstglframebuffer.c ++++ b/gst-libs/gst/gl/gstglframebuffer.c +@@ -507,11 +507,17 @@ gst_gl_framebuffer_get_effective_dimensions (GstGLFramebuffer * fb, + * Since: 1.10 + */ + gboolean +-gst_gl_context_check_framebuffer_status (GstGLContext * context) ++gst_gl_context_check_framebuffer_status (GstGLContext * context, GLenum fbo_target) + { + g_return_val_if_fail (GST_IS_GL_CONTEXT (context), FALSE); + +- switch (context->gl_vtable->CheckFramebufferStatus (GL_FRAMEBUFFER)) { ++ if (fbo_target != GL_FRAMEBUFFER && fbo_target != GL_READ_FRAMEBUFFER ++ && fbo_target != GL_DRAW_FRAMEBUFFER) { ++ GST_ERROR_OBJECT (context, "fbo target is invalid"); ++ return FALSE; ++ } ++ ++ switch (context->gl_vtable->CheckFramebufferStatus (fbo_target)) { + case GL_FRAMEBUFFER_COMPLETE: + return TRUE; + break; +diff --git a/gst-libs/gst/gl/gstglframebuffer.h b/gst-libs/gst/gl/gstglframebuffer.h +index 297a71e..172f999 100644 +--- a/gst-libs/gst/gl/gstglframebuffer.h ++++ b/gst-libs/gst/gl/gstglframebuffer.h +@@ -103,7 +103,8 @@ void gst_gl_framebuffer_get_effective_dimensions (GstGLFrameb + guint * height); + + GST_EXPORT +-gboolean gst_gl_context_check_framebuffer_status (GstGLContext * context); ++gboolean gst_gl_context_check_framebuffer_status (GstGLContext * context, ++ GLenum fbo_target); + + GST_EXPORT + gboolean gst_gl_framebuffer_draw_to_texture (GstGLFramebuffer * fb, +diff --git a/gst-libs/gst/gl/gstglmemory.c b/gst-libs/gst/gl/gstglmemory.c +index 343a859..0cda68b 100644 +--- a/gst-libs/gst/gl/gstglmemory.c ++++ b/gst-libs/gst/gl/gstglmemory.c +@@ -373,7 +373,7 @@ gst_gl_memory_read_pixels (GstGLMemory * gl_mem, gpointer read_pointer) + gl->FramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + gst_gl_texture_target_to_gl (gl_mem->tex_target), gl_mem->tex_id, 0); + +- if (!gst_gl_context_check_framebuffer_status (context)) { ++ if (!gst_gl_context_check_framebuffer_status (context, GL_FRAMEBUFFER)) { + GST_CAT_WARNING (GST_CAT_GL_MEMORY, + "Could not create framebuffer to read pixels for memory %p", gl_mem); + gl->DeleteFramebuffers (1, &fbo); +@@ -682,7 +682,7 @@ gst_gl_memory_copy_teximage (GstGLMemory * src, guint tex_id, + gl->FramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + gst_gl_texture_target_to_gl (src->tex_target), src_tex_id, 0); + +- if (!gst_gl_context_check_framebuffer_status (src->mem.context)) ++ if (!gst_gl_context_check_framebuffer_status (src->mem.context, GL_FRAMEBUFFER)) + goto fbo_error; + + gl->BindTexture (out_tex_target, tex_id); +@@ -711,7 +711,7 @@ gst_gl_memory_copy_teximage (GstGLMemory * src, guint tex_id, + gl->FramebufferTexture2D (GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + gst_gl_texture_target_to_gl (src->tex_target), src_tex_id, 0); + +- if (!gst_gl_context_check_framebuffer_status (src->mem.context)) ++ if (!gst_gl_context_check_framebuffer_status (src->mem.context, GL_READ_FRAMEBUFFER)) + goto fbo_error; + + gl->BindFramebuffer (GL_DRAW_FRAMEBUFFER, fbo[1]); +@@ -719,7 +719,7 @@ gst_gl_memory_copy_teximage (GstGLMemory * src, guint tex_id, + gl->FramebufferTexture2D (GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + gst_gl_texture_target_to_gl (src->tex_target), tex_id, 0); + +- if (!gst_gl_context_check_framebuffer_status (src->mem.context)) ++ if (!gst_gl_context_check_framebuffer_status (src->mem.context, GL_DRAW_FRAMEBUFFER)) + goto fbo_error; + + gl->BindTexture (out_tex_target, tex_id); +-- +1.9.1 + |