glx/dri: only report DRI2 extensions when DRI2 is enabled.
authorDave Airlie <airlied@linux.ie>
Sun, 13 Jul 2008 09:00:46 +0000 (19:00 +1000)
committerDave Airlie <airlied@linux.ie>
Sun, 13 Jul 2008 09:00:46 +0000 (19:00 +1000)
Fixes bug 15477

src/glx/x11/dri2_glx.c
src/glx/x11/dri_common.c
src/glx/x11/dri_common.h
src/glx/x11/dri_glx.c
src/glx/x11/drisw_glx.c

index b679c72c103baab87a09c448bf1681a6560f7845..0be65bce62485e4c92d31f8e0fcb9cf23dc51a00 100644 (file)
@@ -308,7 +308,7 @@ static __GLXDRIscreen *dri2CreateScreen(__GLXscreenConfigs *psc, int screen,
        return NULL;
     }
 
-    driBindExtensions(psc);
+    driBindExtensions(psc, 1);
 
     psc->configs = driConvertConfigs(psc->core, psc->configs, driver_configs);
     psc->visuals = driConvertConfigs(psc->core, psc->visuals, driver_configs);
index b159d193a51a2bdb03d98f0c5c0094eaee8a55f4..8175f46c547f731e53fd36dfe32cf7073842618c 100644 (file)
@@ -329,7 +329,7 @@ driConvertConfigs(const __DRIcoreExtension *core,
 }
 
 _X_HIDDEN void
-driBindExtensions(__GLXscreenConfigs *psc)
+driBindExtensions(__GLXscreenConfigs *psc, int dri2)
 {
     const __DRIextension **extensions;
     int i;
@@ -386,7 +386,7 @@ driBindExtensions(__GLXscreenConfigs *psc)
 #endif
 
 #ifdef __DRI_TEX_BUFFER
-       if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) {
+       if ((strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) && dri2) {
            psc->texBuffer = (__DRItexBufferExtension *) extensions[i];
            __glXEnableDirectExtension(psc, "GLX_EXT_texture_from_pixmap");
        }
index 3556510335a965d7286595a20faaa04367c75595..15f6cc87b9fb1ad7c820b3a578b541b5b8bfe27e 100644 (file)
@@ -55,6 +55,6 @@ extern void ErrorMessageF(const char *f, ...);
 
 extern void *driOpenDriver(const char *driverName);
 
-extern void driBindExtensions(__GLXscreenConfigs *psc);
+extern void driBindExtensions(__GLXscreenConfigs *psc, int dri2);
 
 #endif /* _DRI_COMMON_H */
index d53f2d985412eb06ec66a6dcc376f165563bb16f..82653f1625b82cb51aa7b9b34ce8dbcd71821b5e 100644 (file)
@@ -635,7 +635,7 @@ static __GLXDRIscreen *driCreateScreen(__GLXscreenConfigs *psc, int screen,
        return NULL;
     }
 
-    driBindExtensions(psc);
+    driBindExtensions(psc, 0);
 
     psp->destroyScreen = driDestroyScreen;
     psp->createContext = driCreateContext;
index f7ff0011216e982df9f94d7a4add8c1ba326963f..bcf7e144ef6417fc533644c208b0a0b665033e3c 100644 (file)
@@ -390,7 +390,7 @@ static __GLXDRIscreen *driCreateScreen(__GLXscreenConfigs *psc, int screen,
        goto handle_error;
     }
 
-    driBindExtensions(psc);
+    driBindExtensions(psc, 0);
 
     psc->configs = driConvertConfigs(psc->core, psc->configs, driver_configs);
     psc->visuals = driConvertConfigs(psc->core, psc->visuals, driver_configs);