Skip to content

glupload: Add formats supported by #GstGLMemory to raw caps when generating sink pad caps

After glupload determines the upload method, if there are upstream elements that need to renegotiate caps, the negotiation may fail.

Because the src caps may only contain RGBA format, which will cause the raw caps in sink caps (transformed by src caps) also only contain RGBA format. However, the filter caps used for negotiation may be other formats.

The specific gst log is as follows:

/* filter caps provided by upstream elements */
basetransform gstbasetransform.c:642:gst_base_transform_query_caps:<gluploadelement0:sink>[00m filter caps  video/x-raw, format=(string)xBGR, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)sRGB, framerate=(fraction)[ 0/1, 2147483647/1 ]
basetransform gstbasetransform.c:645:gst_base_transform_query_caps:<gluploadelement0:sink>[00m our template  video/x-raw(memory:DMABuf, meta:GstVideoOverlayComposition), format=(string)DMA_DRM, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, GBRA, GBR, RGBP, BGRP, RGB, BGR, RGB16, BGR16, AYUV, VUYA, A444, A422, Y410, I420, YV12, NV12, NV21, NV16, NV61, YUY2, UYVY, Y210, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE, ARGB64, A420, AV12, NV12_16L32S, NV12_4L4, RBGA, RGBA64_LE, BGR10A2_LE, RGB10A2_LE, P010_10LE, P012_LE, P016_LE, Y212_LE, Y412_LE, A444_16LE, A422_16LE, A420_16LE, A444_12LE, A422_12LE, A420_12LE, A420_10LE, A422_10LE, A444_10LE, I420_12LE, I420_10LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, GBRA, GBR, RGBP, BGRP, RGB, BGR, RGB16, BGR16, AYUV, VUYA, A444, A422, Y410, I420, YV12, NV12, NV21, NV16, NV61, YUY2, UYVY, Y210, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE, ARGB64, A420, AV12, NV12_16L32S, NV12_4L4, RBGA, RGBA64_LE, BGR10A2_LE, RGB10A2_LE, P010_10LE, P012_LE, P016_LE, Y212_LE, Y412_LE, A444_16LE, A422_16LE, A420_16LE, A444_12LE, A422_12LE, A420_12LE, A420_10LE, A422_10LE, A444_10LE, I420_12LE, I420_10LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:DMABuf), format=(string)DMA_DRM, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, GBRA, GBR, RGBP, BGRP, RGB, BGR, RGB16, BGR16, AYUV, VUYA, A444, A422, Y410, I420, YV12, NV12, NV21, NV16, NV61, YUY2, UYVY, Y210, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE, ARGB64, A420, AV12, NV12_16L32S, NV12_4L4, RBGA, RGBA64_LE, BGR10A2_LE, RGB10A2_LE, P010_10LE, P012_LE, P016_LE, Y212_LE, Y412_LE, A444_16LE, A422_16LE, A420_16LE, A444_12LE, A422_12LE, A420_12LE, A420_10LE, A422_10LE, A444_10LE, I420_12LE, I420_10LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, GBRA, GBR, RGBP, BGRP, RGB, BGR, RGB16, BGR16, AYUV, VUYA, A444, A422, Y410, I420, YV12, NV12, NV21, NV16, NV61, YUY2, UYVY, Y210, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE, ARGB64, A420, AV12, NV12_16L32S, NV12_4L4, RBGA, RGBA64_LE, BGR10A2_LE, RGB10A2_LE, P010_10LE, P012_LE, P016_LE, Y212_LE, Y412_LE, A444_16LE, A422_16LE, A420_16LE, A444_12LE, A422_12LE, A420_12LE, A420_10LE, A422_10LE, A444_10LE, I420_12LE, I420_10LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
basetransform gstbasetransform.c:647:gst_base_transform_query_caps:<gluploadelement0:sink>[00m intersected video/x-raw, format=(string)xBGR, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)sRGB, framerate=(fraction)[ 0/1, 2147483647/1 ]

