Use __DRIextension mechanism providing loader functionality to the driver.
[mesa.git] / src / mesa / drivers / dri / unichrome / via_context.c
index 66e92cc602e07f871ae72b9ff52f8f8a0e6ae664..bbb198bf0e8b34a3d01773aaec37682821e24ac9 100644 (file)
@@ -658,14 +658,10 @@ viaCreateContext(const __GLcontextModes *visual,
         driQueryOptionb(&vmesa->optionCache, "no_rast"))
        FALLBACK(vmesa, VIA_FALLBACK_USER_DISABLE, 1);
 
-    vmesa->vblank_flags =
-       vmesa->viaScreen->irqEnabled ?
-        driGetDefaultVBlankFlags(&vmesa->optionCache) : VBLANK_FLAG_NO_IRQ;
-
     if (getenv("VIA_PAGEFLIP"))
        vmesa->allowPageFlip = 1;
 
-    (*dri_interface->getUST)( &vmesa->swap_ust );
+    (*sPriv->systemTime->getUST)( &vmesa->swap_ust );
 
 
     vmesa->regMMIOBase = (GLuint *)((unsigned long)viaScreen->reg);
@@ -740,8 +736,8 @@ void viaXMesaWindowMoved(struct via_context *vmesa)
    draw_buffer =  (struct via_renderbuffer *) drawable->driverPrivate;
    read_buffer =  (struct via_renderbuffer *) readable->driverPrivate;
    
-   switch (vmesa->glCtx->DrawBuffer->_ColorDrawBufferMask[0]) {
-   case BUFFER_BIT_BACK_LEFT: 
+   switch (vmesa->glCtx->DrawBuffer->_ColorDrawBufferIndexes[0]) {
+   case BUFFER_BACK_LEFT: 
       if (drawable->numBackClipRects == 0) {
         vmesa->numClipRects = drawable->numClipRects;
         vmesa->pClipRects = drawable->pClipRects;
@@ -751,7 +747,7 @@ void viaXMesaWindowMoved(struct via_context *vmesa)
         vmesa->pClipRects = drawable->pBackClipRects;
       }
       break;
-   case BUFFER_BIT_FRONT_LEFT:
+   case BUFFER_FRONT_LEFT:
       vmesa->numClipRects = drawable->numClipRects;
       vmesa->pClipRects = drawable->pClipRects;
       break;
@@ -837,13 +833,17 @@ viaMakeCurrent(__DRIcontextPrivate *driContextPriv,
         drawBuffer = (GLframebuffer *)driDrawPriv->driverPrivate;
         readBuffer = (GLframebuffer *)driReadPriv->driverPrivate;
 
-       if (vmesa->driDrawable != driDrawPriv) {
-          driDrawableInitVBlank(driDrawPriv, vmesa->vblank_flags,
-                                &vmesa->vbl_seq);
-       }
-
        if ((vmesa->driDrawable != driDrawPriv)
           || (vmesa->driReadable != driReadPriv)) {
+         if (driDrawPriv->swap_interval == (unsigned)-1) {
+            driDrawPriv->vblFlags =
+               vmesa->viaScreen->irqEnabled ?
+               driGetDefaultVBlankFlags(&vmesa->optionCache) :
+               VBLANK_FLAG_NO_IRQ;
+
+            driDrawableInitVBlank(driDrawPriv);
+         }
+
          vmesa->driDrawable = driDrawPriv;
          vmesa->driReadable = driReadPriv;