Move media stream counter entry points to new extension.
authorKristian Høgsberg <krh@hinata.boston.redhat.com>
Wed, 16 May 2007 22:13:41 +0000 (18:13 -0400)
committerKristian Høgsberg <krh@redhat.com>
Thu, 11 Oct 2007 15:21:29 +0000 (11:21 -0400)
17 files changed:
include/GL/internal/dri_interface.h
src/glx/x11/glxclient.h
src/glx/x11/glxcmds.c
src/glx/x11/glxext.c
src/mesa/drivers/dri/common/dri_util.c
src/mesa/drivers/dri/common/dri_util.h
src/mesa/drivers/dri/i915/intel_screen.c
src/mesa/drivers/dri/i965/intel_screen.c
src/mesa/drivers/dri/mach64/mach64_screen.c
src/mesa/drivers/dri/mach64/mach64_screen.h
src/mesa/drivers/dri/mga/mga_xmesa.c
src/mesa/drivers/dri/r128/r128_screen.c
src/mesa/drivers/dri/r128/r128_screen.h
src/mesa/drivers/dri/radeon/radeon_screen.c
src/mesa/drivers/dri/radeon/radeon_screen.h
src/mesa/drivers/dri/unichrome/via_screen.c
src/mesa/drivers/dri/unichrome/via_screen.h

index c518fd0849c2f898cb16eb3c576eb2651bce8e33..2c91876e0db877365dd59914ecc47950d6501ec0 100644 (file)
@@ -62,6 +62,7 @@ typedef struct __DRIcopySubBufferExtensionRec __DRIcopySubBufferExtension;
 typedef struct __DRIswapControlExtensionRec    __DRIswapControlExtension;
 typedef struct __DRIallocateExtensionRec       __DRIallocateExtension;
 typedef struct __DRIframeTrackingExtensionRec  __DRIframeTrackingExtension;
+typedef struct __DRImediaStreamCounterExtensionRec     __DRImediaStreamCounterExtension;
 /*@}*/
 
 
@@ -137,6 +138,32 @@ struct __DRIframeTrackingExtensionRec {
                              float * lastMissedUsage, float * usage);
 };
 
+
+/**
+ * Used by drivers that implement the GLX_SGI_video_sync extension.
+ */
+#define __DRI_MEDIA_STREAM_COUNTER "DRI_MediaStreamCounter"
+struct __DRImediaStreamCounterExtensionRec {
+    __DRIextension base;
+
+    /**
+     * Get the number of vertical refreshes since some point in time before
+     * this function was first called (i.e., system start up).
+     */
+    int (*getMSC)(__DRIscreen *screen, int64_t *msc);
+
+    /**
+     * Wait for the MSC to equal target_msc, or, if that has already passed,
+     * the next time (MSC % divisor) is equal to remainder.  If divisor is
+     * zero, the function will return as soon as MSC is greater than or equal
+     * to target_msc.
+     */
+    int (*waitForMSC)(__DRIdrawable *drawable,
+                     int64_t target_msc, int64_t divisor, int64_t remainder,
+                     int64_t * msc, int64_t * sbc);
+};
+
+
 /**
  * \name Functions provided by the driver loader.
  */
