mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-01 06:01:04 +00:00
eglimage: Fail exportation if a modififer is used
We don't support modififers and that would result in bad image being displayed. Note that this was fixes recently in Mesa MR 1138, prior to that, the reported modifier is always 0, which makes this change a no-op. Fixes #441 Related to https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1338
This commit is contained in:
parent
747ae7d769
commit
976e7e4e3d
1 changed files with 11 additions and 1 deletions
|
@ -995,6 +995,8 @@ gst_egl_image_export_dmabuf (GstEGLImage * image, int *fd, gint * stride,
|
||||||
int egl_fd = 0;
|
int egl_fd = 0;
|
||||||
EGLint egl_stride = 0;
|
EGLint egl_stride = 0;
|
||||||
EGLint egl_offset = 0;
|
EGLint egl_offset = 0;
|
||||||
|
int fourcc;
|
||||||
|
EGLuint64KHR modifier;
|
||||||
|
|
||||||
gst_eglExportDMABUFImageQueryMESA =
|
gst_eglExportDMABUFImageQueryMESA =
|
||||||
gst_gl_context_get_proc_address (image->context,
|
gst_gl_context_get_proc_address (image->context,
|
||||||
|
@ -1020,13 +1022,21 @@ gst_egl_image_export_dmabuf (GstEGLImage * image, int *fd, gint * stride,
|
||||||
gst_object_unref (display_egl);
|
gst_object_unref (display_egl);
|
||||||
|
|
||||||
if (!gst_eglExportDMABUFImageQueryMESA (egl_display, image->image,
|
if (!gst_eglExportDMABUFImageQueryMESA (egl_display, image->image,
|
||||||
NULL, &num_planes, NULL))
|
&fourcc, &num_planes, &modifier))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* Don't allow multi-plane dmabufs */
|
/* Don't allow multi-plane dmabufs */
|
||||||
if (num_planes > 1)
|
if (num_planes > 1)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (image->context, "Export DMABuf with fourcc %"
|
||||||
|
GST_FOURCC_FORMAT " and modififers %" G_GUINT64_FORMAT,
|
||||||
|
GST_FOURCC_ARGS (fourcc), modifier);
|
||||||
|
|
||||||
|
/* FIXME We don't support modifiers */
|
||||||
|
if (modifier != DRM_FORMAT_MOD_LINEAR)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (!gst_eglExportDMABUFImageMESA (egl_display, image->image, &egl_fd,
|
if (!gst_eglExportDMABUFImageMESA (egl_display, image->image, &egl_fd,
|
||||||
&egl_stride, &egl_offset))
|
&egl_stride, &egl_offset))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
Loading…
Reference in a new issue