Ian, maybe there's a better way to do this?

We need to enable OML_sync_control only if supported, now that we can
actually support it, otherwise old userspace depending on the somewhat
broken old behavior will break.

diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 29d589c..d69bb32 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -614,6 +614,7 @@ dri2CreateScreen(__GLXscreenConfigs * psc, int screen,
       psp->setSwapInterval = dri2SetSwapInterval;
       psp->getSwapInterval = dri2GetSwapInterval;
 #endif
+      __glXEnableExtension(psc, "GLX_OML_sync_control");
    }
 
    /* DRI2 suports SubBuffer through DRI2CopyRegion, so it's always
diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c
index 56c69cb..1f19ac1 100644
--- a/src/glx/glxextensions.c
+++ b/src/glx/glxextensions.c
@@ -90,7 +90,7 @@ static const struct extension_info known_glx_extensions[] = {
    { GLX(NV_render_texture_rectangle), VER(0,0), N, N, N, N },
    { GLX(NV_vertex_array_range),       VER(0,0), N, N, N, Y }, /* Deprecated */
    { GLX(OML_swap_method),             VER(0,0), Y, Y, N, N },
-   { GLX(OML_sync_control),            VER(0,0), Y, N, N, Y },
+   { GLX(OML_sync_control),            VER(0,0), N, N, N, N },
    { GLX(SGI_make_current_read),       VER(1,3), Y, N, N, N },
    { GLX(SGI_swap_control),            VER(0,0), Y, N, N, N },
    { GLX(SGI_video_sync),              VER(0,0), Y, N, N, Y },
@@ -371,6 +371,18 @@ __glXEnableDirectExtension(__GLXscreenConfigs * psc, const 
char *name)
                      name, strlen(name), GL_TRUE, psc->direct_support);
 }
 
+void
+__glXEnableExtension(__GLXscreenConfigs * psc, const char *name)
+{
+   __glXExtensionsCtr();
+   __glXExtensionsCtrScreen(psc);
+
+   set_glx_extension(known_glx_extensions,
+                     name, strlen(name), GL_TRUE, psc->direct_support);
+   set_glx_extension(known_glx_extensions,
+                     name, strlen(name), GL_TRUE, client_glx_support);
+}
+
 /**
  * Initialize global extension support tables.
  */
diff --git a/src/glx/glxextensions.h b/src/glx/glxextensions.h
index f556b12..f9f4ddd 100644
--- a/src/glx/glxextensions.h
+++ b/src/glx/glxextensions.h
@@ -259,6 +259,8 @@ extern GLboolean __glExtensionBitIsEnabled(const struct 
__GLXcontextRec *gc,
 extern void
 __glXEnableDirectExtension(struct __GLXscreenConfigsRec *psc,
                            const char *name);
+extern void
+__glXEnableExtension(struct __GLXscreenConfigsRec *psc, const char *name);
 
 /* Source-level backwards compatibility with old drivers. They won't
  * find the respective functions, though. 

------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to