Robert Mader
b687b9527b
glupload: Add DRM raw uploader
...
The goal is equivalent to adding DMA_DRM caps to the existing raw
uploader, but creating a new dedicated uploader allows separating the
logic more easily.
Test:
- use an AMD system
- modprobe visl
- gst-launch-1.0 filesrc location=some-1080p-content.mkv ! parsebin ! v4l2slh265dec ! glimagesink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8126 >
2024-12-18 22:31:02 +00:00
Guillaume Desmottes
a29591978b
gl: raise WARNING instead of ERROR when no connector is connected
...
This is a valid and working use case when rendering on a headless
server.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8136 >
2024-12-12 10:43:26 +01:00
Nicolas Dufresne
6b6fb4c8b8
build: gl: Properly add sub-package to gst_libraries
...
GstGLEGL/Wayland/X11/Viv was actually never written into any of the gir_targets,
as a side effect, their gir was never copied into girs/ and not used to generate
the documentation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8061 >
2024-12-05 15:42:54 -05:00
Edward Hervey
acf1efbf8d
gl: Add missing Since marker
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8001 >
2024-11-29 08:44:30 +00:00
Philipp Zabel
f18d6fcb40
glupload/egl: Extract EGL image cache and make it public
...
Extract the EGLImage cache from gstglupload.c, place it in a separate
source file gsteglimagecache.c, and make the API public, so it can be
reused by the gldownload element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:28 -05:00
Jakub Adam
b7970a4d95
gldownload: enumerate emulated video formats
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:28 -05:00
Jakub Adam
1ef9f6ab26
glcontext/egl: Fix use of uninitialized memory
...
At least some Mesa drivers (see llvmpipe_query_dmabuf_modifiers()) don't
initialize the provided external_only array, so some format/modifier
combinations could get incorrectly marked as only external.
Make sure we zerofill the array before passing it to
eglQueryDmaBufModifiersEXT().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:28 -05:00
Jakub Adam
270e186311
glcontext_egl: add method to check if format supports a modifier
...
Makes _check_modifier from glupload reusable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:27 -05:00
Jakub Adam
d80477d769
glupload: make _dma_buf_transform_* functions public API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:27 -05:00
Jakub Adam
57f36ed9d9
glupload: rename GstGLUploadDrmFormatFlags -> GstGLDrmFormatFlags
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 13:46:08 -05:00
Nicolas Dufresne
9f707f6c64
glupload: dmabuf: Only pass padded size for indirect tiled handling
...
We only require out_info to hold on padded width/height when
using our internal detiling shaders. Doing so for direct upload
leads to the image being scaled down in a way that the padding
is displayed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849 >
2024-11-19 21:22:38 +00:00
Thibault Saunier
45806c4d66
gl: colorconvert: Add support for I422_10XX and I422_12XX
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7919 >
2024-11-19 12:39:01 +00:00
Nicolas Dufresne
000a7650fc
glupload: Upgrade uploader selection message to INFO
...
This allow using INFO log to quickly see what uploader we
picked. This is very useful as the DEBUG category has became
very noisy.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7891 >
2024-11-16 12:30:34 +00:00
Nicolas Dufresne
3c8b1427ca
glupload: dmabuf: Fix emulated tiled import
...
The added check for LINEAR modifier broke dmabuf import for
NV12 emulation (R8/RG88) of all sort (linear and tiled).
Fixes !5461
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7891 >
2024-11-16 12:30:34 +00:00
Thibault Saunier
6ed0d547a7
gl: colorconvert: Add support for Y444_10XX and Y444_16XX
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7858 >
2024-11-12 11:31:37 -03:00
Andoni Morales Alastruey
5a3dd943fe
cocoa: fix rendering artefacts in retina displays
...
Set the correct contentsScale in the CALayer instead of using
the default (1.0) which causes rendering artefacts in retina
displays due to using a smaller bitamp than the display size.
See: https://developer.apple.com/documentation/quartzcore/calayer/1410746-contentsscale?language=objc
Fix : #3942
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7828 >
2024-11-05 13:40:23 +00:00
Andreas Wittmann
41ad50fb48
qmlgloverlay: make depth buffer optional
...
allow dropping depth/stencil buffer for
qmlgloverlay element. Shows considerable
drop in memory bandwidth consumption of
the element on windows platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7677 >
2024-11-01 02:37:57 +00:00
Edward Hervey
38c07a2d01
all: Fix closure annotations
...
This was misused almost everywhere.
See
https://gi.readthedocs.io/en/latest/annotations/giannotations.html#support-for-gobject-closures
and: https://www.bassi.io/articles/2023/02/20/bindable-api-2023/
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7725 >
2024-10-25 08:58:29 +00:00
Scott Moreau
6846746a0e
gst-plugins-base: Set swap interval to 0 for wayland EGL windows
...
This allows the stream to drive the buffers submitted to the display server.
If the application does not receive frame events for a period of time due to
minimization or tty switch for example, instead of waiting to process and
then catching up when frame events resume, the stream will resume instantly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7691 >
2024-10-20 14:03:11 +00:00
Nicolas Dufresne
64c6ff97c4
glcontext: egl: Unrestrict the support base DRM formats
...
There is no requirement for a base DRM format to be supported by libgstvideo
in order to be uploaded to. Don't limite to DRM fourcc that have a libgstvideo
format mapping. This notably enabled AFBC support, which uses an opaque based
format that does not have a linear definition. This also adds R8/RG88 and
simimlar other formats that are not yet mapped in libgstvideo.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7689 >
2024-10-19 23:59:58 +00:00
Sebastian Dröge
b7b24573ce
common: Use more efficient versions of GstCapsFeatures API where possible
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:26:18 +03:00
Sebastian Dröge
3b9f050600
common: Stop using GQuark-based GstCapsFeatures API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Xavier Claessens
9a87ce418b
gl: Fix configure error when libdrm is a subproject
...
When libdrm is a subproject it cannot be used in a configure time check:
ERROR: Dependencies must be external dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7380 >
2024-09-03 13:13:04 +00:00
Chao Guo
cf30e875de
glupload: Add formats supported by #GstGLMemory to raw caps when generating sink pad caps
...
When glupload generates sink caps based on src caps after determining upload method, src
caps may only contain RGBA format.
In this case, the raw caps on the sink pad generated by glupload will only contain the
RGBA format, which will cause caps negotiation fail, because the filter caps used for
negotiation by the upstream element may only contain other formats, such as xBGR, etc.
Add the formats supported by #GstGLMemory to raw caps to ensure that caps negotiation
succeeds.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7061 >
2024-08-13 04:05:16 +00:00
Nicolas Dufresne
7bd5c5073f
glframebuffer: Improve error tracing
...
glCheckFrameStatus() can fail by returning 0, and otherwise return a
status. Fix the trace to make it clear when we get an unkown status
compare to having an error, in which case we also trace the error code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7291 >
2024-08-02 13:03:51 +00:00
Nicolas Dufresne
96a2408147
glcolorconvert: Fix syntax error in detiling shader
...
Mesa compiler complains of:
error: `rgba' redeclared
This regression got introduced by 674e643428
, which introduce
colormatrix computation without revoing the pre-declaration of
rgba variable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7231 >
2024-07-25 14:10:52 +00:00
Nirbheek Chauhan
6ce72488fa
Revert "meson: Fix invalid include flag in uninstalled gl pc file"
...
This reverts commit 9d719b9937
.
The old pkg-config implementation errors out if a variable specified
in the pkgconfig file is not defined, so this actually broke
uninstalled pc files.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7191 >
2024-07-19 14:46:36 +00:00
Nirbheek Chauhan
9d719b9937
meson: Fix invalid include flag in uninstalled gl pc file
...
${libdir}/gstreamer-1.0/include is only valid after installation, but
extra_cflags are added unconditionally, so we can't use that for
include flags.
Instead, let's add the include flag via variables, which are different
for installed and uninstalled pc files.
This is particularly bad for consuming GStreamer via CMake which barfs
on non-existent include paths.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7130 >
2024-07-05 16:20:22 +00:00
He Junyan
9f1887a623
glupload: Add a comment in DMA's propose_allocation query for video meta
...
The video meta API now is a mandatory request for DMA kind negotiation. In
current code, the raw method always adds that video meta API in the query
of propose_allocation(), so we do not need to do the duplicated task here.
Just adding a comment to declare that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6698 >
2024-07-04 08:54:15 +00:00
Nirbheek Chauhan
fe1a7edda2
gl: Fix libdrm dependency detection and usage
...
drm_fourcc.h should be picked up via the pkgconfig dep, not the system
includedir directly. All this allows it to be picked up consistently
(via the subproject, for example).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6932 >
2024-05-29 15:49:45 +00:00
Jakub Adam
859b1c8b63
glcolorconvert: update existing sync meta if outbuf has one
...
Instead of always adding a new one, which means the buffer could end up
with multiple sync meta instances.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6942 >
2024-05-29 07:29:43 +00:00
Hou Qi
d1c81cbd79
glcolorconvert: traverse all structures in caps when transform_caps
...
This is used to avoid negotiation failure between glcolorconvert
and downstream element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6908 >
2024-05-24 14:49:41 +09:00
Matthew Waters
0f8b599ded
glcolorconvert: handle rectangle textures for v210/UYVY/YUY2
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6795 >
2024-05-23 04:42:07 +00:00
Matthew Waters
4c27a2d5eb
glcolorconvert: add support for v210->UYVY/YUY2 (and reverse)
...
Also support YUY2/UYVY->YUY2/UYVY conversion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6795 >
2024-05-23 04:42:06 +00:00
Matthew Waters
f6d3aca076
glcolorconvert: add support for UYVY/YUY2->planar yuv (and reverse)
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6795 >
2024-05-23 04:42:06 +00:00
Matthew Waters
8dac641889
glcolorconvert: add support for v210->planar YUV (and reverse)
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6795 >
2024-05-23 04:42:06 +00:00
Matthew Waters
96939db249
glcolorconvert: add support for converting to/from v210
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6795 >
2024-05-23 04:42:06 +00:00
Matthew Waters
b0b185112d
glmemory: use the GL stride calculation also for downloading into sysmem
...
Allows writing into sysmem with arbitrary strides.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6795 >
2024-05-23 04:42:06 +00:00
Philippe Normand
1c87cda56d
glcolorconvert: Fix caps negotiation with upstream DMABuf
...
The uninitialized texture target was leading to a NULL texture-target string
added to the output caps.
Fixes #3519
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6805 >
2024-05-05 17:48:32 +01:00
Matthew Waters
184d94305c
glcolorconvert: add support for planar yuv->planar yuv conversions
...
Currently only supported by keeping the same colorimetry and is only
a repacking operation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6596 >
2024-04-30 05:58:55 +00:00
Matthew Waters
674e643428
glcolorconvert: use color matrices
...
Allows programatically supporting whatever new formats are added to
libgstvideo.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6596 >
2024-04-30 05:58:55 +00:00
Shengqi Yu
a92167ea6e
glmixer: Add GL_SYNC_META option to bufferpool
...
when pipline is
glvideomixerelement->glcolorconvertelement->gldownloadelement and
glcolorconvertelement is not passthrough, the gl bufferpool between
glvideomixerelement and glcolorconvertelement will not add gl sync meta
during allocating buffer. This will cause that glcolorconvert's inbuf
has no sync meta to wait for.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6756 >
2024-04-29 19:15:39 +00:00
Matthew Waters
7016a96bfe
glcolorconvert: don't overread the end of an array
...
Reverse index iteration needs a - 1 for the initial value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6595 >
2024-04-10 13:32:57 +00:00
Matthew Waters
97b45246d1
glcolorconvert: remove unused swizzling using "rgba" chars
...
We use indices now instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6595 >
2024-04-10 13:32:57 +00:00
Matthew Waters
2a02107c8d
glcaopengllayer: NULL some fields when freed
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6504 >
2024-04-02 23:50:41 +00:00
Matthew Waters
b080d01b68
glwindow/cocoa: keep a window reference across an async callback
...
Esnures that the window is alive when the callback is fired.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6504 >
2024-04-02 23:50:41 +00:00
Matthew Waters
3c5bb4bf5d
glbufferpool: protect release_buffer from multiple concurrent access
...
If two different threads attempt to release buffers at the same time, then the
keep-alive-slightly-longer GQueue may become corrupted. Guard against that with
some locking.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6504 >
2024-04-02 23:50:41 +00:00
Matthew Waters
49a7424d1e
gl/context/cocoa: ensure pixel format lives as long as the context
...
Under some circumstances, the CGLPixelFormatObj was being destroyed too
early which could lead to potential use-after-frees.
Fix by returning a reference when asked for the pixel format.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3154
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6504 >
2024-04-02 23:50:41 +00:00
Chao Guo
69f4d98844
glcolorconvert: Ensure glcolorconvert does not miss supported RGB formats
...
Add RGB16 and other RGB formats to rgb_formats to ensure glcolorconvert
does not miss the RGB formats it supports
Signed-off-by: Chao Guo <chao.guo@nxp.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6497 >
2024-04-02 17:14:27 +09:00
Nicolas Dufresne
bcad005d05
glupload: Do not propose allocators with sysmem
...
None of the GL allocators actually offer a generic alloc() implementation. As a
side effect, they cannot be offered as they don't work with generic video
buffer pool.
Our specialized buffer pool can be dropped by tee or alphacombine as sharing the
same buffer pool over two branch is not supported by the pool API.
Fixes #3372
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6327 >
2024-03-12 19:02:54 +00:00