[PATCH xserver 2/2] glx: Enable GLX_ARB_create_context_no_error

Adam Jackson ajax at redhat.com
Wed Dec 13 16:44:39 UTC 2017


This is mostly for the client library's convenience, if this extension
is listed then it can know the attribute won't be rejected. Note that we
don't _do_ anything with this attribute, meaning indirect contexts will
not be no-error. That's fine, we don't want to introduce undefined
behavior into a potentially privileged process anyway.

Signed-off-by: Adam Jackson <ajax at redhat.com>
---
 glx/extension_string.c | 1 +
 glx/extension_string.h | 1 +
 glx/glxdri2.c          | 2 ++
 glx/glxdriswrast.c     | 2 ++
 4 files changed, 6 insertions(+)

diff --git a/glx/extension_string.c b/glx/extension_string.c
index 102f9dd42b..354ce06f71 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 f049f58400..eab385a3c7 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 28d5a3a9c0..52c786977d 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -832,6 +832,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 caad9a1fe7..2858312de7 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,
-- 
2.14.3



More information about the xorg-devel mailing list