@@ -374,14 +401,6 @@ struct __DRIscreenRec {
      */
     void *private;
 
-    /**
-     * Get the number of vertical refreshes since some point in time before
-     * this function was first called (i.e., system start up).
-     * 
-     * \since Internal API version 20030317.
-     */
-    int (*getMSC)(__DRIscreen *screen, int64_t *msc);
-
     /**
      * Method to create the private DRI context data and initialize the
      * context dependent methods.
@@ -464,47 +483,6 @@ struct __DRIdrawableRec {
      * screen used to create this drawable.  Never dereferenced in libGL.
      */
     void *private;
-
-    /**
-     * Get the number of completed swap buffers for this drawable.
-     *
-     * \since Internal API version 20030317.
-     */
-    int (*getSBC)(__DRIdrawable *drawable, int64_t *sbc);
-
-    /**
-     * Wait for the SBC to be greater than or equal target_sbc.
-     *
-     * \since Internal API version 20030317.
-     */
-    int (*waitForSBC)(__DRIdrawable *drawable,
-                     int64_t target_sbc,
-                     int64_t * msc, int64_t * sbc);
-
-    /**
-     * Wait for the MSC to equal target_msc, or, if that has already passed,
-     * the next time (MSC % divisor) is equal to remainder.  If divisor is
-     * zero, the function will return as soon as MSC is greater than or equal
-     * to target_msc.
-     * 
-     * \since Internal API version 20030317.
-     */
-    int (*waitForMSC)(__DRIdrawable *drawable,
-                     int64_t target_msc, int64_t divisor, int64_t remainder,
-                     int64_t * msc, int64_t * sbc);
-
-    /**
-     * Like \c swapBuffers, but does NOT have an implicit \c glFlush.  Once
-     * rendering is complete, waits until MSC is equal to target_msc, or
-     * if that has already passed, waits until (MSC % divisor) is equal
-     * to remainder.  If divisor is zero, the swap will happen as soon as
-     * MSC is greater than or equal to target_msc.
-     * 
-     * \since Internal API version 20030317.
-     */
-    int64_t (*swapBuffersMSC)(__DRIdrawable *drawable,
-                             int64_t target_msc,
-                             int64_t divisor, int64_t remainder);
 };
 
 #endif
