mirror of
https://github.com/brl/mutter.git
synced 2025-04-15 06:39:38 +00:00
egl: Add vfuncs needed for client EGLStream surfaces
https://bugzilla.gnome.org/show_bug.cgi?id=773629
This commit is contained in:
parent
1f0ce80fb4
commit
f5bdf75f70
@ -63,6 +63,10 @@ struct _MetaEgl
|
|||||||
PFNEGLSTREAMCONSUMERACQUIREATTRIBEXTPROC eglStreamConsumerAcquireAttribEXT;
|
PFNEGLSTREAMCONSUMERACQUIREATTRIBEXTPROC eglStreamConsumerAcquireAttribEXT;
|
||||||
|
|
||||||
PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC eglStreamConsumerGLTextureExternalKHR;
|
PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC eglStreamConsumerGLTextureExternalKHR;
|
||||||
|
|
||||||
|
PFNEGLSTREAMCONSUMERACQUIREKHRPROC eglStreamConsumerAcquireKHR;
|
||||||
|
|
||||||
|
PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC eglCreateStreamFromFileDescriptorKHR;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE (MetaEgl, meta_egl, G_TYPE_OBJECT)
|
G_DEFINE_TYPE (MetaEgl, meta_egl, G_TYPE_OBJECT)
|
||||||
@ -655,6 +659,45 @@ meta_egl_stream_consumer_gl_texture_external (MetaEgl *egl,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_egl_stream_consumer_acquire (MetaEgl *egl,
|
||||||
|
EGLDisplay display,
|
||||||
|
EGLStreamKHR stream,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
if (!is_egl_proc_valid (egl->eglStreamConsumerAcquireKHR, error))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!egl->eglStreamConsumerAcquireKHR (display, stream))
|
||||||
|
{
|
||||||
|
set_egl_error (error);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EGLStreamKHR
|
||||||
|
meta_egl_create_stream_from_file_descriptor (MetaEgl *egl,
|
||||||
|
EGLDisplay display,
|
||||||
|
EGLNativeFileDescriptorKHR file_descriptor,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
EGLStreamKHR stream;
|
||||||
|
|
||||||
|
if (!is_egl_proc_valid (egl->eglCreateStreamFromFileDescriptorKHR, error))
|
||||||
|
return EGL_NO_STREAM_KHR;
|
||||||
|
|
||||||
|
stream = egl->eglCreateStreamFromFileDescriptorKHR (display, file_descriptor);
|
||||||
|
if (stream == EGL_NO_STREAM_KHR)
|
||||||
|
{
|
||||||
|
set_egl_error (error);
|
||||||
|
return EGL_NO_STREAM_KHR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
#define GET_EGL_PROC_ADDR(proc) \
|
#define GET_EGL_PROC_ADDR(proc) \
|
||||||
egl->proc = (void *) eglGetProcAddress (#proc);
|
egl->proc = (void *) eglGetProcAddress (#proc);
|
||||||
|
|
||||||
@ -694,6 +737,10 @@ meta_egl_constructed (GObject *object)
|
|||||||
GET_EGL_PROC_ADDR (eglStreamConsumerAcquireAttribEXT);
|
GET_EGL_PROC_ADDR (eglStreamConsumerAcquireAttribEXT);
|
||||||
|
|
||||||
GET_EGL_PROC_ADDR (eglStreamConsumerGLTextureExternalKHR);
|
GET_EGL_PROC_ADDR (eglStreamConsumerGLTextureExternalKHR);
|
||||||
|
|
||||||
|
GET_EGL_PROC_ADDR (eglStreamConsumerAcquireKHR);
|
||||||
|
|
||||||
|
GET_EGL_PROC_ADDR (eglCreateStreamFromFileDescriptorKHR);
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef GET_EGL_PROC_ADDR
|
#undef GET_EGL_PROC_ADDR
|
||||||
|
@ -148,9 +148,19 @@ gboolean meta_egl_stream_consumer_acquire_attrib (MetaEgl *egl,
|
|||||||
EGLAttrib *attrib_list,
|
EGLAttrib *attrib_list,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
gboolean meta_egl_stream_consumer_acquire (MetaEgl *egl,
|
||||||
|
EGLDisplay display,
|
||||||
|
EGLStreamKHR stream,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
gboolean meta_egl_stream_consumer_gl_texture_external (MetaEgl *egl,
|
gboolean meta_egl_stream_consumer_gl_texture_external (MetaEgl *egl,
|
||||||
EGLDisplay display,
|
EGLDisplay display,
|
||||||
EGLStreamKHR stream,
|
EGLStreamKHR stream,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
EGLStreamKHR meta_egl_create_stream_from_file_descriptor (MetaEgl *egl,
|
||||||
|
EGLDisplay display,
|
||||||
|
EGLNativeFileDescriptorKHR file_descriptor,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
#endif /* META_EGL_H */
|
#endif /* META_EGL_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user