mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
gl/context: provide get_gl_version
This commit is contained in:
parent
0586e49726
commit
24f533fae7
2 changed files with 37 additions and 8 deletions
|
@ -100,6 +100,9 @@ struct _GstGLContextPrivate
|
||||||
GstGLContext *other_context;
|
GstGLContext *other_context;
|
||||||
GstGLAPI gl_api;
|
GstGLAPI gl_api;
|
||||||
GError **error;
|
GError **error;
|
||||||
|
|
||||||
|
gint gl_major;
|
||||||
|
gint gl_minor;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
@ -691,7 +694,6 @@ gst_gl_context_create_thread (GstGLContext * context)
|
||||||
GstGLWindowClass *window_class;
|
GstGLWindowClass *window_class;
|
||||||
GstGLDisplay *display;
|
GstGLDisplay *display;
|
||||||
GstGLFuncs *gl;
|
GstGLFuncs *gl;
|
||||||
gint gl_major = 0, gl_minor = 0;
|
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
GstGLAPI compiled_api, user_api;
|
GstGLAPI compiled_api, user_api;
|
||||||
gchar *api_string;
|
gchar *api_string;
|
||||||
|
@ -800,26 +802,29 @@ gst_gl_context_create_thread (GstGLContext * context)
|
||||||
|
|
||||||
/* gl api specific code */
|
/* gl api specific code */
|
||||||
if (!ret && USING_OPENGL (display))
|
if (!ret && USING_OPENGL (display))
|
||||||
ret = _create_context_opengl (context, &gl_major, &gl_minor, error);
|
ret = _create_context_opengl (context, &context->priv->gl_major,
|
||||||
|
&context->priv->gl_minor, error);
|
||||||
if (!ret && USING_GLES2 (display))
|
if (!ret && USING_GLES2 (display))
|
||||||
ret = _create_context_gles2 (context, &gl_major, &gl_minor, error);
|
ret =
|
||||||
|
_create_context_gles2 (context, &context->priv->gl_major,
|
||||||
|
&context->priv->gl_minor, error);
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
goto failure;
|
goto failure;
|
||||||
|
|
||||||
/* GL core contexts and GLES3 */
|
/* GL core contexts and GLES3 */
|
||||||
if (gl->GetIntegerv && gl->GetStringi && gl_major >= 3)
|
if (gl->GetIntegerv && gl->GetStringi && context->priv->gl_major >= 3)
|
||||||
ext_g_str = _build_extension_string (context);
|
ext_g_str = _build_extension_string (context);
|
||||||
|
|
||||||
if (ext_g_str && ext_g_str->len) {
|
if (ext_g_str && ext_g_str->len) {
|
||||||
_gst_gl_feature_check_ext_functions (context, gl_major, gl_minor,
|
_gst_gl_feature_check_ext_functions (context, context->priv->gl_major,
|
||||||
ext_g_str->str);
|
context->priv->gl_minor, ext_g_str->str);
|
||||||
} else {
|
} else {
|
||||||
ext_const_c_str = (const gchar *) gl->GetString (GL_EXTENSIONS);
|
ext_const_c_str = (const gchar *) gl->GetString (GL_EXTENSIONS);
|
||||||
if (!ext_const_c_str)
|
if (!ext_const_c_str)
|
||||||
ext_const_c_str = "";
|
ext_const_c_str = "";
|
||||||
_gst_gl_feature_check_ext_functions (context, gl_major, gl_minor,
|
_gst_gl_feature_check_ext_functions (context, context->priv->gl_major,
|
||||||
ext_const_c_str);
|
context->priv->gl_minor, ext_const_c_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ext_g_str)
|
if (ext_g_str)
|
||||||
|
@ -973,6 +978,28 @@ gst_gl_context_thread_add (GstGLContext * context,
|
||||||
gst_object_unref (window);
|
gst_object_unref (window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_gl_context_get_gl_version:
|
||||||
|
* @context: a #GstGLContext
|
||||||
|
* @maj: (out): resulting major version
|
||||||
|
* @min: (out): resulting minor version
|
||||||
|
*
|
||||||
|
* Returns the OpenGL version implemented by @context. See
|
||||||
|
* gst_gl_context_get_gl_api() for retreiving the OpenGL api implemented by
|
||||||
|
* @context.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gst_gl_context_get_gl_version (GstGLContext * context, gint * maj, gint * min)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GST_GL_IS_CONTEXT (context));
|
||||||
|
g_return_if_fail (maj == NULL && min == NULL);
|
||||||
|
|
||||||
|
if (maj)
|
||||||
|
*maj = context->priv->gl_major;
|
||||||
|
|
||||||
|
if (min)
|
||||||
|
*min = context->priv->gl_minor;
|
||||||
|
}
|
||||||
|
|
||||||
static GstGLAPI
|
static GstGLAPI
|
||||||
gst_gl_wrapped_context_get_gl_api (GstGLContext * context)
|
gst_gl_wrapped_context_get_gl_api (GstGLContext * context)
|
||||||
|
|
|
@ -131,6 +131,8 @@ gpointer gst_gl_context_default_get_proc_address (GstGLContext *context, co
|
||||||
gboolean gst_gl_context_set_window (GstGLContext *context, GstGLWindow *window);
|
gboolean gst_gl_context_set_window (GstGLContext *context, GstGLWindow *window);
|
||||||
GstGLWindow * gst_gl_context_get_window (GstGLContext *context);
|
GstGLWindow * gst_gl_context_get_window (GstGLContext *context);
|
||||||
|
|
||||||
|
void gst_gl_context_get_gl_version (GstGLContext *context, gint *maj, gint *min);
|
||||||
|
|
||||||
/* FIXME: remove */
|
/* FIXME: remove */
|
||||||
void gst_gl_context_thread_add (GstGLContext * context,
|
void gst_gl_context_thread_add (GstGLContext * context,
|
||||||
GstGLContextThreadFunc func, gpointer data);
|
GstGLContextThreadFunc func, gpointer data);
|
||||||
|
|
Loading…
Reference in a new issue