/* transform filter sink caps to src caps that glupload can output */
/* from caps (sink): video/x-raw, format=(string)xBGR */
/*   to caps (src) : video/x-raw(memory:GLMemory), format=(string)RGBA */
basetransform gstbasetransform.c:471:gst_base_transform_transform_caps:<gluploadelement0>[00m transform caps (direction = 2)
basetransform gstbasetransform.c:473:gst_base_transform_transform_caps:<gluploadelement0>[00m from: video/x-raw, format=(string)xBGR, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)sRGB, framerate=(fraction)[ 0/1, 2147483647/1 ]
     glupload gstglupload.c:2058:_direct_dma_buf_upload_transform_caps:<glupload0>[00m direction sink, transformed video/x-raw, format=(string)xBGR, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)sRGB, framerate=(fraction)[ 0/1, 2147483647/1 ] into video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D
basetransform gstbasetransform.c:475:gst_base_transform_transform_caps:<gluploadelement0>[00m   to: video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D
basetransform gstbasetransform.c:498:gst_base_transform_transform_caps:<gluploadelement0>[00m to: video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D

/* glupload query peerpad caps */
basetransform gstbasetransform.c:652:gst_base_transform_query_caps:<gluploadelement0:sink>[00m transformed  video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D
basetransform gstbasetransform.c:658:gst_base_transform_query_caps:<gluploadelement0:sink>[00m our template  video/x-raw(ANY)
basetransform gstbasetransform.c:663:gst_base_transform_query_caps:<gluploadelement0:sink>[00m intersected video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D
basetransform gstbasetransform.c:678:gst_base_transform_query_caps:<gluploadelement0:sink>[00m peer filter caps video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D
... ...
basetransform gstbasetransform.c:687:gst_base_transform_query_caps:<gluploadelement0:sink>[00m peer caps  video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D
basetransform gstbasetransform.c:690:gst_base_transform_query_caps:<gluploadelement0:sink>[00m our template  video/x-raw(ANY)
basetransform gstbasetransform.c:692:gst_base_transform_query_caps:<gluploadelement0:sink>[00m intersected video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D

/* transform src caps to sink caps */
/* from caps (src): video/x-raw(memory:GLMemory), format=(string)RGBA */
/*   to caps (sink) : video/x-raw(memory:DMABuf), format=(string)DMA_DRM
                     video/x-raw, format=(string)RGBA
*/
basetransform gstbasetransform.c:471:gst_base_transform_transform_caps:<gluploadelement0>[00m transform caps (direction = 1)
basetransform gstbasetransform.c:473:gst_base_transform_transform_caps:<gluploadelement0>[00m from: video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D
     glupload gstglupload.c:2058:_direct_dma_buf_upload_transform_caps:<glupload0>[00m direction src, transformed video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D into video/x-raw(memory:DMABuf), format=(string)DMA_DRM, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], drm-format=(string){ AB24, AB24:0x0800000000000041, AB24:0x0800000000000051, AB24:0x0800000000000061, AB24:0x0800000000000071, AB24:0x0800000000000341, AB24:0x0800000000000351, AB24:0x0800000000000361, AB24:0x0800000000000371, AB24:0x0800000000000841, AB24:0x0800000000000851, AB24:0x0800000000000861, AB24:0x0800000000000871, AB24:0x0800000000000b41, AB24:0x0800000000000b51, AB24:0x0800000000000b61, AB24:0x0800000000000b71, AB24:0x0800000000001041, AB24:0x0800000000001051, AB24:0x0800000000001061, AB24:0x0800000000001071, AB24:0x0800000000001341, AB24:0x0800000000001351, AB24:0x0800000000001361, AB24:0x0800000000001371, AB24:0x0800000000001841, AB24:0x0800000000001851, AB24:0x0800000000001861, AB24:0x0800000000001871, AB24:0x0800000000001b41, AB24:0x0800000000001b51, AB24:0x0800000000001b61, AB24:0x0800000000001b71, AB24:0x0800000000000062, AB24:0x0800000000000072, AB24:0x0800000000000362, AB24:0x0800000000000372, AB24:0x0800000000000862, AB24:0x0800000000000872, AB24:0x0800000000000b62, AB24:0x0800000000000b72, AB24:0x0800000000001062, AB24:0x0800000000001072, AB24:0x0800000000001362, AB24:0x0800000000001372, AB24:0x0800000000001862, AB24:0x0800000000001872, AB24:0x0800000000001b62, AB24:0x0800000000001b72, AR24, XB24, XB24:0x0800000000000041, XB24:0x0800000000000051, XB24:0x0800000000000061, XB24:0x0800000000000071, XB24:0x0800000000000341, XB24:0x0800000000000351, XB24:0x0800000000000361, XB24:0x0800000000000371, XB24:0x0800000000001041, XB24:0x0800000000001051, XB24:0x0800000000001061, XB24:0x0800000000001071, XB24:0x0800000000001341, XB24:0x0800000000001351, XB24:0x0800000000001361, XB24:0x0800000000001371, XB24:0x0800000000000062, XB24:0x0800000000000072, XB24:0x0800000000000362, XB24:0x0800000000000372, XB24:0x0800000000001062, XB24:0x0800000000001072, XB24:0x0800000000001362, XB24:0x0800000000001372, XR24, BA24, RA24, BX24, RX24, BG24, BG24:0x0800000000000041, BG24:0x0800000000000051, BG24:0x0800000000000061, BG24:0x0800000000000071, BG24:0x0800000000000341, BG24:0x0800000000000351, BG24:0x0800000000000361, BG24:0x0800000000000371, BG24:0x0800000000001041, BG24:0x0800000000001051, BG24:0x0800000000001061, BG24:0x0800000000001071, BG24:0x0800000000001341, BG24:0x0800000000001351, BG24:0x0800000000001361, BG24:0x0800000000001371, BG24:0x0800000000000062, BG24:0x0800000000000072, BG24:0x0800000000000362, BG24:0x0800000000000372, BG24:0x0800000000001062, BG24:0x0800000000001072, BG24:0x0800000000001362, BG24:0x0800000000001372, RG24, RG16, BG16, BG16:0x0800000000000041, BG16:0x0800000000000051, BG16:0x0800000000000061, BG16:0x0800000000000071, BG16:0x0800000000000341, BG16:0x0800000000000351, BG16:0x0800000000000361, BG16:0x0800000000000371, BG16:0x0800000000001041, BG16:0x0800000000001051, BG16:0x0800000000001061, BG16:0x0800000000001071, BG16:0x0800000000001341, BG16:0x0800000000001351, BG16:0x0800000000001361, BG16:0x0800000000001371, BG16:0x0800000000000042, BG16:0x0800000000000052, BG16:0x0800000000000342, BG16:0x0800000000000352 }; video/x-raw, format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ]
     glupload gstglupload.c:490:_gl_memory_upload_transform_caps:<glupload0>[00m direction src, transformed video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D into video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ]
     glupload gstglupload.c:2058:_direct_dma_buf_upload_transform_caps:<glupload0>[00m direction src, transformed video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D into video/x-raw(memory:DMABuf), format=(string)DMA_DRM, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], drm-format=(string){ AB24, AB24:0x0800000000000041, AB24:0x0800000000000051, AB24:0x0800000000000061, AB24:0x0800000000000071, AB24:0x0800000000000341, AB24:0x0800000000000351, AB24:0x0800000000000361, AB24:0x0800000000000371, AB24:0x0800000000000841, AB24:0x0800000000000851, AB24:0x0800000000000861, AB24:0x0800000000000871, AB24:0x0800000000000b41, AB24:0x0800000000000b51, AB24:0x0800000000000b61, AB24:0x0800000000000b71, AB24:0x0800000000001041, AB24:0x0800000000001051, AB24:0x0800000000001061, AB24:0x0800000000001071, AB24:0x0800000000001341, AB24:0x0800000000001351, AB24:0x0800000000001361, AB24:0x0800000000001371, AB24:0x0800000000001841, AB24:0x0800000000001851, AB24:0x0800000000001861, AB24:0x0800000000001871, AB24:0x0800000000001b41, AB24:0x0800000000001b51, AB24:0x0800000000001b61, AB24:0x0800000000001b71, AB24:0x0800000000000062, AB24:0x0800000000000072, AB24:0x0800000000000362, AB24:0x0800000000000372, AB24:0x0800000000000862, AB24:0x0800000000000872, AB24:0x0800000000000b62, AB24:0x0800000000000b72, AB24:0x0800000000001062, AB24:0x0800000000001072, AB24:0x0800000000001362, AB24:0x0800000000001372, AB24:0x0800000000001862, AB24:0x0800000000001872, AB24:0x0800000000001b62, AB24:0x0800000000001b72, AR24, XB24, XB24:0x0800000000000041, XB24:0x0800000000000051, XB24:0x0800000000000061, XB24:0x0800000000000071, XB24:0x0800000000000341, XB24:0x0800000000000351, XB24:0x0800000000000361, XB24:0x0800000000000371, XB24:0x0800000000001041, XB24:0x0800000000001051, XB24:0x0800000000001061, XB24:0x0800000000001071, XB24:0x0800000000001341, XB24:0x0800000000001351, XB24:0x0800000000001361, XB24:0x0800000000001371, XB24:0x0800000000000062, XB24:0x0800000000000072, XB24:0x0800000000000362, XB24:0x0800000000000372, XB24:0x0800000000001062, XB24:0x0800000000001072, XB24:0x0800000000001362, XB24:0x0800000000001372, XR24, BA24, RA24, BX24, RX24, BG24, BG24:0x0800000000000041, BG24:0x0800000000000051, BG24:0x0800000000000061, BG24:0x0800000000000071, BG24:0x0800000000000341, BG24:0x0800000000000351, BG24:0x0800000000000361, BG24:0x0800000000000371, BG24:0x0800000000001041, BG24:0x0800000000001051, BG24:0x0800000000001061, BG24:0x0800000000001071, BG24:0x0800000000001341, BG24:0x0800000000001351, BG24:0x0800000000001361, BG24:0x0800000000001371, BG24:0x0800000000000062, BG24:0x0800000000000072, BG24:0x0800000000000362, BG24:0x0800000000000372, BG24:0x0800000000001062, BG24:0x0800000000001072, BG24:0x0800000000001362, BG24:0x0800000000001372, RG24, RG16, BG16, BG16:0x0800000000000041, BG16:0x0800000000000051, BG16:0x0800000000000061, BG16:0x0800000000000071, BG16:0x0800000000000341, BG16:0x0800000000000351, BG16:0x0800000000000361, BG16:0x0800000000000371, BG16:0x0800000000001041, BG16:0x0800000000001051, BG16:0x0800000000001061, BG16:0x0800000000001071, BG16:0x0800000000001341, BG16:0x0800000000001351, BG16:0x0800000000001361, BG16:0x0800000000001371, BG16:0x0800000000000042, BG16:0x0800000000000052, BG16:0x0800000000000342, BG16:0x0800000000000352 }; video/x-raw, format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ]
     glupload gstglupload.c:2044:_direct_dma_buf_upload_transform_caps:<glupload0>[00m direction src, fails to transformed DMA caps video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D
     glupload gstglupload.c:1447:_dma_buf_upload_transform_caps:<glupload0>[00m direction src, 
	        transformed video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D
	        into video/x-raw(memory:DMABuf), format=(string)DMA_DRM, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ], drm-format=(string)AB24; video/x-raw, format=(string)RGBA, width=(int)[ 64, 2147483647 ], height=(int)[ 64, 2147483647 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 0/1, 2147483647/1 ]

/* The intersection of sink caps and filter caps is empty, negotiation failed */
basetransform gstbasetransform.c:475:gst_base_transform_transform_caps:<gluploadelement0>[00m   to: EMPTY
basetransform gstbasetransform.c:498:gst_base_transform_transform_caps:<gluploadelement0>[00m to: EMPTY
basetransform gstbasetransform.c:700:gst_base_transform_query_caps:<gluploadelement0:sink>[00m transformed  EMPTY
basetransform gstbasetransform.c:734:gst_base_transform_query_caps:<gluploadelement0>[00m returning  EMPTY
... ...

So when glupload generate raw caps (on sink pad), need to add the formats supported by #GstGLMemory to raw caps to ensure that caps negotiation succeeds.

Merge request reports