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