Matthew Waters
4fc012af19
glbuffer: bind/unbind on map/unmap for GL mappings
...
Bind the handle to the GL target on map/unmap to save the caller from
handling this themselves.
2017-12-09 19:32:12 +00:00
Matthew Waters
ab75223594
glbuffer: remove buffer specific transfer flags
...
Instead rely on GstGLBaseMemory's transfer handling
2017-12-09 19:32:12 +00:00
Matthew Waters
f83b834628
glmemorypbo: map/unmap pbo memory correctly for state tracking
...
Otherwise some downloads will fail to occur from the PBO.
2017-12-09 19:32:12 +00:00
Matthew Waters
ba03bc2cba
tests/glmemory: include the generic gl header
...
Including gstglmemory.h directly results in the compiler complaining
about incomplete types.
2017-12-09 19:32:12 +00:00
Matthew Waters
d1812fc73c
glformat: add compatibility definitions for OES/rectangle textures
2017-12-09 19:32:12 +00:00
Matthew Waters
dc02d47092
glbasebuffer: remove unsed memory subclass
...
The functionality has been split into GstGLBaseMemory and GstGLBuffer.
2017-12-09 19:32:12 +00:00
Matthew Waters
76a38dd66a
glmemory: base classify and add the pbo memory on top
...
The base class is useful for having multiple backing memory types other
than the default. e.g. IOSurface, EGLImage, dmabuf?
The PBO transfer logic is now inside GstGLMemoryPBO which uses GstGLBuffer
to manage the PBO memory.
This also moves the format utility functions into their own file.
2017-12-09 19:32:12 +00:00
Matthew Waters
5ab3a38973
gl: add a GL buffer based GstMemory
...
Heavily based on GstGLBaseBuffer that is a subclass of GstGLBaseMemory.
Provides GPU and CPU accessible GL buffer objects by GL handle or by
sysmem data pointer.
2017-12-09 19:32:12 +00:00
Matthew Waters
af7015602a
gl: add a base memory object
...
It handles the following
- GstAllocationParams -> gst_memory_init transformation
- Makes sure that map/unmap/create/destroy happen on the GL thread with
a GL context current.
- Holds a possible sysmem accessible data pointer with alignment.
- Holds the need upload/download transfer state
2017-12-09 19:32:12 +00:00
Matthew Waters
caee3e41f9
gl: add convenience function for the start of a video frame
...
Get's the start of the video frame based on a GstVideoInfo and
GstVideoAlignment.
2017-12-09 19:32:12 +00:00
Matthew Waters
cd584d215c
gluploadmeta; remove convenience helper API
...
It was not really useful as if one knows about libgstgl, one can just use
GLMemory objects directly.
2017-12-09 19:32:12 +00:00
Matthew Waters
3545d340b6
gldownload: remove helper api from the library
...
It was never used by anyone and is not needed anymore with the element
and GstGLMemory's transparent support for downloading textures.
2017-12-09 19:32:12 +00:00
Matthew Waters
a1cc1116b5
gltransformation: clear to transparent
...
Otherwise composition will result in a black frame outside the transformed
video.
2017-12-09 19:32:12 +00:00
Alessandro Decina
610f965be8
libgstgl: gstglcontext_cocoa: kCGLPFAStereo has been deprecated in 10.11
...
Also since the version scheme has changed (to include the micro number) since
10.10, use the MAC_OS_X_VERSION_* macro to avoid confusion.
2017-12-09 19:32:12 +00:00
Alessandro Decina
b8e06e7311
glbufferpool: relax check for multiple texture targets
...
Only complain about multiple texture targets when _different_ texture targets
are configured.
2017-12-09 19:32:12 +00:00
Alessandro Decina
fa1c4e552c
glmemory: take subsampling into account for rectangle textures
...
Rectangle textures don't use normalized coordinates so subsampling needs to be
factored in explicitly.
Fixes YUV => RGB conversion for rectangle textures.
2017-12-09 19:32:11 +00:00
Matthew Waters
e8f966dcab
glproto: include function definitions for GL_APPLE_sync
...
Provides a performance improvement on iOS where we were falling back to glFinish
on settting sync points.
2017-12-09 19:32:11 +00:00
Nicolas Dufresne
21df596b8b
glupload: Only offer custom allocator with caps features
...
To use GLMemory and EGLImage allocators, one need to know the
libgstgl API. This is only expected if the associated caps features
have been negotiated. Generic element that otherwise receive those
allocators may fail, resulting in broken pieline. We don't want to
force all generic element to check if the allocator is a custom
allocator or a normal allocator (which implement the _alloc method).
https://bugzilla.gnome.org/show_bug.cgi?id=758877
2017-12-09 19:32:11 +00:00
Matthew Waters
953be21a22
glcolorconvert: improve the YUY2/UYVY->RGBA conversion shader
...
Don't offset the y-axis. We only need to offset on the x-axis.
Removes a sawtooth pattern on horizontal and vertical edges.
https://bugzilla.gnome.org/show_bug.cgi?id=755486
2017-12-09 19:32:11 +00:00
Matthew Waters
bb7422e91b
glcolorconvert: improve RGBA->YUY2/UYVY conversion shader
...
We should only average the chroma samples not the luma sample.
https://bugzilla.gnome.org/show_bug.cgi?id=758904
2017-12-09 19:32:11 +00:00
Reynaldo H. Verdejo Pinochet
8ab57b5b23
Drop usage of deprecated g-ir-scanner --strip-prefix flag
2017-12-09 19:32:11 +00:00
Reynaldo H. Verdejo Pinochet
68e668168d
Remove unnecessary NULL checks before g_free()
...
g_free() is NULL-safe
2017-12-09 19:32:11 +00:00
Sebastian Dröge
c9fafe8445
glimagesink: Remove unused variable
...
gstglimagesink.c: In function 'gst_glimage_sink_on_draw':
gstglimagesink.c:1959:18: error: unused variable 'sync_meta' [-Werror=unused-variable]
GstGLSyncMeta *sync_meta = NULL;
^
2017-12-09 19:32:11 +00:00
Sebastian Dröge
e7b63b1397
glviewconvert: String literals are const
...
gstglviewconvert.c: In function '_mangle_extensions':
gstglviewconvert.c:1511:13: error: assignment discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
ext_str = "#extension GL_OES_EGL_image_external : require\n";
^
2017-12-09 19:32:11 +00:00
Sebastian Dröge
316c2c3418
glsyncmeta: Actually return the newly created meta from gst_buffer_add_gl_sync_meta()
...
gstglsyncmeta.c -fPIC -DPIC -o .libs/libgstgl_1.0_la-gstglsyncmeta.o
gstglsyncmeta.c: In function 'gst_buffer_add_gl_sync_meta':
gstglsyncmeta.c:131:1: error: control reaches end of non-void function [-Werror=return-type]
}
^
2017-12-09 19:32:11 +00:00
Matthew Waters
9fd665c90d
glimagesink: wait on the correct sync meta when rendering
2017-12-09 19:32:11 +00:00
Matthew Waters
0e404ae3fc
glsyncmeta: add vfuncs for all operations
...
there could be other ways/requirements for synchronising two GPU command
streams (whether GL or platform specific).
e.g. glfencesync/eglwaitnative/cond/etc
2017-12-09 19:32:11 +00:00
Matthew Waters
ad237e792e
glimagesink: add support for rendering external-oes textures
...
https://bugzilla.gnome.org/show_bug.cgi?id=757285
2017-12-09 19:32:11 +00:00
Matthew Waters
975e96db44
glviewconvert: add support rectangle/external-oes textures
...
https://bugzilla.gnome.org/show_bug.cgi?id=757285
2017-12-09 19:32:11 +00:00
Vineeth TM
15d9267ed5
glimagesink: Fix structure memory leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=758205
2017-12-09 19:32:11 +00:00
Vineeth TM
a0a8b8873b
glsl: fix possible string overrun in gst_glsl_version_profile_from_string
...
given a NULL-terminated string, s.
s[i] = '\0';
i++;
does not guarentee that s[i] is NULL terminated and thus string operations
could read off the end of the array.
https://bugzilla.gnome.org/show_bug.cgi?id=758039
2017-12-09 19:32:11 +00:00
Matthew Waters
148940c456
glshader: don't read invalid list pointers (use after free)
...
gst_gl_shader_detach_unlocked already removes the list entry so attempting to
use the element to iterate to the next stage could read invalid data.
Based on patch by Vineeth TM <vineeth.tm@samsung.com>
https://bugzilla.gnome.org/show_bug.cgi?id=758039
2017-12-09 19:32:11 +00:00
Vineeth TM
0adc7e1bc4
tests:glsl: version_profile_s string leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=758039
2017-12-09 19:32:11 +00:00
Vineeth TM
d5c1ff4bf2
glsl: free str while returning error
...
https://bugzilla.gnome.org/show_bug.cgi?id=758039
2017-12-09 19:32:11 +00:00
Vineeth TM
606e3dee98
tests:glupload: fix caps memory leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=758039
2017-12-09 19:32:11 +00:00
Vineeth TM
7a75684566
glslstage: Fix vertex_sources memory leak
...
vertex_sources is being allocated but not freed resulting in leak
https://bugzilla.gnome.org/show_bug.cgi?id=757974
2017-12-09 19:32:11 +00:00
Vineeth TM
7b0125ab11
glcolorconvert: remove unnecessary free
...
version_str is already being freed. So no need to call again
https://bugzilla.gnome.org/show_bug.cgi?id=757974
2017-12-09 19:32:11 +00:00
Vineeth TM
07901d8eed
glcolorconvert: Fix string leak
...
String got using gst_glsl_version_profile_to_string, is allocated
memory and should be freed
https://bugzilla.gnome.org/show_bug.cgi?id=757974
2017-12-09 19:32:11 +00:00
Vineeth TM
1f245c3d2e
glcolorconvert: Fix frag_prog and frag_body memory leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=757974
2017-12-09 19:32:11 +00:00
Matthew Waters
b30deff7e1
glcolorconvert: mangle gl_FragColor for GL3
...
Some drivers don't provide the compatibility definition and we need to provide
our own 'out vec4' variable to put the results of the fragment shader into.
https://bugzilla.gnome.org/show_bug.cgi?id=757938
2017-12-09 19:32:11 +00:00
Vineeth TM
2c4a14f7c7
tests:glcolorconvert: Fix caps memory leak
...
Output caps being got from video info is not getting freed
https://bugzilla.gnome.org/show_bug.cgi?id=757929
2017-12-09 19:32:11 +00:00
Matthew Waters
b8c1ecf268
glviewconvert: remove set_format
...
We need the caps to be able to
1. check the caps features
2. get the requested texture-target on input/output
2017-12-09 19:32:11 +00:00
Matthew Waters
bb1ae9042b
glimagesink: fix a memory leak if the view conversion fails
2017-12-09 19:32:11 +00:00
Matthew Waters
7c52793e7c
glimagesink: balance the creation/destruction of the overlay compositor
...
Fixes some leaks/possible segfault on when failing to create the compositor.
2017-12-09 19:32:11 +00:00
Matthew Waters
117fc0409a
glshader: properly unref the stages on failure
...
When failing in the varargs functions, all the stage objects not handled need to
be unreffed to prevent a leak.
2017-12-09 19:32:11 +00:00
Matthew Waters
1f35fcf06d
glslstage: properly return an error when we could not create the shader stage
...
While it was erroring out correctly later, there were GLib warnings about
setting a GError over the top of another GError.
2017-12-09 19:32:10 +00:00
Matthew Waters
ef319c7b8f
glshaderstrings: fixup the external-oes fragment shader
...
The wrong sampler type was used
s/sampler2DExternalOES/samplerExternalOES/
2017-12-09 19:32:10 +00:00
Matthew Waters
105497de60
glcolorconvert: try to keep the same texture-target if possible
...
Fixes issues attempting to passthrough external-oes textures
2017-12-09 19:32:10 +00:00
Matthew Waters
46b84c6035
glcolorconvert: fix rendering rectangular textures with GL3
...
Rectangular textures are unavailable in unextended
GLES2 #version 100 shaders.
Fixes
texture-target=rectangle ! glcolorconvert ! texture-target=2D
There's a couple of differences between GL3 and GLES2/GL
- varying -> in or out depending on the stage (vertex/fragment)
- attribute -> in
- filtered texture access is a single function, texture()
2017-12-09 19:32:10 +00:00
Matthew Waters
e32fcfbf3c
glcolorconvert: properly use the other texture-target on fixation
2017-12-09 19:32:10 +00:00