mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 13:41:48 +00:00
glsyncmeta: also supported with gles3
This commit is contained in:
parent
464b9e7680
commit
844c0e77ee
1 changed files with 10 additions and 9 deletions
|
@ -28,6 +28,14 @@
|
||||||
#define GST_CAT_DEFAULT gst_gl_sync_meta_debug
|
#define GST_CAT_DEFAULT gst_gl_sync_meta_debug
|
||||||
GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
|
GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
|
||||||
|
|
||||||
|
#ifndef GL_SYNC_GPU_COMMANDS_COMPLETE
|
||||||
|
#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GL_SYNC_FLUSH_COMMANDS_BIT
|
||||||
|
#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001
|
||||||
|
#endif
|
||||||
|
|
||||||
GstGLSyncMeta *
|
GstGLSyncMeta *
|
||||||
gst_buffer_add_gl_sync_meta (GstGLContext * context, GstBuffer * buffer)
|
gst_buffer_add_gl_sync_meta (GstGLContext * context, GstBuffer * buffer)
|
||||||
{
|
{
|
||||||
|
@ -49,13 +57,11 @@ _set_sync_point (GstGLContext * context, GstGLSyncMeta * sync_meta)
|
||||||
{
|
{
|
||||||
const GstGLFuncs *gl = context->gl_vtable;
|
const GstGLFuncs *gl = context->gl_vtable;
|
||||||
|
|
||||||
if (gl->FenceSync && gst_gl_context_get_gl_api (context) & GST_GL_API_OPENGL3) {
|
if (gl->FenceSync) {
|
||||||
if (sync_meta->glsync)
|
if (sync_meta->glsync)
|
||||||
gl->DeleteSync (sync_meta->glsync);
|
gl->DeleteSync (sync_meta->glsync);
|
||||||
#if GST_GL_HAVE_OPENGL
|
|
||||||
sync_meta->glsync = gl->FenceSync (GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
|
sync_meta->glsync = gl->FenceSync (GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
|
||||||
GST_LOG ("setting sync object %p", sync_meta->glsync);
|
GST_LOG ("setting sync object %p", sync_meta->glsync);
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
gl->Flush ();
|
gl->Flush ();
|
||||||
}
|
}
|
||||||
|
@ -69,7 +75,6 @@ gst_gl_sync_meta_set_sync_point (GstGLSyncMeta * sync_meta,
|
||||||
(GstGLContextThreadFunc) _set_sync_point, sync_meta);
|
(GstGLContextThreadFunc) _set_sync_point, sync_meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if GST_GL_HAVE_OPENGL
|
|
||||||
static void
|
static void
|
||||||
_wait (GstGLContext * context, GstGLSyncMeta * sync_meta)
|
_wait (GstGLContext * context, GstGLSyncMeta * sync_meta)
|
||||||
{
|
{
|
||||||
|
@ -85,18 +90,14 @@ _wait (GstGLContext * context, GstGLSyncMeta * sync_meta)
|
||||||
} while (res == GL_TIMEOUT_EXPIRED);
|
} while (res == GL_TIMEOUT_EXPIRED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
void
|
||||||
gst_gl_sync_meta_wait (GstGLSyncMeta * sync_meta)
|
gst_gl_sync_meta_wait (GstGLSyncMeta * sync_meta)
|
||||||
{
|
{
|
||||||
#if GST_GL_HAVE_OPENGL
|
if (sync_meta->glsync) {
|
||||||
if (sync_meta->glsync
|
|
||||||
&& gst_gl_context_get_gl_api (sync_meta->context) & GST_GL_API_OPENGL3) {
|
|
||||||
gst_gl_context_thread_add (sync_meta->context,
|
gst_gl_context_thread_add (sync_meta->context,
|
||||||
(GstGLContextThreadFunc) _wait, sync_meta);
|
(GstGLContextThreadFunc) _wait, sync_meta);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
|
Loading…
Reference in a new issue