Hi Volker, On 9 May 2017 at 12:32, Volker Vogelhuber <v.vogelhu...@digitalendoscopy.de> wrote: > On 09.05.2017 12:59, Philipp Zabel wrote: >> You create two separate EGLImages, calling eglCreateImage once for each >> plane. See for example: >> >> https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/gl/gstglupload.c#n646 >> >> or >> >> https://cgit.freedesktop.org/wayland/weston/tree/libweston/gl-renderer.c#n1536 > > That assumes I have two planes available. But as mentioned the planes > are created internally by dri2_create_image_dma_buf during my call of > eglCreateImage. > So from the API point of view I only have one FD from the V4L2 buffer that > is of type > FOURCC('Y','U','Y','V'). Passing that FD to eglCreateImage returns only one > EGLImage. > Although understanding gstreamer code is always a bit hard, I think in their > case they have > a mulit plane V4L2 buffer, where I only have a single plane buffer.
What Philipp is suggesting is that you import the same plane to an EGLImage twice: once as DRM_FORMAT_RG8 and once as DRM_FORMAT_ARGB8888. This gives you two EGLImages, which you bind to two separate texture units / samplers: you sample the Y channel from the DRM_FORMAT_RG8 image (ignoring the other channel), and you sample the U and V channels from the DRM_FORMAT_ARGB8888 image (ignoring the other two channels). This is what GStreamer and Weston do when confronted with such a buffer, and it does work. > That's why I wonder if there is a way to retrieve the "second" EGLImage > after eglCreateImage > has been called for the single V4L2 DMABUF file descriptor. There is not a way to do this. Cheers, Daniel _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev