[Mesa-dev] [PATCH kmscube 1/2] gst-decoder.c: set EGL_DMA_BUF attributes upon variable declaration
Emil Velikov
emil.l.velikov at gmail.com
Tue May 2 14:27:20 UTC 2017
On 2 May 2017 at 14:58, Rob Clark <robdclark at gmail.com> wrote:
> On Tue, May 2, 2017 at 9:32 AM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>> From: Emil Velikov <emil.velikov at collabora.com>
>>
>> Makes the code shorter and more explicit.
>>
>> Cc: Carlos Rafael Giani <dv at pseudoterminal.org>
>> Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
>> ---
>> Worth moving the plane[i] bits as well?
>>
>> The loop guard for the close() looks a big funky.
>>
>> Carlos, care to throw a comment why it's using nmem and not something
>> else - say is_dmabuf_mem?
>> ---
>> gst-decoder.c | 31 +++++++++++--------------------
>> 1 file changed, 11 insertions(+), 20 deletions(-)
>>
>> diff --git a/gst-decoder.c b/gst-decoder.c
>> index deffad5..dd2a6fa 100644
>> --- a/gst-decoder.c
>> +++ b/gst-decoder.c
>> @@ -368,22 +368,6 @@ buffer_to_image(struct decoder *dec, GstBuffer *buf)
>> GstMemory *mem;
>> int dmabuf_fd = -1;
>>
>> - static const EGLint egl_dmabuf_plane_fd_attr[MAX_NUM_PLANES] = {
>> - EGL_DMA_BUF_PLANE0_FD_EXT,
>> - EGL_DMA_BUF_PLANE1_FD_EXT,
>> - EGL_DMA_BUF_PLANE2_FD_EXT,
>> - };
>> - static const EGLint egl_dmabuf_plane_offset_attr[MAX_NUM_PLANES] = {
>> - EGL_DMA_BUF_PLANE0_OFFSET_EXT,
>> - EGL_DMA_BUF_PLANE1_OFFSET_EXT,
>> - EGL_DMA_BUF_PLANE2_OFFSET_EXT,
>> - };
>> - static const EGLint egl_dmabuf_plane_pitch_attr[MAX_NUM_PLANES] = {
>> - EGL_DMA_BUF_PLANE0_PITCH_EXT,
>> - EGL_DMA_BUF_PLANE1_PITCH_EXT,
>> - EGL_DMA_BUF_PLANE2_PITCH_EXT,
>> - };
>> -
>> /* Query gst_is_dmabuf_memory() here, since the gstmemory
>> * block might get merged below by gst_buffer_map(), meaning
>> * that the mem pointer would become invalid */
>> @@ -464,18 +448,25 @@ buffer_to_image(struct decoder *dec, GstBuffer *buf)
>> {
>> /* Initialize the first 6 attributes with values that are
>> * plane invariant (width, height, format) */
>> - EGLint attr[6 + 6*(MAX_NUM_PLANES) + 1] = {
>> + EGLint attr[] = {
>> EGL_WIDTH, width,
>> EGL_HEIGHT, height,
>> EGL_LINUX_DRM_FOURCC_EXT, dec->format
>> + EGL_DMA_BUF_PLANE0_FD_EXT, -1,
>> + EGL_DMA_BUF_PLANE0_OFFSET_EXT, -1,
>> + EGL_DMA_BUF_PLANE0_PITCH_EXT, -1,
>> + EGL_DMA_BUF_PLANE1_FD_EXT, -1,
>> + EGL_DMA_BUF_PLANE1_OFFSET_EXT, -1,
>> + EGL_DMA_BUF_PLANE1_PITCH_EXT, -1,
>> + EGL_DMA_BUF_PLANE2_FD_EXT, -1,
>> + EGL_DMA_BUF_PLANE2_OFFSET_EXT, -1,
>> + EGL_DMA_BUF_PLANE2_PITCH_EXT, -1,
>> + EGL_NONE,
>
> hmm, I guess this works because we still patch in EGL_NONE below.. but
> it is funny looking considering that it is an error to specify
> EGL_DMA_BUF_PLANE{1,2}_* with a single plane fourcc. (But spec
> doesn't appear to specify what happens if you give
> EGL_DMA_BUF_PLANE2_* with a dual-plane format.. it's kinda funny that
> way)
>
One will either use the whole [3 plane] information set or trim [via
EGL_NONE] as applicable.
Not sure how any of that reads funny ... guess I'm just special ;-)
-Emil
More information about the mesa-dev
mailing list