index d9fc7a5a6c39bc622c778cddd6d44ebbdd1fb4e4..0709f3ef26e49df37e124928e0fe86ce4072ae13 100644 (file)
@@ -493,6 +493,10 @@ struct __GLXscreenConfigsRec {
     __DRIframeTrackingExtension *frameTracking;
 #endif
 
+#ifdef __DRI_MEDIA_STREAM_COUNTER
+    __DRImediaStreamCounterExtension *msc;
+#endif
+
 #endif
 
     /**
index 2b0403d37c9c06ab3bb31547ea1f05e3182cf933..a680c646d95f1d1c7684d983f1474027af26b4a8 100644 (file)
@@ -1931,19 +1931,18 @@ static int __glXGetVideoSyncSGI(unsigned int *count)
     * FIXME: there should be a GLX encoding for this call.  I can find no
     * FIXME: documentation for the GLX encoding.
     */
-#ifdef GLX_DIRECT_RENDERING
+#ifdef __DRI_MEDIA_STREAM_COUNTER
    GLXContext gc = __glXGetCurrentContext();
 
 
    if ( (gc != NULL) && gc->isDirect ) {
       __GLXscreenConfigs * const psc = GetGLXScreenConfigs( gc->currentDpy,
                                                            gc->screen );
-      if ( __glXExtensionBitIsEnabled( psc, SGI_video_sync_bit )
-          && psc->driScreen.private && psc->driScreen.getMSC) {
+      if (psc->msc != NULL && psc->driScreen.private != NULL) {
         int       ret;
         int64_t   temp;
 
-        ret = psc->driScreen.getMSC(&psc->driScreen, &temp);
+        ret = psc->msc->getMSC(&psc->driScreen, &temp);
         *count = (unsigned) temp;
         return (ret == 0) ? 0 : GLX_BAD_CONTEXT;
       }
@@ -1956,7 +1955,7 @@ static int __glXGetVideoSyncSGI(unsigned int *count)
 
 static int __glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
 {
-#ifdef GLX_DIRECT_RENDERING
+#ifdef __DRI_MEDIA_STREAM_COUNTER
    GLXContext gc = __glXGetCurrentContext();
 
    if ( divisor <= 0 || remainder < 0 )
@@ -1965,17 +1964,16 @@ static int __glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count
    if ( (gc != NULL) && gc->isDirect ) {
       __GLXscreenConfigs * const psc = GetGLXScreenConfigs( gc->currentDpy,
                                                            gc->screen );
-      if ( __glXExtensionBitIsEnabled( psc, SGI_video_sync_bit )
-          && psc->driScreen.private ) {
+      if (psc->msc != NULL && psc->driScreen.private ) {
         __DRIdrawable * const pdraw = 
             GetDRIDrawable(gc->currentDpy, gc->currentDrawable, NULL);
-        if ( (pdraw != NULL) && (pdraw->waitForMSC != NULL) ) {
+        if (pdraw != NULL) {
            int       ret;
            int64_t   msc;
            int64_t   sbc;
 
-           ret = (*pdraw->waitForMSC)(pdraw, 0,
-                                      divisor, remainder, &msc, &sbc);
+           ret = (*psc->msc->waitForMSC)(pdraw, 0,
+                                         divisor, remainder, &msc, &sbc);
            *count = (unsigned) msc;
            return (ret == 0) ? 0 : GLX_BAD_CONTEXT;
         }
@@ -2130,7 +2128,7 @@ static Bool __glXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max)
 static Bool __glXGetSyncValuesOML(Display *dpy, GLXDrawable drawable,
                                  int64_t *ust, int64_t *msc, int64_t *sbc)
 {
-#ifdef GLX_DIRECT_RENDERING
+#if defined(__DRI_SWAP_BUFFER_COUNTER) && defined(__DRI_MEDIA_STREAM_COUNTER)
     __GLXdisplayPrivate * const priv = __glXInitialize(dpy);
 
     if ( priv != NULL ) {
@@ -2139,11 +2137,10 @@ static Bool __glXGetSyncValuesOML(Display *dpy, GLXDrawable drawable,
        __GLXscreenConfigs * const psc = &priv->screenConfigs[i];
 
        assert( (pdraw == NULL) || (i != -1) );
-       return ( (pdraw && pdraw->getSBC && psc->driScreen.getMSC)
-                && __glXExtensionBitIsEnabled( psc, OML_sync_control_bit )
-                && ((*psc->driScreen.getMSC)(&psc->driScreen, msc) == 0)
-                && ((*pdraw->getSBC)(pdraw, sbc ) == 0)
-                && (__glXGetUST( ust ) == 0) );
+       return ( (pdraw && psc->sbc && psc->msc)
+                && ((*psc->msc->getMSC)(&psc->driScreen, msc) == 0)
+                && ((*psc->sbc->getSBC)(pdraw, sbc) == 0)
+                && (__glXGetUST(ust) == 0) );
     }
 #else
    (void) dpy;
@@ -2248,7 +2245,7 @@ static int64_t __glXSwapBuffersMscOML(Display *dpy, GLXDrawable drawable,
                                      int64_t target_msc, int64_t divisor,
                                      int64_t remainder)
 {
-#ifdef GLX_DIRECT_RENDERING
+#ifdef __DRI_SWAP_BUFFER_COUNTER
    int screen;
    __DRIdrawable *pdraw = GetDRIDrawable( dpy, drawable, & screen );
    __GLXscreenConfigs * const psc = GetGLXScreenConfigs( dpy, screen );
@@ -2263,10 +2260,10 @@ static int64_t __glXSwapBuffersMscOML(Display *dpy, GLXDrawable drawable,
    if ( divisor > 0 && remainder >= divisor )
       return -1;
 
-   if ( (pdraw != NULL) && (pdraw->swapBuffersMSC != NULL)
-       && __glXExtensionBitIsEnabled( psc, OML_sync_control_bit ) ) {
-      return (*pdraw->swapBuffersMSC)(pdraw, target_msc, divisor, remainder);
-   }
+   if (pdraw != NULL && psc->counters != NULL)
+      return (*psc->sbc->swapBuffersMSC)(pdraw, target_msc,
+                                        divisor, remainder);
+
 #else
    (void) dpy;
    (void) drawable;
@@ -2283,7 +2280,7 @@ static Bool __glXWaitForMscOML(Display * dpy, GLXDrawable drawable,
                               int64_t remainder, int64_t *ust,
                               int64_t *msc, int64_t *sbc)
 {
-#ifdef GLX_DIRECT_RENDERING
+#ifdef __DRI_MEDIA_STREAM_COUNTER
    int screen;
    __DRIdrawable *pdraw = GetDRIDrawable( dpy, drawable, & screen );
    __GLXscreenConfigs * const psc = GetGLXScreenConfigs( dpy, screen );
@@ -2297,10 +2294,9 @@ static Bool __glXWaitForMscOML(Display * dpy, GLXDrawable drawable,
    if ( divisor > 0 && remainder >= divisor )
       return False;
 
-   if ( (pdraw != NULL) && (pdraw->waitForMSC != NULL)
-       && __glXExtensionBitIsEnabled( psc, OML_sync_control_bit ) ) {
-      ret = (*pdraw->waitForMSC)(pdraw, target_msc,
-                                divisor, remainder, msc, sbc);
+   if (pdraw != NULL && psc->msc != NULL) {
+      ret = (*psc->msc->waitForMSC)(pdraw, target_msc,
+                                   divisor, remainder, msc, sbc);
 
       /* __glXGetUST returns zero on success and non-zero on failure.
        * This function returns True on success and False on failure.
@@ -2325,7 +2321,7 @@ static Bool __glXWaitForSbcOML(Display * dpy, GLXDrawable drawable,
                               int64_t target_sbc, int64_t *ust,
                               int64_t *msc, int64_t *sbc )
 {
-#ifdef GLX_DIRECT_RENDERING
+#ifdef __DRI_SWAP_BUFFER_COUNTER
    int screen;
    __DRIdrawable *pdraw = GetDRIDrawable( dpy, drawable, & screen );
    __GLXscreenConfigs * const psc = GetGLXScreenConfigs( dpy, screen );
@@ -2337,9 +2333,8 @@ static Bool __glXWaitForSbcOML(Display * dpy, GLXDrawable drawable,
    if ( target_sbc < 0 )
       return False;
 
-   if ( (pdraw != NULL) && (pdraw->waitForSBC != NULL)
-       && __glXExtensionBitIsEnabled( psc, OML_sync_control_bit )) {
-      ret = (*pdraw->waitForSBC)(pdraw, target_sbc, msc, sbc);
+   if (pdraw != NULL && psc->sbc != NULL) {
+      ret = (*psc->sbc->waitForSBC)(pdraw, target_sbc, msc, sbc);
 
       /* __glXGetUST returns zero on success and non-zero on failure.
        * This function returns True on success and False on failure.
index 8a70e677342bbe1930941c7202f9b98c6a9eb51b..643db487c581b58ef8f9c88e369e63bca21f72a1 100644 (file)
@@ -1051,10 +1051,23 @@ static void queryExtensions(__GLXscreenConfigs *psc)
        if (strcmp(extensions[i]->name, __DRI_FRAME_TRACKING) == 0) {
            psc->frameTracking = (__DRIframeTrackingExtension *) extensions[i];
            __glXScrEnableExtension(&psc->driScreen,
-                                   "GLX_MESA_swap_frame_usage");           
+                                   "GLX_MESA_swap_frame_usage");
        }
 #endif
 
+#ifdef __DRI_MEDIA_STREAM_COUNTER
+       if (strcmp(extensions[i]->name, __DRI_MEDIA_STREAM_COUNTER) == 0) {
+           psc->msc = (__DRImediaStreamCounterExtension *) extensions[i];
+           __glXScrEnableExtension(&psc->driScreen,
+                                   "GLX_SGI_video_sync");
+       }
+#endif
+
+#ifdef __DRI_SWAP_BUFFER_COUNTER
+       /* No driver supports this at this time and the extension is
+        * not defined in dri_interface.h.  Will enable
+        * GLX_OML_sync_control if implemented. */
+#endif
        /* Ignore unknown extensions */
     }
 }
index 7815f361a83e0d9e153c11111dd5ec32c2bc6e6b..e20c4fe5face9f532b6e9fe3b7f0413bbc302da1 100644 (file)
@@ -358,31 +358,6 @@ static int driGetMSC( __DRIscreen *screen, int64_t *msc )
     return sPriv->DriverAPI.GetMSC( sPriv, msc );
 }
 
-/**
- * Called directly from a number of higher-level GLX functions.
- */
-static int driGetSBC(__DRIdrawable *drawable, int64_t *sbc)
-{
-   __DRIdrawablePrivate *dPriv = drawable->private;
-   __DRIswapInfo  sInfo;
-   int  status;
-
-
-   status = dPriv->driScreenPriv->DriverAPI.GetSwapInfo( dPriv, & sInfo );
-   *sbc = sInfo.swap_count;
-
-   return status;
-}
-
-static int driWaitForSBC(__DRIdrawable *drawable, int64_t target_sbc,
-                        int64_t * msc, int64_t * sbc)
-{
-    __DRIdrawablePrivate *dPriv = drawable->private;
-
-    return dPriv->driScreenPriv->DriverAPI.WaitForSBC( dPriv, target_sbc,
-                                                       msc, sbc );
-}
-
 static int driWaitForMSC(__DRIdrawable *drawable, int64_t target_msc,
                         int64_t divisor, int64_t remainder,
                         int64_t * msc, int64_t * sbc)
@@ -409,15 +384,11 @@ static int driWaitForMSC(__DRIdrawable *drawable, int64_t target_msc,
     return status;
 }
 
-static int64_t driSwapBuffersMSC(__DRIdrawable *drawable, int64_t target_msc,
-                                int64_t divisor, int64_t remainder)
-{
-    __DRIdrawablePrivate *dPriv = drawable->private;
-
-    return dPriv->driScreenPriv->DriverAPI.SwapBuffersMSC( dPriv, target_msc,
-                                                           divisor, 
-                                                           remainder );
-}
+const __DRImediaStreamCounterExtension driMediaStreamCounterExtension = {
+    { __DRI_MEDIA_STREAM_COUNTER },
+    driGetMSC,
+    driWaitForMSC,
+};
 
 static void driCopySubBuffer(__DRIdrawable *drawable,
                              int x, int y, int w, int h)
@@ -506,11 +477,6 @@ static void *driCreateNewDrawable(__DRIscreen *screen,
     pdraw->destroyDrawable = driDestroyDrawable;
     pdraw->swapBuffers = driSwapBuffers;  /* called by glXSwapBuffers() */
 
-    pdraw->getSBC = driGetSBC;
-    pdraw->waitForSBC = driWaitForSBC;
-    pdraw->waitForMSC = driWaitForMSC;
-    pdraw->swapBuffersMSC = driSwapBuffersMSC;
-
     /* This special default value is replaced with the configured
      * default value when the drawable is first bound to a direct
      * rendering context. 
@@ -776,7 +742,6 @@ void * __DRI_CREATE_NEW_SCREEN( int scrn, __DRIscreen *psc,
     psc->destroyScreen     = driDestroyScreen;
     psc->getExtensions     = driGetExtensions;
     psc->createNewDrawable = driCreateNewDrawable;
-    psc->getMSC            = driGetMSC;
     psc->createNewContext  = driCreateNewContext;
 
     if (internal_api_version >= 20070121)
index a7149bc55252342f6a2e827171f204b92ca63e94..e43a5b752e89b37272c68e2668ea843b52b0605b 100644 (file)
@@ -79,6 +79,7 @@ extern __GLcontextModes *__driDriverInitScreen(__DRIscreenPrivate *psp);
 extern const __DRIcopySubBufferExtension driCopySubBufferExtension;
 extern const __DRIswapControlExtension driSwapControlExtension;
 extern const __DRIframeTrackingExtension driFrameTrackingExtension;
+extern const __DRImediaStreamCounterExtension driMediaStreamCounterExtension;
 
 /**
  * Used by DRI_VALIDATE_DRAWABLE_INFO
index 041ff6bef087113d0f019a5b6d28fbbf2df99551..60d375874dfcb0d8f6a9f7ca41882410437c4c9b 100644 (file)
@@ -431,6 +431,7 @@ static const __DRIextension *intelExtensions[] = {
     &driSwapControlExtension.base,
     &intelAllocateExtension.base,
     &driFrameTrackingExtension.base,
+    &driMediaStreamCounterExtension.base,
     NULL
 };
 
@@ -539,7 +540,6 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv)
    sPriv->extensions = intelExtensions;
 
    if (glx_enable_extension != NULL) {
-      (*glx_enable_extension) (sPriv->psc, "GLX_SGI_video_sync");
       (*glx_enable_extension) (sPriv->psc, "GLX_SGI_make_current_read");
    }
 
index ed8d207a49478ce430cb3c98c0aa5047bd3d2692..a4d63599e555186108359bdcc29771f2ee041daa 100644 (file)
@@ -268,6 +268,7 @@ static const __DRIextension *intelExtensions[] = {
     &driCopySubBufferExtension.base,
     &driSwapControlExtension.base,
     &driFrameTrackingExtension.base,
+    &driMediaStreamCounterExtension.base,
     NULL
 };
 
@@ -358,10 +359,8 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv)
 
    sPriv->extensions = intelExtensions;
 
-   if (glx_enable_extension != NULL) {
-      (*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
+   if (glx_enable_extension != NULL)
       (*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
-   }
    
    return GL_TRUE;
 }
index adbed098777feb14b4fbd0af476a100c81d1af1c..04eb0815149b6abf506db90a430d4c8f454f8bf2 100644 (file)
@@ -208,8 +208,6 @@ mach64CreateScreen( __DRIscreenPrivate *sPriv )
 {
    mach64ScreenPtr mach64Screen;
    ATIDRIPtr serverInfo = (ATIDRIPtr)sPriv->pDevPriv;
-   PFNGLXSCRENABLEEXTENSIONPROC glx_enable_extension =
-     (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
    int i;
 
    if (sPriv->devPrivSize != sizeof(ATIDRIRec)) {
@@ -321,12 +319,9 @@ mach64CreateScreen( __DRIscreenPrivate *sPriv )
 
    i = 0;
    mach64Screen->extensions[i++] = &driFrameTrackingExtension.base;
-   if ( glx_enable_extension != NULL ) {
-      if ( mach64Screen->irq != 0 ) {
-        mach64Screen->extensions[i++] = &driSwapControlExtension.base;
-
-        (*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
-      }
+   if ( mach64Screen->irq != 0 ) {
+      mach64Screen->extensions[i++] = &driSwapControlExtension.base;
+      mach64Screen->extensions[i++] = &driMediaStreamCounterExtension.base;
    }
    mach64Screen->extensions[i++] = NULL;
    sPriv->extensions = mach64Screen->extensions;
index 732cb3f23ad454ec41aaa1d7f8c4fb9ec85d7196..766554d7e4dc146114b9797bf06507f640d04d7e 100644 (file)
@@ -74,7 +74,7 @@ typedef struct {
 
    driOptionCache optionCache;
 
-   const __DRIextension *extensions[3];
+   const __DRIextension *extensions[4];
 } mach64ScreenRec, *mach64ScreenPtr;
 
 #endif /* __MACH64_SCREEN_H__ */
index 198c5d5ca95523e6caa08e8c6ffb7621fd359c4b..6f138351ccdb5bffa82fcddfe009657cd0857851 100644 (file)
@@ -196,6 +196,7 @@ mgaFillInModes( unsigned pixel_bits, unsigned depth_bits,
 static const __DRIextension *mgaExtensions[] = {
     &driSwapControlExtension.base,
     &driFrameTrackingExtension.base,
+    &driMediaStreamCounterExtension.base,
     NULL
 };
 
@@ -242,10 +243,8 @@ mgaInitDriver(__DRIscreenPrivate *sPriv)
 
    sPriv->extensions = mgaExtensions;
 
-   if ( glx_enable_extension != NULL ) {
+   if ( glx_enable_extension != NULL )
       (*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
-      (*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
-   }
 
    if (serverInfo->chipset != MGA_CARD_TYPE_G200 &&
        serverInfo->chipset != MGA_CARD_TYPE_G400) {
index c7bd876283196597aade028c3a0996495e37b056..9d65ebddf7d77023a1cbea2fbeb6dffa69a5ba2c 100644 (file)
@@ -98,8 +98,6 @@ r128CreateScreen( __DRIscreenPrivate *sPriv )
 {
    r128ScreenPtr r128Screen;
    R128DRIPtr r128DRIPriv = (R128DRIPtr)sPriv->pDevPriv;
-   PFNGLXSCRENABLEEXTENSIONPROC glx_enable_extension =
-     (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
    int i;
 
    if (sPriv->devPrivSize != sizeof(R128DRIRec)) {
@@ -228,11 +226,9 @@ r128CreateScreen( __DRIscreenPrivate *sPriv )
 
    i = 0;
    r128Screen->extensions[i++] = &driFrameTrackingExtension.base;
-   if ( glx_enable_extension != NULL ) {
-      if ( r128Screen->irq != 0 ) {
-         r128Screen->extensions[i++] = &driSwapControlExtension.base;
-        (*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
-      }
+   if ( r128Screen->irq != 0 ) {
+       r128Screen->extensions[i++] = &driSwapControlExtension.base;
+       r128Screen->extensions[i++] = &driMediaStreamCounterExtension.base;
    }
    r128Screen->extensions[i++] = NULL;
    sPriv->extensions = r128Screen->extensions;
index 75dc084d9d1017304f8fcdc949e67f178b42da63..c333713766c2485486621e128af18432944c0059 100644 (file)
@@ -78,7 +78,7 @@ typedef struct {
    /* Configuration cache with default values for all contexts */
    driOptionCache optionCache;
 
-   const __DRIextension *extensions[3];
+   const __DRIextension *extensions[4];
 
 } r128ScreenRec, *r128ScreenPtr;
 
index 4eaff652c7caf1c1fbde44be5927ea7dcb178226..56493f5a3aa128d313e962e2a6a655bc20cc0867 100644 (file)
@@ -745,15 +745,12 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
    i = 0;
    screen->extensions[i++] = &driCopySubBufferExtension.base;
    screen->extensions[i++] = &driFrameTrackingExtension.base;
-
-   if ( glx_enable_extension != NULL ) {
-      if ( screen->irq != 0 ) {
-         screen->extensions[i++] = &driSwapControlExtension.base;
-        (*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
-      }
-
-      (*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
+   if ( screen->irq != 0 ) {
+       screen->extensions[i++] = &driSwapControlExtension.base;
+       screen->extensions[i++] = &driMediaStreamCounterExtension.base;
    }
+   if ( glx_enable_extension != NULL )
+      (*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
 
 #if RADEON_COMMON && defined(RADEON_COMMON_FOR_R200)
    if (IS_R200_CLASS(screen))
index 100121091799d2bd27634cd3182d2b6b3799ac35..0caac17dafb8407ebd2fe8d64fccfc799f7bac17 100644 (file)
@@ -104,7 +104,7 @@ typedef struct {
    /* Configuration cache with default values for all contexts */
    driOptionCache optionCache;
 
-   const __DRIextension *extensions[5];
+   const __DRIextension *extensions[6];
 } radeonScreenRec, *radeonScreenPtr;
 
 #define IS_R100_CLASS(screen) \
index 025d8f63af499ffaeb4d03a107de70b4972874f1..fddf0799346bf359d360e8954f96988b64775b90 100644 (file)
@@ -177,14 +177,14 @@ viaInitDriver(__DRIscreenPrivate *sPriv)
 
     i = 0;
     viaScreen->extensions[i++] = &driFrameTrackingExtension.base;
-    if ( glx_enable_extension != NULL ) {
-       if ( viaScreen->irqEnabled ) {
-         viaScreen->extensions[i++] = &driSwapControlExtension.base;
-         (*glx_enable_extension)( sPriv->psc, "GLX_SGI_video_sync" );
-       }
+    if ( viaScreen->irqEnabled ) {
+       viaScreen->extensions[i++] = &driSwapControlExtension.base;
+       viaScreen->extensions[i++] = &driMediaStreamCounterExtension.base;
+    }
 
+    if ( glx_enable_extension != NULL )
        (*glx_enable_extension)( sPriv->psc, "GLX_SGI_make_current_read" );
-    }
+
     viaScreen->extensions[i++] = NULL;
     sPriv->extensions = viaScreen->extensions;
 
index 3dc52ba96a845c72bd3f1d848895029710c1d4d3..5e5bc851b05dd7005c3f2073abe1569354f2339d 100644 (file)
@@ -71,7 +71,7 @@ typedef struct {
     /* Configuration cache with default values for all contexts */
     driOptionCache optionCache;
 
-    const __DRIextension *extensions[3];
+    const __DRIextension *extensions[4];
 } viaScreenPrivate;