diff --git a/glx/createcontext.c b/glx/createcontext.c index 00c23fcdd..7d09c3a1c 100644 --- a/glx/createcontext.c +++ b/glx/createcontext.c @@ -218,6 +218,10 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc) return BadValue; break; + case GLX_CONTEXT_OPENGL_NO_ERROR_ARB: + /* ignore */ + break; + default: if (!req->isDirect) return BadValue; diff --git a/glx/extension_string.c b/glx/extension_string.c index 102f9dd42..354ce06f7 100644 --- a/glx/extension_string.c +++ b/glx/extension_string.c @@ -74,6 +74,7 @@ static const struct extension_info known_glx_extensions[] = { /* *INDENT-OFF* */ { GLX(ARB_context_flush_control), VER(0,0), N, }, { GLX(ARB_create_context), VER(0,0), N, }, + { GLX(ARB_create_context_no_error), VER(0,0), N, }, { GLX(ARB_create_context_profile), VER(0,0), N, }, { GLX(ARB_create_context_robustness), VER(0,0), N, }, { GLX(ARB_fbconfig_float), VER(0,0), N, }, diff --git a/glx/extension_string.h b/glx/extension_string.h index f049f5840..eab385a3c 100644 --- a/glx/extension_string.h +++ b/glx/extension_string.h @@ -38,6 +38,7 @@ enum { /* GLX_ARB_get_proc_address is implemented on the client. */ ARB_context_flush_control_bit = 0, ARB_create_context_bit, + ARB_create_context_no_error_bit, ARB_create_context_profile_bit, ARB_create_context_robustness_bit, ARB_fbconfig_float_bit, diff --git a/glx/glxdri2.c b/glx/glxdri2.c index 6887e199c..25ee9acf9 100644 --- a/glx/glxdri2.c +++ b/glx/glxdri2.c @@ -42,10 +42,10 @@ #include #include +#include #include "glxserver.h" #include "glxutil.h" #include "glxdricommon.h" -#include #include "extension_string.h" @@ -402,6 +402,9 @@ dri2_convert_glx_attribs(__GLXDRIscreen *screen, unsigned num_attribs, return FALSE; } break; + case GLX_CONTEXT_OPENGL_NO_ERROR_ARB: + /* ignore */ + break; default: /* If an unknown attribute is received, fail. */ @@ -832,6 +835,8 @@ initializeExtensions(__GLXscreen * screen) if (dri->dri2->base.version >= 3) { __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context"); + __glXEnableExtension(screen->glx_enable_bits, + "GLX_ARB_create_context_no_error"); __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context_profile"); __glXEnableExtension(screen->glx_enable_bits, diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c index caad9a1fe..2858312de 100644 --- a/glx/glxdriswrast.c +++ b/glx/glxdriswrast.c @@ -356,6 +356,8 @@ initializeExtensions(__GLXscreen * screen) if (dri->swrast->base.version >= 3) { __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context"); + __glXEnableExtension(screen->glx_enable_bits, + "GLX_ARB_create_context_no_error"); __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context_profile"); __glXEnableExtension(screen->glx_enable_bits, diff --git a/glx/glxserver.h b/glx/glxserver.h index 60bdeb00d..79f4944d0 100644 --- a/glx/glxserver.h +++ b/glx/glxserver.h @@ -50,6 +50,10 @@ #include #include +#ifndef GLX_CONTEXT_OPENGL_NO_ERROR_ARB +#define GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3 +#endif + /* ** GLX resources. */