Matthew Waters
27e724df8f
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
2015-12-14 13:55:16 +11:00
Matthew Waters
51636b451c
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.
2015-12-14 13:55:16 +11:00
Matthew Waters
3591c6bfa0
gluploadmeta; remove convenience helper API
...
It was not really useful as if one knows about libgstgl, one can just use
GLMemory objects directly.
2015-12-14 13:55:16 +11:00
Matthew Waters
50337e601e
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.
2015-12-14 13:55:16 +11:00
Alessandro Decina
1d862db9c1
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.
2015-12-10 14:46:27 +11:00
Alessandro Decina
11ca761c5d
glbufferpool: relax check for multiple texture targets
...
Only complain about multiple texture targets when _different_ texture targets
are configured.
2015-12-10 14:46:27 +11:00
Alessandro Decina
5cd0601dd5
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.
2015-12-10 14:46:27 +11:00
Matthew Waters
44c5985edd
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.
2015-12-08 18:08:28 +11:00
Nicolas Dufresne
d84d1708b7
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
2015-12-04 17:08:46 -05:00
Matthew Waters
c8099e6e71
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
2015-12-02 22:52:20 +11:00
Matthew Waters
0b11eba96a
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
2015-12-02 22:52:20 +11:00
Reynaldo H. Verdejo Pinochet
c564a043d1
Drop usage of deprecated g-ir-scanner --strip-prefix flag
2015-12-02 00:20:01 -08:00
Reynaldo H. Verdejo Pinochet
86ec812429
Remove unnecessary NULL checks before g_free()
...
g_free() is NULL-safe
2015-11-18 16:05:42 -08:00
Sebastian Dröge
74ab40470c
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";
^
2015-11-17 17:09:51 +02:00
Sebastian Dröge
e2ea7843f9
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]
}
^
2015-11-17 17:08:14 +02:00
Matthew Waters
67327615df
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
2015-11-17 15:27:26 +11:00
Matthew Waters
79f4efb02a
glviewconvert: add support rectangle/external-oes textures
...
https://bugzilla.gnome.org/show_bug.cgi?id=757285
2015-11-17 15:27:26 +11:00
Vineeth TM
6eae0c7e18
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
2015-11-13 17:00:46 +11:00
Matthew Waters
babd066b89
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
2015-11-13 17:00:46 +11:00
Vineeth TM
4c9ac5e474
glsl: free str while returning error
...
https://bugzilla.gnome.org/show_bug.cgi?id=758039
2015-11-13 17:00:46 +11:00
Vineeth TM
550ecade4d
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
2015-11-12 21:23:21 +11:00
Vineeth TM
591401f9e8
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
2015-11-12 21:23:21 +11:00
Vineeth TM
ba4802e1e5
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
2015-11-12 21:23:21 +11:00
Vineeth TM
b8adc98ddc
glcolorconvert: Fix frag_prog and frag_body memory leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=757974
2015-11-12 21:23:21 +11:00
Matthew Waters
aada44cc09
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
2015-11-11 23:42:02 +11:00
Matthew Waters
50b59150fd
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
2015-11-11 15:16:37 +11:00
Matthew Waters
f24e768cc3
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.
2015-11-11 14:41:38 +11:00
Matthew Waters
8d8063060e
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.
2015-11-11 11:29:35 +11:00
Matthew Waters
21bd8ee536
glshaderstrings: fixup the external-oes fragment shader
...
The wrong sampler type was used
s/sampler2DExternalOES/samplerExternalOES/
2015-11-11 01:27:21 +11:00
Matthew Waters
87137e3353
glcolorconvert: try to keep the same texture-target if possible
...
Fixes issues attempting to passthrough external-oes textures
2015-11-10 23:41:24 +11:00
Matthew Waters
6c97be6dfa
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()
2015-11-10 22:47:42 +11:00
Matthew Waters
149a92f250
glcolorconvert: properly use the other texture-target on fixation
2015-11-10 22:47:42 +11:00
Matthew Waters
3d5ed23a72
glslstage: add debug as to why _set_strings() failed
2015-11-10 22:47:42 +11:00
Matthew Waters
776ccf87b5
glsl: fix check for glsl version against GL context inversion
...
Any GLSL version that was less than the provided GL version would fail
2015-11-10 22:47:42 +11:00
Matthew Waters
ec318cf36d
gl: forward declare some enums
...
Specifically the GstGLTextureTarget enum
2015-11-10 15:42:35 +11:00
Matthew Waters
8acafe6f9f
glslstage: expose the default shader strings as public
...
Add some other simple strings for external-oes textures or transforming
the texture coordinates with a transformation matrix
2015-11-10 15:42:35 +11:00
Matthew Waters
8ae7cc4ee6
glcolorconvert: wait on the sync meta for input buffers
2015-11-10 15:42:35 +11:00
Matthew Waters
df69943726
glcolorconvert: use the correct oes target string in the template caps
2015-11-10 15:42:35 +11:00
Tim-Philipp Müller
edab4deb3a
glshader, tsdemux: simplify code
...
Jus use _delete_link() instead of _remove_link() + _free1()
2015-11-06 13:00:55 +00:00
Alessandro Decina
614ea95690
gstglutils: fix shader compilation on Mountain Lion
...
Make gst_gl_context_gen_shader/_compile_shader assume GST_GLSL_PROFILE_ES |
GST_GLSL_PROFILE_COMPATIBILITY as the profile. Without this, the shader compiler
doesn't inject the #version tag resulting in a compilation error on Mountain
Lion.
This is a workaround for old code using gst_gl_context_gen_shader. New code
should use the gst_glsl_stage_* API directly which allows the caller to
explicitly specify version/profile.
2015-11-02 12:10:44 +11:00
Matthew Waters
dd738842e4
glbufferpool: explicitly initialize a possibly uninitialized variable
...
The ret variable may be uninitialized and so its contents were undefined and
the results were erratic (failing with glvideomixer, succeeding in other cases)
P.S. No idea why gcc/clang et al never picked up on this like they normally do
(probably due to some optimisation pass figuring out it's only set once...)
2015-10-31 23:32:55 +11:00
Matthew Waters
d07c59170a
glslstage: remove typedefs from the header
...
They are already defined in the forward decleration header and defining them
more than once will give an error with OSX's clang about typedef redefinition
being a C11 feature.
2015-10-30 14:40:35 +11:00
Matthew Waters
8106a0931a
glcolorconvert: follow the correct texture target names
2015-10-30 14:38:05 +11:00
Matthew Waters
d707038101
glupload: explicitly configure the texture target on the gl buffer pool
...
If we don't, then the pool could end up allocating 2D textures when the
caps explictly state they should be rectangle textures.
2015-10-30 14:24:54 +11:00
Matthew Waters
b429654a37
glbufferpool: add bufferpool options for the various texture targets
...
This was chosen over relying solely on the caps as glupload needs to propose an
allocation and set the texture target based on the output caps. Setting the
caps in the config is currently pointless as they are overwritten in a lot of
element's decide_allocation functions.
This provides a mechanism for the buffer pool to be configured for a certain
texture target when none has been configured.
2015-10-30 14:24:54 +11:00
Matthew Waters
ccce217502
glcolorconvert: add support for converting texture targets
...
Solved with a simple shader templating mechanism and string replacements
of the necessary sampler types/texture accesses and texture coordinate
mangling for rectangular and external-oes textures.
2015-10-30 14:24:53 +11:00
Matthew Waters
e61d504556
glmemory: add support for rectangle textures
...
Add the various tokens/strings for the differnet texture types (2D, rect, oes)
Changes the GLmemory api to include the GstGLTextureTarget in all relevant
functions.
Update the relevant caps/templates for 2D only textures.
2015-10-30 14:24:53 +11:00
Matthew Waters
ff87ffe6e6
glcolorconvert: order the caps template so that RGBA is first
...
glcolorconvert ! glcolorconvert would sometimes negotiated RGB
(the first list entry) otherwise.
2015-10-30 14:24:53 +11:00
Matthew Waters
e96f454b30
glbufferpool: move typedef's into the forward decleration file
...
Otherwise, for example, clang will warn about typedef redefinitions
being a C11 feature.
2015-10-30 14:24:53 +11:00
Julien Isorce
704d49b9c7
glslstage: initialize output params to 0 before calling gl functions
...
The client side API of the Chromium's GPU Process has asserts
in debug mode that check that output params are initialized to 0.
2015-10-28 14:41:54 +00:00
Matthew Waters
8b0b68c4e8
glcolorconvert: allow outputting multiple textures for gles3 contexts
...
the USING_GLES2 includes all GLES3 contexts as well which does support
drawing to multiple buffers. Instead make or decision solely based on
whether glDrawBuffers is available or not.
2015-10-26 18:26:18 +11:00
Matthew Waters
09976e021b
glviewconvert: expose the element on gles2 platforms
...
We can do everything with gles3 however gles2 restricts us not allowing
separated or frame-by-frame multiview modes due to multiple draw buffers.
2015-10-26 18:24:59 +11:00
Matthew Waters
0af0237c4a
gl: fix usage of string.h and stdio.h functions without including the headers
...
e.g:
gstglcontext_egl.c:613:7: error: implicit declaration of function 'strcmp'
[-Werror=implicit-function-declaration]
if (strcmp (G_MODULE_SUFFIX, "so") == 0)
2015-10-21 04:53:08 +11:00
Matthew Waters
80c5e60f9a
gl: remove unneeded shader variable parsing code
2015-10-21 04:05:00 +11:00
Matthew Waters
3dfc6899ad
gl: be consistent in gobject boilerpate
...
GST_GL_IS_* vs GST_IS_GL_*
git grep -l 'GST_GL_IS_' | xargs sed -i 's/GST_GL_IS_/GST_IS_GL_/g'
2015-10-19 15:15:30 +11:00
Matthew Waters
9d92326fe5
glslstage: add brackets around pointer dereference referencing an array
...
While technically, i is always 0 and *vertex_sources[i++] is equivalant
to (*vertex_sources)[i++]. Be future-proof in the case of code
moves/changes/etc.
CID 1327406
2015-10-16 02:57:19 +11:00
Matthew Waters
b25807c382
glshader: port to using GstGLSLStage objects for string management
...
A GstGLShader is now simply a collection of stages that are
compiled and linked together into a program. The uniform/attribute
interface has remained the same.
2015-10-15 21:27:57 +11:00
Matthew Waters
cc7d1098ab
glsl: add a shader stage object GstGLSLStage
...
Represents a stage (vertex, geometry, fragment, etc) in the shader
pipeline.
2015-10-15 21:27:57 +11:00
Matthew Waters
c79cbbdcc1
gl/shader/variables: include generic gl.h header
...
Otherwise we may miss some forward declarations
Fixes build error: undefined reference to GstGLSLStage
2015-10-15 21:27:57 +11:00
Matthew Waters
2e8642cc4c
gl: add some GLSL utility functions
...
Specifically parsing/setting GLSL versions and the shader related
function table.
2015-10-15 21:27:57 +11:00
Guillaume Desmottes
5b30a8e9b2
gl: fix leak in gst_gl_insert_debug_marker()
...
The string allocated by g_vasprintf() was leaked.
Reproduced using the
validate.file.compositor.simple.play_15s.synchronized validate scenario.
https://bugzilla.gnome.org/show_bug.cgi?id=756492
2015-10-14 09:55:47 +11:00
Matthew Waters
83c2262849
gl: move debugging related functions to their own file
2015-10-02 01:01:42 +10:00
Antoine Jacoutot
a1d39d385d
gl: Pass GL_CFLAGS to g-ir-scanner
...
This unbreaks building when some headers are under a non-standard path.
e.g. /usr/X11R6/include as on OpenBSD.
https://bugzilla.gnome.org/show_bug.cgi?id=755850
2015-09-30 09:59:53 +01:00
Matthew Waters
b8cb829e46
glcontext: fixup strstr lengths so we don't overrun
2015-09-30 15:17:38 +10:00
Matthew Waters
49e6516550
glupload: remove useless release_buffer
...
It's a leftover from when we weren't outputting GstBuffer's and
returning raw texture id's.
2015-09-30 13:36:09 +10:00
Matthew Waters
6fc9630a91
glutils: use gst_element_set_context for setting display/other_context
...
1. So we get tracking inside GstElement properly when e.g. adding to a bin
2. Removes redundant code. Now only one place where
GstContext->GstGLDisplay/GstGLContext transformation occurs
3. Fixes a memory leak in the process
4. Make the retrieval of debug categories thread safe
2015-09-30 12:39:47 +10:00
Matthew Waters
b7aed13e71
gl/eagl: use the default GL context debug category
2015-09-29 15:38:38 +10:00
Matthew Waters
6d2104aa7c
gl: set the context on the element on a context query
...
Otherwise it's possible to lose the context information if the
context is only propagated through queries.
2015-09-28 22:31:09 +10:00
Matthew Waters
609977a56b
gl: chain up to the parent class for GstElement::set_context
...
https://bugzilla.gnome.org/show_bug.cgi?id=705579
2015-09-28 22:24:04 +10:00
Matthew Waters
2195dad288
gl: sprinkle some debug markers to ease debugging
2015-09-28 16:47:00 +10:00
Matthew Waters
5bf38301e1
gl/utils: add a function to insert a debug marker
...
These markers are visible in tools that record the GL function calls
such as apitrace, et al.
Makes it easier to match up GL draw commands with specific elements.
2015-09-28 16:47:00 +10:00
Matthew Waters
bfe8e42323
gl: add some debugging prototypes
2015-09-28 16:47:00 +10:00
Matthew Waters
27422da056
glwindow: remove unused draw_unlocked function
...
The functionality is provided by draw anyway and is leftover from
X11's specific threading requirements that no longer apply.
2015-09-28 16:44:05 +10:00
Julien Isorce
b10fe76cbf
glfilter: use GL_ELEMENT_ARRAY_BUFFER for vbo indices
...
Fixes this error with chromium gpu process:
GL_INVALID_OPERATION, glBindBuffer: buffer bound to more than 1 target
https://bugzilla.gnome.org/show_bug.cgi?id=755618
2015-09-25 20:42:39 +10:00
Julien Isorce
04856e6c8a
glmemory: fix texture leak in _gl_mem_copy
...
https://bugzilla.gnome.org/show_bug.cgi?id=755456
2015-09-25 20:41:33 +10:00
Matthew Waters
46e83f5d50
gl/dispmanx: fix rendering with recent resize state tracking
...
557ca6fda5
didn't change to the
necessary gst_gl_window_resize() call for the dispmanx backend.
2015-09-21 18:11:21 +10:00
Matthew Waters
f82840ce88
gl/caopengllayer: fix non-existent selector warning
...
557ca6fda5
introduced the queueResize
call without implementing the selector
2015-09-17 22:44:41 +10:00
Jan Schmidt
0f0bf863fa
glwindow: Fix g_return_val_if_fail in a void function
2015-09-17 21:52:38 +10:00
Matthew Waters
3addb6bbf4
glwindow: add API to request a resize event on the next draw
...
- glimagesink needs to be able to resize the viewport on aspect ratio
changes resulting from either caps changes or 3d output mode changes.
- Performing a glViewport outside the GstGLWindow::resize callback
will not have the winsys' stack of viewports required to correctly
place the output frame.
Provide a function to request a resize on the next draw event from the
winsys.
Also track size changes inside the base GstGLWindow class rather
than in each subclass.
https://bugzilla.gnome.org/show_bug.cgi?id=755111
2015-09-17 20:26:23 +10:00
Matthew Waters
1625f74632
gl/x11: store the correct dimension from the resize events
...
small typo s/width/height/
2015-09-17 20:21:43 +10:00
Vineeth T M
00438fdff0
gl: Fix GError leaks during failures
...
https://bugzilla.gnome.org/show_bug.cgi?id=755140
2015-09-17 11:52:55 +02:00
Tim-Philipp Müller
fe8de1857a
gl: bufferpool take into account video stride alignment requirements
...
when allocating memory. Fixes crashes with avdec_h265 in the AVX2
code path which requires 32-byte stride alignment, but the
GstAllocationParams only specified a 16-byte alignment.
https://bugzilla.gnome.org/show_bug.cgi?id=754120
2015-09-15 16:11:23 +01:00
Matthew Waters
591494ff54
gl/api: use public rather than private define
...
HAVE_IOS is only defined for the build of this module so
attempting to use gstgl in iOS would result in incorrect GL
includes.
Use GST_GL_HAVE_PLATFORM_EAGL instead for choosing the iOS GL
header.
2015-09-10 00:33:19 +10:00
Sebastian Dröge
bab55828ae
gl/eagl: Also unbind renderbuffer after setting up framebuffer
...
https://bugzilla.gnome.org/show_bug.cgi?id=754757
2015-09-09 10:10:47 +03:00
Sebastian Dröge
c97144b23b
gl/eagl: Don't make context uncurrent just to make it current again in the next line
...
Also binding the framebuffer again is unnecessary then as it was just bound a
few lines before while the context was current.
https://bugzilla.gnome.org/show_bug.cgi?id=754757
2015-09-09 10:10:46 +03:00
Tim-Philipp Müller
1cb3e8c591
gtk, qt, gl: fix typo in debug and error messages
2015-08-31 18:06:31 +01:00
Sebastian Dröge
5c106c0c2a
gl/eagl: Unref context after setting a window handle
...
gst_gl_window_get_context() returns a new reference.
Hopefully fixes https://bugzilla.gnome.org/show_bug.cgi?id=753758
2015-08-25 10:09:14 +03:00
Nicolas Dufresne
206638c439
gl: Let base transform relay the meta api for us
...
During allocation query, when this element is not passthrough, it must
relay the overlay compostion meta and it's parameters. Fortunatly, base
transform can do this for us.
https://bugzilla.gnome.org/show_bug.cgi?id=753850
2015-08-22 22:15:36 -07:00
Justin Kim
85834d6bbc
glcontext: add specific error message when missing GL_SHADING_LANGUAGE_VERSION
...
GL_SHADING_LANGUAGE_VERSION was introduced since ES 2.0, but in some
android emulator doesn't support this feature. To prevent confusion for
developer, the error message need to be more clear.
https://bugzilla.gnome.org/show_bug.cgi?id=753905
2015-08-21 18:14:15 +10:00
Matthew Waters
40d2693d07
glbasefilter: only call gl_{stop,start} if the context changed
...
Removes the redundant GL object creation/deletion on every
decide_allocation call which is being called for every caps change.
Thus reduces the required GL state changes on reconfigure events
which are being sent by glimagesink/xvimagesink
2015-08-20 23:25:35 +10:00
Nicolas Dufresne
a31a753bfd
glupload: Recalculate offset and size in raw upload
...
As we only expose the mapped portion of the frame into the GL
memory object (and not the original padding) we need to
re-calculate the size and offset.
2015-08-16 18:13:27 +02:00
Nicolas Dufresne
e6bd7d2792
gloverlaycompositor: Also disable the blend when done
2015-08-15 15:55:08 +02:00
Nicolas Dufresne
f935b2c547
glsink: Enable sync meta on pools we offer
...
As the upload is asynchronous, we need to enable the sync meta to
gain correct rendering. The buffer pool receiver don't know about
that.
2015-08-15 15:55:08 +02:00
Sebastian Dröge
f4a76139db
opengl: Change GLclampd to double
...
GLclampd does not exist on GLES, only desktop GL.
2015-08-15 10:03:07 +02:00
Martin Kelly
591b2e2c68
opengl: add missing ClearDepth prototype
...
The ClearDepth call is missing.
https://bugzilla.gnome.org/show_bug.cgi?id=753639
2015-08-15 09:28:12 +02:00
Nicolas Dufresne
9720c07f23
gl: Add opengl_version.h to the list of sources
...
Adding this private header to the list of sources. We don't want to make
this header public, but we need it in the list of sources otherwise it
won't be included in the tarball. This fixes make distcheck.
This regression was introduced by commit 1a6fe3db
2015-08-10 14:51:02 -04:00
Matthew Waters
b7777b9181
gl: use gles2 shaders everywhere
...
This effectively limits a glfilter subclass to be > GL(ES) 2.0.
rather than a possible GL 1.4.
2015-08-10 16:38:32 +02:00
Matthew Waters
1a6fe3db40
glcontext/wgl: implement gl3 core profile context selection
2015-08-10 15:46:13 +02:00
Nicolas Dufresne
d6baf8dcc7
gloverlaycompositor: Add shader to convert BGRA/ARGB -> RGBA
...
Depending on the bytes order we will get BGRA (little) and ARGB (big)
from the composition overlay buffer while our GL code expects RGBA. Add
a fragment shader that do this conversion.
https://bugzilla.gnome.org/show_bug.cgi?id=752842
2015-08-08 16:32:53 -04:00
Matthew Waters
69a90b5bfe
gl/syncmeta: implement synchronisation without glFenceSync
...
Uses glFinish as that's the best we have for lesser OpenGL versions.
2015-08-08 17:30:42 +02:00
Matthew Waters
83995c0935
context/glx: only use glXCreateContextAttribs for OpenGL 3 contexts
...
mesa for example when creating a GL 3.1 compatibility context
overrides our context profile selection to create a core context.
2015-08-08 15:32:17 +02:00
Sebastian Dröge
b21f01276c
glupload: Remove debug output from gst_gl_upload_transform_caps()
...
We can't know if the GstGLUpload type is initialized at this point already,
and thus our debug category might not be initialized yet... and cause an
assertion here.
As we don't print debug output for any of the other transform functions, let's
defer this problem for now.
2015-07-29 19:11:58 +01:00
Nicolas Dufresne
f79cad55e2
glupload: Add fixme about using bufferpool for raw
...
http://bugzilla.gnome.org/show_bug.cgi?id=752937
2015-07-28 08:59:48 -04:00
Nicolas Dufresne
adbd9d3c05
glupload: Keep input frame mapped as long as needed
...
When performing a raw upload, we need to keep the raw data mapped as
long as needed.
https://bugzilla.gnome.org/show_bug.cgi?id=752937
2015-07-28 08:54:29 -04:00
Nicolas Dufresne
eb4d3c352a
Revert "glupload: memcpy on raw data upload"
...
This reverts commit 82c0189b28
.
https://bugzilla.gnome.org/show_bug.cgi?id=752937
2015-07-28 08:54:29 -04:00
Matthew Waters
ee94aa003a
glcontext/wgl: fix defenition of gst_gl_context_wgl_new
...
gstglcontext_wgl.c: In function 'gst_gl_context_wgl_new':
gstglcontext_wgl.c:83:40: error: 'display' undeclared (first use in this function)
2015-07-27 21:54:27 +10:00
Matthew Waters
1137ed3e45
gl/cocoa: fix definition of gst_gl_context_new
...
gstglcontext_cocoa.m:75:1: error: conflicting types for 'gst_gl_context_cocoa_new'
2015-07-27 20:03:05 +10:00
Matthew Waters
2beaabea12
gl/win32: fix definition of gst_gl_window_win32_new
2015-07-27 20:00:47 +10:00
Matthew Waters
4d9ae8ebba
wayland: fail window open if the display is the correct type
...
Errors out cleanly if a wayland compositor is not running
2015-07-27 18:23:33 +10:00
Matthew Waters
3b89d8a23c
glwindow: pass display to implementation's _new()
...
So they have to opportunity to fail if they cannot handle the
display connection.
https://bugzilla.gnome.org/show_bug.cgi?id=752743
2015-07-27 18:23:29 +10:00
Matthew Waters
dbcae77e02
glcontext: pass display to implentation's _new()
...
This allows the context to fail creation based on incompatible
display type's. e.g. glx context with an wayland display handle.
https://bugzilla.gnome.org/show_bug.cgi?id=752743
2015-07-27 18:23:17 +10:00
Julien Isorce
5e4b94c1bb
gl: support cgl, egl and glx within a same build
...
On osx, with the same build,
gst-launch-1.0 videotestsrc ! glimagesink works with:
GST_GL_PLATFORM=egl GST_GL_WINDOW=x11 GST_GL_API=gles2
GST_GL_PLATFORM=egl GST_GL_WINDOW=x11 GST_GL_API=opengl
GST_GL_PLATFORM=glx GST_GL_WINDOW=x11 GST_GL_API=opengl
GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa GST_GL_API=opengl
GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa GST_GL_API=opengl3
https://bugzilla.gnome.org/show_bug.cgi?id=752743
2015-07-27 09:03:58 +01:00
Jan Schmidt
45f8a27211
glupload: Check that caps contain desired caps features
...
Use 'contains' checks instead of equality checks on caps features
to allow for uploading when caps also contain GstVideoOverlayComposition
meta.
https://bugzilla.gnome.org/show_bug.cgi?id=752912
2015-07-27 17:21:33 +10:00
Julien Isorce
90a1ff1383
gl: move GL_NUM_EXTENSIONS definition after gl.h
...
https://bugzilla.gnome.org/show_bug.cgi?id=752743
2015-07-24 00:03:26 +01:00
Luis de Bethencourt
7ecf6b0d6c
glupload: fix memory leak
...
GstCapsFeatures need to be freed with gst_caps_features_free() after use.
CID #1312136 , CID #1312136
2015-07-23 10:58:21 +01:00
Nicolas Dufresne
e310e6d540
gloverlaycompositor: Keep memory pointer alive
...
Keep the composition memory pointer alive while it's being
wrapped inside a GstGLMemory object.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-22 17:00:25 -04:00
Nicolas Dufresne
9c020443e6
gloverlaycompositor: Pass buffer stride
...
The overlay pixel buffer stride was not given back
to the GL image.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-22 17:00:25 -04:00
Nicolas Dufresne
d92375eaae
gloverlaycompositor: Hide GstCompsitionOverlay object
...
This object is only used inside the compositor and does not
need to be expose in libgstgl API.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-22 14:06:34 -04:00
Nicolas Dufresne
4a1e63817f
libgstgl: Makefile style fix
2015-07-22 13:33:12 -04:00
Nicolas Dufresne
17788157a1
composition-overlay: Positions are relative to texture
...
The coordinate are relative to the texture dimension and not
the window dimension now. There is no need to pass the window
dimension or to update the overlay if the dimension changes.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-22 13:17:18 -04:00
Lubosz Sarnecki
b155f5d73e
gloverlaycompositor: Create own shader object
...
Make gloverlaycompositor independent of the shader used in the sink.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-22 13:16:39 -04:00
Luis de Bethencourt
c9820f20e2
gloverlaycompositor: for loop initial declarations are only allowed in C99 mode
...
Fixes compiler warnings
2015-07-21 13:11:21 +01:00
Julien Isorce
57f389d9ce
gl: use gst_gl_display_create_context in more elements.
...
glbasefilter, glbasemixer and gltestsrc.
https://bugzilla.gnome.org/show_bug.cgi?id=750310
2015-07-21 11:37:21 +01:00
Matthew Waters
2fc017e822
gl/build: fix typo in _HEADERS resulting in installing the wrong file
...
/usr/include/gstreamer-1.0/gst/gl/gl.h:51:43: fatal error:
gst/gl/gstgloverlaycompositor.h: No such file or directory
2015-07-21 17:34:27 +10:00
Matthew Waters
b3357754c1
glcolorconvert: add RGB to NV12/NV21 conversion
2015-07-21 15:39:35 +10:00
Lubosz Sarnecki
555428872c
glcolorconvert: Apply GstVideoOverlayCompositionMeta buffer to converted buffer
...
Since glcolorconvert creates a new GstBuffer,
without the GstVideoOverlayCompositionMeta data,
it needs to be copied to not be dropped.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:12 -04:00
Lubosz Sarnecki
6eaeefc6a9
glupload: Detect overlay meta buffers correctly
...
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:12 -04:00
Lubosz Sarnecki
a7d1b7fcad
glimagesinkbin: Add GstVideoOverlayCompositionMeta caps features
...
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:12 -04:00
Lubosz Sarnecki
b2601a7b43
gloverlaycompositor: Add GstGLOverlayCompositor class
...
Manages the GstGLCompositionOverlay objects,
caches already uploaded overlays and draws them.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:11 -04:00
Lubosz Sarnecki
b4a4999bb2
glcompositionoverlay: Add compatibility for GL contexts without glGenVertexArrays
...
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:11 -04:00
Lubosz Sarnecki
7c7f84c603
glcompositionoverlay: Add class for managing GstVideoOverlayCompositionOverlay buffers
...
Add a class to store and manage the OpenGL texture,
vertex buffer and GstVideoOverlayRectangle.
Transforms overlay coordinate space to vertex buffer space with aspect ratios in mind.
= Example Pipelines =
Simple pipeline
gst-launch-1.0 videotestsrc ! \
textoverlay text="Hello World" font-desc="sans bold 30" ! \
glimagesink
Display 3 static overlays at different positions
gst-launch-1.0 videotestsrc ! \
textoverlay text="text1" valignment="top" font-desc="sans bold 30" ! \
textoverlay text="text2" halignment="right" font-desc="sans bold 30" ! \
textoverlay text="text3" halignment="left" font-desc="sans bold 30" ! \
glimagesink
Display subtitle file over testsrc
gst-launch-1.0 videotestsrc ! \
textoverlay name=foo filesrc location=foo.srt ! subparse ! queue ! foo. foo. ! \
glimagesink
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:41:11 -04:00
Lubosz Sarnecki
60c8b73cf5
glupload: Move debug init to top of the file
...
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2015-07-20 14:06:29 -04:00
Matthew Waters
d13201fedb
glmemory: check for pbo availability before attempting pbo download
...
https://bugzilla.gnome.org/show_bug.cgi?id=751165
2015-07-20 18:19:02 +10:00
Matthew Waters
d5996de5d7
glcontext: fix get_current_gl_api on x11/nvidia drivers
...
They require to get_proc_address some functions through the
platform specific {glX,egl}GetProcAddress rather than the default
GL library symbol lookup.
2015-07-18 18:18:22 +10:00
Matthew Waters
74711c214d
glcontext: consolidate get_proc_address function definition
...
Pass the GstGLAPI directly.
2015-07-18 17:10:04 +10:00
Matthew Waters
e96431e9b1
glcontext/glx: try creating a context with the highest version
...
nvidia drivers return the exact version in glGstString (GL_VERSION)
we request on creation so start with the highest known version and
work our way down.
2015-07-18 16:31:43 +10:00
Matthew Waters
be9ad5eeb2
glcontext: track sharedness with a cookie
...
The previous approach of traversing the other_context weak ref tree was
1. Less performant
2. Incorrect for context destruction removing a link in the tree
Example of 2:
c1 = context_create (NULL)
c2 = context_create (c1)
c3 = context_create (c2)
context_can_share (c1, c3) == TRUE
context_destroy (c2)
unref (c2)
context_can_share (c1, c3) returns FALSE when it should be TRUE!
This does not remove the restriction that context sharedness can only
be tracked between GstGLContext's.
2015-07-18 15:34:55 +10:00
Matthew Waters
b679cc2238
glcontext: use the debug object variant for completeness
2015-07-18 15:34:55 +10:00
Matthew Waters
82c0189b28
glupload: memcpy on raw data upload
...
Anything else requires keeping track of the GstVideoFrame mapping
across possible multiple buffers to ensure correct data pointer
usage.
2015-07-14 17:49:17 +10:00
Matthew Waters
19f2b3b882
glbasebuffer: add some debug and zero the data pointers on init
2015-07-14 17:47:29 +10:00
Sebastian Dröge
34622c3961
gl/eagl: Don't call anything synchronously from the main thread
...
This will deadlock if the main thread is the one who creates the GstGLContext.
All things we call from the main thread should be possible from any thread.
https://bugzilla.gnome.org/show_bug.cgi?id=751101
2015-07-08 22:29:27 +10:00
Matthew Waters
d5a39896dc
download: only start a download transfer for sysmem caps features
2015-07-07 22:38:08 +10:00
Hyunjun Ko
ba18bc5398
glsyncmeta: transform func: return FALSE if not supported or failed
...
https://bugzilla.gnome.org/show_bug.cgi?id=751778
2015-07-07 13:39:08 +03:00
Matthew Waters
7f44ee0514
android: add missing egl.h include
2015-07-07 16:39:09 +10:00
Matthew Waters
26df88cd24
gl: consolidate egl header includes to egl-only headers
...
They may conflict with other headers.
2015-07-07 13:12:49 +10:00
Julien Isorce
f037b28a7b
gl: initialize output params to 0 before calling gl functions
...
The client side API of the Chromium's GPU Process has asserts
in debug mode that check that output params are initialized to 0.
2015-07-02 15:16:56 +01:00
Nicolas Dufresne
fe283a9aeb
gl: Don't leak pool if set_config failed
2015-07-02 09:40:05 -04:00
Nicolas Dufresne
38abd7f019
glfilter: Don't cache buffer pool
...
Caching and sharing to multiple element the same pool prevents
renegotiation from passthrough to not passthrough.
2015-07-02 09:40:05 -04:00
Sebastian Dröge
cb01fbfc27
Revert "gl/window/x11: don't create our own X11 display"
...
This reverts commit 5697b6b89b
.
https://bugzilla.gnome.org/show_bug.cgi?id=751003
2015-06-23 16:46:39 +02:00
Sebastian Dröge
ad579b73e6
Revert "eagl: Don't dispatch_sync() to the main thread if we are on the main thread"
...
This reverts commit 0bff481011
.
It wasn't supposed to be merged and also doesn't fix the problem.
2015-06-23 14:16:39 +02:00
Sebastian Dröge
0bff481011
eagl: Don't dispatch_sync() to the main thread if we are on the main thread
...
This will otherwise deadlock.
https://bugzilla.gnome.org/show_bug.cgi?id=751101
2015-06-23 11:05:06 +02:00
John Ludwig
1ece34af2c
gl: Include texParameterf in the GL function table
...
https://bugzilla.gnome.org/show_bug.cgi?id=751228
2015-06-23 10:31:44 +02:00
Julien Isorce
2d62f1c479
glmemory: fix consistency about pbo availability.
...
https://bugzilla.gnome.org/show_bug.cgi?id=751165
2015-06-22 15:12:11 +01:00
Julien Isorce
66d833fcf2
gldisplay: add gst_gl_display_create_context
...
It also emits a create-context signal so that an application
can provide an external GstGLContext backend.
https://bugzilla.gnome.org/show_bug.cgi?id=750310
2015-06-19 13:10:30 +01:00
Julien Isorce
b0995fcca0
glcontext: move display from priv
...
https://bugzilla.gnome.org/show_bug.cgi?id=750310
2015-06-19 13:09:53 +01:00
Julien Isorce
5c23b98e27
Revert "glcontext: add gst_gl_context_set_display helper"
...
This reverts commit 71b8103cbd
.
2015-06-19 13:09:46 +01:00
Julien Isorce
5b003b68ca
Revert "gl: add GstGLContextGPUProcess backend"
...
This reverts commit b377112ee3
.
2015-06-19 13:08:49 +01:00
Nicolas Dufresne
ca950fef14
glviewconvert: Fix GLES2 compatibility
2015-06-18 18:09:55 -04:00
Nicolas Dufresne
0e1303a294
glviewconvert: Fix broken validity check
2015-06-18 18:02:21 -04:00
Jan Schmidt
1aa3911d40
gl libs: Add glviewconvert helper object
...
Add API for a helper object that can convert between different
stereoscopic video representations, and later do filtering
of multiple view streams.
https://bugzilla.gnome.org/show_bug.cgi?id=611157
2015-06-19 01:49:32 +10:00
Matthew Waters
c3a47c910d
glmemory: separate pbo transfer from texture transfers
...
When supported, the potentially longer pbo upload/download can be
initiated before the texture upload/download, potentially increasing
throughput.
2015-06-12 16:59:20 +10:00
Matthew Waters
7d8d1f8206
glmemory: implement on top of glbasebuffer
...
Provides convenient access to PBO usage.
Currently texture updates are coupled tightly to data transfers.
2015-06-12 16:59:20 +10:00
Matthew Waters
6e88b07cc5
gl: new glbasebuffer GstMemory object
...
Provides generic handling of GL buffer objects accessible using
the GL bind points (GL_ARRAY_BUFFER, GL_PIXEL_*_BUFFER).
Implementation based off the current GstGLMemory.
2015-06-12 16:59:20 +10:00
Matthew Waters
2741093c97
gl/prototypes: add some buffer function prototypes
2015-06-12 16:09:49 +10:00
Matthew Waters
ea4867dfa7
gl/window/x11: only listen on the X Display when needed
...
5697b6b89b
causes us to possibly listen
on a toolkit provided Display connection. We thus could eat their
precious winsys events. Only listen if we need to
(!foreign_display or videooverlay).
2015-06-12 13:14:57 +10:00
Jan Schmidt
e2ce1eff36
gl: Add support for multiple views in upload, colour convert and download
...
Support multiple attached views on input/output buffers
by processing each one, not just the first.
2015-06-12 00:39:15 +10:00
Matthew Waters
5697b6b89b
gl/window/x11: don't create our own X11 display
...
It's not needed anymore with most window operations occuring in the
GL thread.
2015-06-12 00:34:58 +10:00
Matthew Waters
e2adfb8bf2
gl/window/x11: handle_events() may be called before the window has been created
...
Fixes an XIO fatal error
2015-06-12 00:34:58 +10:00
Sebastian Dröge
e7ca427ddb
gl: OES_vertex_array_object is improperly implemented on PowerVR SGX 544MP
...
https://bugzilla.gnome.org/show_bug.cgi?id=750185
2015-06-10 13:31:16 +02:00
Thiago Santos
045bfa10fe
Fix a common typo: retreive -> retrieve
...
Seems to have been copy pasted around a few places
2015-06-05 09:43:35 -03:00
Philippe Normand
53a149f5d4
gl/dispmanx: Fix build
2015-06-04 09:42:01 +02:00
Matthew Waters
050e12c62a
gl/window/dispmanx: fix compiler warning
2015-06-04 15:01:16 +10:00
Matthew Waters
fbbf1ac324
gl/window: use the default main loop implementation for all backends
...
fixes glimagsink being unable to display.
https://bugzilla.gnome.org/show_bug.cgi?id=750337
2015-06-04 12:16:35 +10:00
Julien Isorce
b7808270ca
glwindow_cocoa: use parent default implementation
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=750337
2015-06-03 21:24:59 +01:00
Jan Schmidt
840f63896f
glsyncmeta: Set new sync point when copying
...
Set a new sync point when copying instead of
transferring the (non-refcounted) GL sync object
from the source meta.
https://bugzilla.gnome.org/show_bug.cgi?id=750279
2015-06-03 00:50:29 +10:00
Jan Schmidt
0ce8d77e54
glsyncmeta: Add some debug output
2015-06-03 00:50:28 +10:00
Matthew Waters
ab2656ebe5
glmemory: provide compatibility definition for GLES2 for GL_RGBA8
2015-06-02 17:24:18 +10:00
Matthew Waters
d914cc6e72
gl: consolidate internal_rgba_format into glmemory
...
Expose some useful value format conversion functions available in
GstGLMemory.
2015-06-02 16:33:44 +10:00
Julien Isorce
742dba0c2a
glcontext_gpu_process: close the window when done
2015-06-01 14:09:54 +01:00
Julien Isorce
e9c2e93f3f
glwindow_gpu_process: avoid empty struct
2015-06-01 14:09:54 +01:00
Julien Isorce
d843b9e8c3
glwindow: move main loop/context creation back to init/finalize
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=750199
2015-06-01 14:09:34 +01:00
Sebastian Dröge
5b0c3ac153
gl: Fix compiler warning
...
gstglwindow_wayland_egl.c:246:41: error: unused variable 'surface_listener' [-Werror,-Wunused-const-variable]
static const struct wl_surface_listener surface_listener = {
^
2015-05-31 21:31:00 +02:00
Matthew Waters
360f0be2a8
glwindow: fix compiler error
...
gstglwindow.c:1118:544: error: 'return' with no value, in function returning non-void [-Werror]
g_return_if_fail (GST_GL_IS_WINDOW (window));
2015-05-31 16:53:14 +10:00
Matthew Waters
e385adc241
gl/wayland: implement setting the render rectangle
...
Places our subsurface at the rectangle provided position
2015-05-31 16:09:34 +10:00
Matthew Waters
fac0cdc7ac
glwindow: handle gst_video_overlay_set_render_rectangle
2015-05-31 16:04:13 +10:00
Matthew Waters
2442c240f5
gl/wayland: don't block the event loop after poll
...
Use the dispatch_pending set of functions which just run the currently
queued up events instead of potentially waiting for an event to occur.
2015-05-31 16:04:13 +10:00
Matthew Waters
de389e07dc
gl/wayland: implement basic video overlay support via subsurfaces
...
Currently does not position the subsurface relative to the parent surface at all
2015-05-31 16:04:13 +10:00
Matthew Waters
1dc0f40a35
gl/wayland: allow a NULL wl_event_queue
...
perform operations on the default wl_display event queue in that case
2015-05-31 16:04:13 +10:00
Matthew Waters
b39ccd3745
gl/utils: implement wayland display GstContext
...
requried for sharing GL contexts or subsurface support
2015-05-31 16:04:12 +10:00
Matthew Waters
be9739cd2f
gl/wayland: run each window on a separate queue
...
Based on patch by Julien Isorce <julien.isorce@collabora.co.uk>
https://bugzilla.gnome.org/show_bug.cgi?id=709747
2015-05-31 16:04:12 +10:00
Jan Schmidt
845256bf61
gl: Don't leak temp strings in _RGB_pixel_order()
...
Fix a memory leak of temporary strings when computing
swizzling of RGB formats.
2015-05-30 02:46:24 +10:00
Jan Schmidt
5543803acf
glfilter: Add transform_internal_caps() vfunc
...
Add a vfunc that is called by glfilter before it sets
caps features and intersects with the peer caps, and
move removing the size from caps into its default
implementation. Allows sub-classes to do more
sophisticated management of the size fields in case they
don't support arbitrary resizing or have distinct
preferences.
2015-05-30 02:31:39 +10:00
Jan Schmidt
b6002141ab
glfilter: Don't remove size fields from caps
...
Instead of removing size fields, set them to the full range
like videoscale does, so the caps are clearly unfixed in
all cases.
2015-05-30 02:31:39 +10:00
Julien Isorce
b377112ee3
gl: add GstGLContextGPUProcess backend
...
It builds its GL vtable from a proc address provided
by the application.
2015-05-27 17:22:40 +01:00
Julien Isorce
ba5bf50d5f
gl: add and use gst_gl_internal_format_rgba
...
Previously when compiling GstGL with both GL and GLES2,
GL_RGBA8 was picked from GL/gl.h. But a clash may happen at
runtime when one is selecting GLES2.
gst_gl_internal_format_rgba allows to check at runtime
if it should use GL_RGBA or GL_RGBA8.
2015-05-27 17:20:05 +01:00
Julien Isorce
c5f8c789a3
glwindow_x11: use parent default implementation
2015-05-27 17:10:32 +01:00
Julien Isorce
48751c8d8a
glcontext_glx: rename variable from window to context
2015-05-27 17:10:19 +01:00
Julien Isorce
9364fc5d7f
glwindow: initialize debug in class_init
...
Useful if one uses gst_gl_window_x11_new directly
instead of gst_gl_window_new.
2015-05-27 17:10:08 +01:00
Julien Isorce
3bc4f55d3d
glcontext: initialize debug in class_init
...
Useful if one uses gst_gl_context_egl_new directly
instead of gst_gl_context_new.
2015-05-27 17:09:53 +01:00
Julien Isorce
71b8103cbd
glcontext: add gst_gl_context_set_display helper
2015-05-27 17:09:42 +01:00
Julien Isorce
8ad3c0a7b9
glcontext: add missing _CAST after G_TYPE_CHECK_CLASS
2015-05-27 17:09:31 +01:00
Julien Isorce
411488598e
glwindow: add missing _CAST after G_TYPE_CHECK_CLASS
2015-05-27 17:09:23 +01:00
Julien Isorce
072183ce61
glwindow: provides some default implementations to factorize with all backends
2015-05-27 17:08:11 +01:00
Xavier Claessens
7bfd2703c6
gl: propagate return value from filter and filter_texture
...
https://bugzilla.gnome.org/show_bug.cgi?id=749846
2015-05-26 16:49:55 -04:00
Matthew Waters
656918d5d6
gl/wayland: remove dead event source code
2015-05-25 17:39:14 +10:00
Matthew Waters
2704fdaa59
gl/wayland: add GstGLDisplayWayland
...
Simple implementation split from GstGLWindowWayland
Can now have multiple glimagesink elements all displaying output
linked via GL or otherwise (barring GL platform limitations).
The intel driver is racy and can crash setting up the two glimagesink contexts.
e.g.
videotestsrc ! tee name=t ! queue ! glupload ! glimagesinkelement
t. ! queue ! gleffects_blur ! glimagesinkelement
videotestsrc ! glupload ! glfiltercube ! tee name=t ! queue ! glimagesinkelement
t. ! queue ! gleffects_blur ! glimagesinkelement
2015-05-25 17:39:14 +10:00
Matthew Waters
dec8139e65
gl/calayer: provide the exact GL api version for the wrapped context
...
Otherwise we could end up being mistaken for the diference between a
gl3 and a gl2 context resulting in a failure getting the list of
extensions from the wrapped context due to the difference between
glGetString and glGetStringi for the GL_EXTENSIONS token.
https://bugzilla.gnome.org/show_bug.cgi?id=749728
2015-05-23 01:26:05 +10:00
Xavier Claessens
1a98face84
gl: win32: do not call SetParent in release_parent_win_id()
...
When called from gst_gl_window_win32_close(), internal window
could not exist, and if it does it's going to be destroyed just
after that anyway. Also it causes window_proc() to be called
and crash because it gets a NULL context.
When called from gst_gl_window_win32_set_window_handle() we are
going to set another parent anyway, and it's probably better to
reparent directly instead of passing by a NULL parent which could
cause the internal window to popup briefly.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2015-05-21 16:58:11 -04:00
Xavier Claessens
ae77afeb74
gl: win32: remove unused code
...
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2015-05-21 16:58:11 -04:00
Xavier Claessens
247697ce62
gl: win32: fix crash when finalizing GstGLContext
...
gst_gl_context_finalize() is calling gst_gl_window_win32_quit()
which was posting a message. But then window_proc takes window's
context and get a NULL.
Now that we've got a GMainLoop we can do like other backends and
simply call g_main_loop_quit().
This also remove duplicated code to release the parent window and
potential crash there because parent_proc could be NULL if we never
created the internal window. That could happen for example if setting
state to READY then setting a window_handle, and go back to NULL state.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2015-05-21 14:33:53 -04:00
Xavier Claessens
e1a827822e
gl: win32: Fix leaked GstGLContext
...
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2015-05-21 14:33:53 -04:00
Xavier Claessens
0acc18c60f
gl: win32: set the parent window when creating internal window
...
When _set_window_handle() was called in READY state, it wasn't
set to the internal window created later.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2015-05-21 14:33:52 -04:00
Xavier Claessens
e24bc348bd
gl: win32: use a GMainContext to dispatch win32 messages
...
gst_gl_window_win32_send_message_async() could be called before the
internal window is created so we cannot use PostMessage there.
x11 and wayland backends both create a custom GSource for this,
so there is no reason to not do that for win32.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2015-05-21 14:33:52 -04:00
Jan Schmidt
c9372ae33f
glupload: Don't leak all memory uploaded via raw uploads.
...
Remove an extra ref missed when switching over to not
reusing output textures
2015-05-22 00:28:25 +10:00
Matthew Waters
e9f0d0fb51
glcontext: require a shader version to initialize.
...
It's very near pointless to try our GL implementation without shaders.
https://bugzilla.gnome.org/show_bug.cgi?id=749284
2015-05-21 15:07:38 +10:00
Xavier Claessens
7ca9f52ccb
gl: fix crash on windows with intel driver
...
https://bugzilla.gnome.org/show_bug.cgi?id=749430
2015-05-20 00:56:44 +10:00
Matthew Waters
2e58daf196
gl/calayer: provide a current wrapped GstGLContext for callbacks
...
So that the draw and resize callbacks can get the current GstGLContext.
2015-05-20 00:36:48 +10:00
Matthew Waters
81e46e8b75
glsyncmeta: ensure that the Fence is going to be executed
...
Otherwise it could stay client side without being submitted to the GL
server resulting in another context waiting on a Fence that will never
become signalled causing a deadlock.
2015-05-20 00:36:48 +10:00
Matthew Waters
2747eb1232
glupload: don't reuse output textures for raw data upload
...
Causes stale textures to be used further down the chain.
2015-05-20 00:36:48 +10:00
Matthew Waters
2352545bee
glframebuffer: don't clear the framebuffer
...
Breaks attempting to blend with the destination buffer and should be done
explicitly by the callback anyway.
2015-05-19 11:11:02 +10:00
Matthew Waters
ddc4f1ffbd
glbasefilter: track gl_start/stop correctly
...
Don't start multiple times without calling gl_stop.
2015-05-19 11:09:54 +10:00
Matthew Waters
1e9c30223e
glcontext/cocoa: implement GL3 core context selection
2015-05-14 20:35:18 +10:00
Matthew Waters
0870e8785e
gl: remove useless gl{En,Dis}able (GL_TEXTURE_*) calls
...
We are using shaders everywhere and so they are not needed
2015-05-14 16:42:09 +10:00
Matthew Waters
e1b077d6af
glshader: attempt to detect the gles2 inside opengl3 case
...
This is necessary to use gles2 shaders in a GL 3 core context on
OS X which fails without a proper #version being set on the shaders.
2015-05-14 14:58:07 +10:00
Matthew Waters
3d0bc93edc
glshader: remove references to gl3 specific shaders
...
We rely specifically on gles2 shaders being supported by the GL
implementation with GL3 core profile.
2015-05-14 14:58:07 +10:00
Matthew Waters
7f7a9dd3ec
gl: element buffers are part of vao state
...
Use them as such. They are also required for GL3 core profile support
with glDrawElements on OS X.
2015-05-14 14:58:07 +10:00
Matthew Waters
ba5130fe01
glmemory: properly detect (hopefully) the correct ext_rg/arb_rg variant
...
GL_EXT_texture_rg is only valid for GLES2. GLES3 uses similar wording to
the GL_ARB_texture_rg which requires a sized internal format that the
GL_EXT_texture_rg does not require.
https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_rg.txt
https://www.opengl.org/registry/specs/ARB/texture_rg.txt
2015-05-14 14:58:07 +10:00
Matthew Waters
07dffe9e5b
glcontext: propagate the version/extension failure upwards
...
Otherwise the calling code has no idea that the context failed to
be created fully.
https://bugzilla.gnome.org/show_bug.cgi?id=749284
2015-05-13 23:56:48 +10:00
Matthew Waters
1853e455ac
gl: don't deadlock on context creation failure
...
https://bugzilla.gnome.org/show_bug.cgi?id=749284
2015-05-13 23:56:48 +10:00
Sebastian Dröge
53c79cbf86
Revert "gl: readd glupload/download onto element pads"
...
This reverts commit 87d8270f30
.
2015-05-06 15:46:49 +02:00
Matthew Waters
6f85a17ab3
glsyncmeta: fixup size declaration
2015-05-05 14:46:17 +10:00
Jan Schmidt
2ed71bee3b
glcolorconvert: Improve passthrough check when no conversion is needed.
...
Make the passthrough check contingent on only the fields we
can modify being unchanged, and pre-compute it when caps
change instead of checking on each buffer. Makes the passthrough
more lenient if consumers are lax about making input and output
caps complete.
2015-05-04 13:30:13 +10:00
Matthew Waters
87d8270f30
gl: readd glupload/download onto element pads
...
Allows insertion of gl elements into non-gl pipelines without converter
(upload/download) elements.
https://bugzilla.gnome.org/show_bug.cgi?id=743974
2015-04-30 11:26:33 +10:00
Jan Schmidt
1de2e2bc39
glupload: Make upload method static caps non-const.
...
Retrieving a GstStaticCaps does a one time internal
initialisation and caches it - they can't be stored as
const structures.
2015-04-29 02:52:40 +10:00
Matthew Waters
17084a4608
glmemory: remove uneeded unref
...
The call to _gl_mem_alloc_data will unref and NULLify 'dest' for us.
We just need to return.
https://bugzilla.gnome.org/show_bug.cgi?id=744246
2015-04-28 20:47:55 +10:00
Matthew Waters
0b7f65bbc3
glupload: provide the sink template caps that could be used
...
https://bugzilla.gnome.org/show_bug.cgi?id=746399
2015-04-28 20:13:48 +10:00
Xavier Claessens
5bfaaf4c74
egl: Use maximum bits per color instead of minimum
...
https://bugzilla.gnome.org/show_bug.cgi?id=748425
2015-04-27 10:45:48 -04:00
Matthew Waters
bd940327ef
gl: unref display/other-context in the correct place
...
Otherwise state changes from PLAYING->READY->PAUSED will cause there to
to be no display configured on the element.
https://bugzilla.gnome.org/show_bug.cgi?id=748405
2015-04-27 15:20:56 +10:00
Sebastian Dröge
e7aa25ca6f
glfilter: De-camelcase onInitFBO() vfunc
2015-04-26 21:42:03 +02:00
Sebastian Dröge
c638477c48
glfilter: Remove onStart/onStop vfuncs, and unused onReset()
...
onStart/onStop are just duplicates of the basetransform ones, onReset
was never called but was used everywhere when stop should've been used.
2015-04-26 21:39:06 +02:00
Matthew Waters
1fce7dc228
glbasefilter: Unref other context in finalize, and display in READY->NULL
...
https://bugzilla.gnome.org/show_bug.cgi?id=748405
2015-04-26 20:33:41 +02:00
Matthew Waters
ab9eb432fb
glwindow: track context activation properly
...
We only need to deactivate/reactivate the context iff it was already
active.
2015-04-21 12:55:24 +10:00
Matthew Waters
6cb6d8f9e8
gldisplay: synchronize the searching and creation of GstGLContext's
...
Ootherwise we could end up with multiple elements in different chains
each creating a context. Fixes context creation with glvideomixer.
2015-04-21 12:55:24 +10:00
Matthieu Bouron
93d2e67cbc
glcontext: Make gst_gl_context_egl_activate fail if the old surface could not be destroyed
...
https://bugzilla.gnome.org/show_bug.cgi?id=746251
2015-04-17 14:39:11 +02:00
Matthieu Bouron
8ebc715fbf
glcontext: Make gst_gl_context_egl_activate fail if the surface could not be created
...
Also add some error logging.
2015-04-16 11:47:00 +02:00
Sebastian Dröge
2fe6fe12cf
glcolorconvert: Fix last commit
2015-04-11 19:35:48 +02:00
Sebastian Dröge
a557a546ac
gl: Remove iOS/EAGL workaround for R/RG textures
...
This should be unneeded now after https://bugzilla.gnome.org/show_bug.cgi?id=732507
2015-04-11 19:17:00 +02:00
Sebastian Dröge
b10cdc8536
glcolorconvert: Add correct check for RG/R textures in glcolorconvert too
...
https://bugzilla.gnome.org/show_bug.cgi?id=732507
2015-04-11 19:14:34 +02:00
Anton Obzhirov
6a2e986f07
glbasefilter: avoid segfault when gl platform is not available
...
https://bugzilla.gnome.org/show_bug.cgi?id=747124
2015-04-10 12:15:29 -03:00
Alessandro Decina
6981a8d15b
libgstgl: fix rendering on iOS
...
Stop assuming that the handle has been set by the time ->create_context is
called. After bc7a7259f3
set_window_handle always
happens after ->create_context in fact.
See also https://bugzilla.gnome.org/show_bug.cgi?id=745090
2015-04-02 18:29:39 +11:00
Edward Hervey
0360a62135
introspection: Don't use g-ir-scanner cache at compile time
...
It pollutes user directories and we don't need to cache it
https://bugzilla.gnome.org/show_bug.cgi?id=747095
2015-03-31 15:42:03 +02:00
Philippe Normand
14ac40f106
gl/dispmanx: surfaceless EGL context support
...
Show the DispmanX window only if there's no shared external GL context
set up. When a window is required by the context a transparent
DispmanX element is created and later on made visible by the ::show
method.
https://bugzilla.gnome.org/show_bug.cgi?id=746632
2015-03-24 11:12:05 +00:00
Julien Isorce
e1e17dcadb
glwindow: remove unused gl_thread field
2015-03-22 19:12:15 +01:00
Julien Isorce
d35e3b8481
gldisplay: fix GThread leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=746541
2015-03-22 19:03:19 +01:00
Matthew Waters
0ee027b6ee
gl/docs: update some doc comments
2015-03-18 10:13:25 -07:00
Matthew Waters
78c82328ee
gldisplay: tentative proper context collision detection
...
Fixes
tee name=t ! queue ! gliamgesink t. ! queue ! glimagesink
2015-03-15 14:43:10 +00:00
Víctor Manuel Jáquez Leal
d925e7fd19
glupload: move meta-data copy into gst-gl library
...
In some upload implementations the out buffer has more than one references,
turning the buffer not writable, so it won't be possible to modify its
meta-data.
This patch moves the meta-data copy before increasing the reference of the out
buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=746173
2015-03-14 19:53:02 +00:00
Matthew Waters
48f8b5b46b
glmemory: fix the slight difference between EXT_rg and ARB_rg
...
GL_EXT_texture_rg doesn't take sized formats for the internalformat
parameter of TexImage* but GL_ARB_texture_rg and GL(ES)3 do.
https://bugzilla.gnome.org/show_bug.cgi?id=732507
2015-03-14 18:59:27 +00:00
Matthew Waters
fa61e8e4ce
glsyncmeta: make context to wait and set sync explicit
...
otherwise we may wait on a sync object in same context by accident
2015-03-14 16:53:46 +00:00
Julien Isorce
802bf79998
gl: add GstGLDisplayCocoa
...
https://bugzilla.gnome.org/show_bug.cgi?id=746012
2015-03-14 08:38:03 +00:00
Julien Isorce
90f0cfceb7
gl/cocoa: do not terminate loop in gst_gl_window_cocoa_close
...
It is now done in _finalize.
Fix regression introduced by
"gl/window: create the main loop/context on init/finalize"
bc7a7259f3
2015-03-14 07:49:14 +00:00
Julien Isorce
2d593b4c26
gl: avoid overwriting display and context to NULL
...
It happens when the application provides display
and/or context.
2015-03-13 18:30:30 +00:00
Matthew Waters
a29a18cc3a
glshader: attribute locations are -1 on error
2015-03-13 17:41:17 +00:00
Neos3452
40a4530c5d
glshader: prevent from getting attributes without vertex shader
...
It doesn't make sense to query for vertex attributes without a vertex
shader. Moreover this is causing a crash on OSX.
https://bugzilla.gnome.org/show_bug.cgi?id=746168
2015-03-13 17:35:18 +00:00
Matthew Waters
773f9fa6ff
glupload: unref the bufferpool
2015-03-13 12:40:04 +00:00
Matthew Waters
34485c9976
gl: get the context from basemixer/basefilter
2015-03-13 12:30:20 +00:00
Matthew Waters
91b7642c48
gl: retreive the gldisplay/app gl context as soon as possible
...
fixes the usage of gst_gl_display_filter_gl_api
2015-03-13 12:30:20 +00:00
Julien Isorce
daef98e3e6
glcolorconvert: cache indices in a buffer object
2015-03-12 18:19:57 +00:00
Matthew Waters
66ccdab09a
gl/cocoa: avoid deadlock when creating context on the main thread.
...
Make window/view creation async so that it is possible to
gst_gl_context_create from the main thread.
2015-03-12 16:45:51 +00:00
Matthew Waters
ef0bd30c87
gl: store the list of contexts within gldisplay
...
Removes the reliance on the allocation query to propogate GL contexts.
Allows thread safely getting a context for the a specific thread.
2015-03-12 16:45:51 +00:00
Matthew Waters
cebdf84c81
glcontext: store the thread current context
2015-03-12 16:45:51 +00:00
Matthew Waters
5a867ddc47
glfilter: don't use the library upload/convert objects
2015-03-12 16:45:50 +00:00
Matthew Waters
0c800027ba
glupload: implement propose_allocation pool handling for glmemory upload
2015-03-12 16:45:50 +00:00
Matthew Waters
ecdc5568c4
gl: add a new glbasefilter class below glfilter
...
It deals with propagating the gl display/contexts throughout the
application/pipeline
2015-03-12 16:45:50 +00:00
Matthew Waters
41e3b32866
glutils: expose running a query on a set of src/sink pads
2015-03-12 16:45:50 +00:00
Matthew Waters
56253d8dce
glfilter: advertise resize in the caps negotiation properly
2015-03-12 10:16:15 +00:00
Matthew Waters
e3723cbde8
glcolorconvert: we don't do resizing of the video frames
...
As we cannot do accurate texel sampling then due to the texture
coordinates being interpolated based on the output frame size.
2015-03-12 09:47:31 +00:00
Matthew Waters
49b00e44ed
gl/x11: don't XGetWindowAttributes every XEvent
...
fixes a deadlock in xcb where the X window may not exist.
https://bugzilla.gnome.org/show_bug.cgi?id=745633
2015-03-11 18:56:06 +00:00
Matthew Waters
efe0564f22
gl/window: hopefully fixup compile warnings on android/ios
2015-03-11 14:51:15 +00:00
Jan Schmidt
13ed5ab3c8
glfilter: Remove redundant check for clearing context on reset.
...
The context is already cleared a few lines above.
2015-03-12 01:33:03 +11:00
Jan Schmidt
f150cf2d2e
Remove a bunch of silly ';;' typos at the end of lines
2015-03-12 01:33:03 +11:00
Matthew Waters
bc7a7259f3
gl/window: create the main loop/context on init/finalize
...
Avoids races setting the window handle from the main thread.
https://bugzilla.gnome.org/show_bug.cgi?id=745633
2015-03-11 13:52:15 +00:00
Nicolas Dufresne
7a3b34de79
glfilter: Don't chain downstream pool
...
Chaining a downstream pool would lead to two owner of the same
pool. In dynamic pipeline, if one owner is removed from the pipeline
the pool will be stopped, and the rest of the pipeline will fail
since the pool will now be flushing. Also fix proposed pool caching,
filter->pool was never set, never unrefed.
https://bugzilla.gnome.org/show_bug.cgi?id=745705
2015-03-06 19:25:16 -05:00
Sebastian Dröge
938d172fc2
gldownload: Simplify caps feature setting code
2015-03-06 18:54:24 +01:00
Sebastian Dröge
b81823e7db
gl: Remove format info in glcolorconvert's transform_caps function instead of on every caller
...
... and let glmixer actually transform the caps it is supposed to transform
instead of inventing new caps.
2015-03-06 18:53:13 +01:00
Sebastian Dröge
90967b3d45
glupload: Simplify caps feature setting code
2015-03-06 18:53:13 +01:00
Edward Hervey
1172e2875d
gldisplay: Only use debugging if we have valid values
...
The debug category won't have been created/activated if it's not a
valid display
2015-03-05 19:09:49 +01:00
Nicolas Dufresne
34402920d2
glfilter: Get rid of uploader if caps have changed
...
We need to update the uploader format if that caps have changed.
https://bugzilla.gnome.org/show_bug.cgi?id=745549
2015-03-03 14:05:21 -05:00
Edward Hervey
4220fe41be
gl: Fix context leaks
...
Introduced by a12ca13750
2015-03-03 17:36:06 +01:00
Julien Isorce
74c294892d
gl/cocoa: register only one custom nsapp loop
...
Otherwise the pipeline stalls when running
more than one glimagesink with gst-launch.
Also only register the custom nsapp loop
when setting up the nsapp from gstgl.
2015-03-02 07:49:26 +00:00
Julien Isorce
4801db552d
gl/cocoa: instead of class_init use g_once to setup nsapp
2015-03-02 07:44:52 +00:00
Julien Isorce
8a0a71ff03
gl/cocoa: check for deprecated constants prior to OSX 10.10
2015-03-02 07:44:25 +00:00
Nicolas Dufresne
283aca3b51
glbufferpool: Fix offset for odd height
...
We also need to recalculate the offset, since otherwise the frame
mapping will be forward two lines in the U and V planes (I420) due
to gst_video_info_align() round up the Y plane to a even number of
lines.
https://bugzilla.gnome.org/show_bug.cgi?id=745054
2015-03-01 09:43:32 -05:00
Nicolas Dufresne
04377cfc5e
glmemory: Support offset when downloading
...
Make sure we support offset and video alignment when downloading too.
This is currently not used (plane_start is always 0), but it makes
the code correct if we want to use that later.
2015-02-28 15:01:59 -05:00
Nicolas Dufresne
8c0fcef818
glmemory: Provide correct size on upload
...
Provide the right size to GL when uploading. Using maxsize is wrong
since we offset the data point with the memory offset and video
alignement offset.
https://bugzilla.gnome.org/show_bug.cgi?id=744246
2015-02-28 14:32:40 -05:00
Nicolas Dufresne
e9bec9ec0e
glmemory: Provide correct size on download
...
Provide the right size to GL when downloading. This fixes downloading
from GLMemory that where created for libav.
https://bugzilla.gnome.org/show_bug.cgi?id=744246
2015-02-28 14:32:40 -05:00
Nicolas Dufresne
4db0ef5789
glmemory: Use fallback for partial copy
...
When the memory is partial copy, the texture size and videoinfo no
longer make sense. As we cannot guess what the application wants, we
safely copy into a sysmem memory.
https://bugzilla.gnome.org/show_bug.cgi?id=744246
2015-02-28 14:32:40 -05:00
Nicolas Dufresne
b8f168cd65
glmemory: Add GstAllocationParams and alignment support
...
This implements support for GstAllocationParams and memory alignments.
The parameters where simply ignored which could lead to crash on
certain platform when used with libav and no luck.
https://bugzilla.gnome.org/show_bug.cgi?id=744246
2015-02-28 14:32:39 -05:00
Matthew Waters
03b5288f64
glupload: perform egl upload on the gl thread
...
Fixes EGLImage usage on raspberry pi
https://bugzilla.gnome.org/show_bug.cgi?id=743914
2015-02-28 18:29:52 +11:00
Víctor Manuel Jáquez Leal
75e875b022
glupload: Set freed method implementation to NULL
...
When trying to render buffers with meta:GLTextureUpload the glimagesink crashes
with a segmentation fault.
This patch workarounds this crash setting to NULL the method implementation
after free.
https://bugzilla.gnome.org/show_bug.cgi?id=745206
2015-02-26 14:39:32 +02:00