mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 12:32:29 +00:00
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.
This commit is contained in:
parent
dec64d9036
commit
2034f78617
1 changed files with 7 additions and 7 deletions
|
@ -248,21 +248,20 @@ gst_gl_context_glx_create_context (GstGLContext * context,
|
||||||
(gpointer) glXGetProcAddressARB ((const GLubyte *)
|
(gpointer) glXGetProcAddressARB ((const GLubyte *)
|
||||||
"glXCreateContextAttribsARB");
|
"glXCreateContextAttribsARB");
|
||||||
|
|
||||||
if (create_context && context_glx->priv->glXCreateContextAttribsARB) {
|
if (!context_glx->glx_context && gl_api & GST_GL_API_OPENGL3 && create_context
|
||||||
|
&& context_glx->priv->glXCreateContextAttribsARB) {
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (gl_versions); i++) {
|
for (i = 0; i < G_N_ELEMENTS (gl_versions); i++) {
|
||||||
GstGLAPI selected_gl_api;
|
|
||||||
gint profileMask = 0;
|
gint profileMask = 0;
|
||||||
gint contextFlags = 0;
|
gint contextFlags = 0;
|
||||||
|
|
||||||
if (gl_api & GST_GL_API_OPENGL3 && (gl_versions[i].major > 3
|
if ((gl_versions[i].major > 3
|
||||||
|| (gl_versions[i].major == 3 && gl_versions[i].minor >= 2))) {
|
|| (gl_versions[i].major == 3 && gl_versions[i].minor >= 2))) {
|
||||||
profileMask |= GLX_CONTEXT_CORE_PROFILE_BIT_ARB;
|
profileMask |= GLX_CONTEXT_CORE_PROFILE_BIT_ARB;
|
||||||
selected_gl_api = GST_GL_API_OPENGL3;
|
|
||||||
contextFlags |= GLX_CONTEXT_DEBUG_BIT_ARB;
|
contextFlags |= GLX_CONTEXT_DEBUG_BIT_ARB;
|
||||||
} else {
|
} else {
|
||||||
selected_gl_api = GST_GL_API_OPENGL;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (context, "trying to create a GL %d.%d context",
|
GST_DEBUG_OBJECT (context, "trying to create a GL %d.%d context",
|
||||||
|
@ -274,11 +273,12 @@ gst_gl_context_glx_create_context (GstGLContext * context,
|
||||||
gl_versions[i].minor, contextFlags, profileMask);
|
gl_versions[i].minor, contextFlags, profileMask);
|
||||||
|
|
||||||
if (context_glx->glx_context) {
|
if (context_glx->glx_context) {
|
||||||
context_glx->priv->context_api = selected_gl_api;
|
context_glx->priv->context_api = GST_GL_API_OPENGL3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
if (!context_glx->glx_context && gl_api & GST_GL_API_OPENGL) {
|
||||||
context_glx->glx_context =
|
context_glx->glx_context =
|
||||||
glXCreateContext (device, window_x11->visual_info,
|
glXCreateContext (device, window_x11->visual_info,
|
||||||
(GLXContext) external_gl_context, TRUE);
|
(GLXContext) external_gl_context, TRUE);
|
||||||
|
|
Loading…
Reference in a new issue