Move new texOffset extension to the new extension mechanism.
authorKristian Høgsberg <krh@hinata.boston.redhat.com>
Tue, 22 May 2007 16:26:02 +0000 (12:26 -0400)
committerKristian Høgsberg <krh@redhat.com>
Thu, 11 Oct 2007 15:28:38 +0000 (11:28 -0400)
include/GL/internal/dri_interface.h
src/mesa/drivers/dri/common/dri_util.c
src/mesa/drivers/dri/radeon/radeon_screen.c
src/mesa/drivers/dri/radeon/radeon_screen.h

index 46f1f441d01dc6bd92d41adf223cfa9e2eca12c2..1efae11d621463becee29996139916bb728bc33e 100644 (file)
@@ -63,6 +63,7 @@ typedef struct __DRIswapControlExtensionRec   __DRIswapControlExtension;
 typedef struct __DRIallocateExtensionRec       __DRIallocateExtension;
 typedef struct __DRIframeTrackingExtensionRec  __DRIframeTrackingExtension;
 typedef struct __DRImediaStreamCounterExtensionRec     __DRImediaStreamCounterExtension;
+typedef struct __DRItexOffsetExtensionRec      __DRItexOffsetExtension;
 /*@}*/
 
 
@@ -169,6 +170,22 @@ struct __DRImediaStreamCounterExtensionRec {
 };
 
 
+#define __DRI_TEX_OFFSET "DRI_TexOffset"
+struct __DRItexOffsetExtensionRec {
+    __DRIextension base;
+
+    /**
+     * Method to override base texture image with a driver specific 'offset'.
+     * The depth passed in allows e.g. to ignore the alpha channel of texture
+     * images where the non-alpha components don't occupy a whole texel.
+     *
+     * For GLX_EXT_texture_from_pixmap with AIGLX.
+     */
+    void (*setTexOffset)(__DRIcontext *pDRICtx, GLint texname,
+                        unsigned long long offset, GLint depth, GLuint pitch);
+};
+
+
 /**
  * Macros for building symbol and strings.  Standard CPP two step...
  */
@@ -379,18 +396,6 @@ struct __DRIscreenRec {
                               int render_type,
                               __DRIcontext *shared,
                               drm_context_t hwContext, __DRIcontext *pctx);
-
-    /**
-     * Method to override base texture image with a driver specific 'offset'.
-     * The depth passed in allows e.g. to ignore the alpha channel of texture
-     * images where the non-alpha components don't occupy a whole texel.
-     *
-     * For GLX_EXT_texture_from_pixmap with AIGLX.
-     *
-     * \since Internal API version 20070121.
-     */
-    void (*setTexOffset)(__DRIcontext *pDRICtx, GLint texname,
-                        unsigned long long offset, GLint depth, GLuint pitch);
 };
 
 /**
index 20fee27f0a2adcf8d4489a8e89355adc9a0d6708..22093219785841c29527ca4e67f4df1915c41933 100644 (file)
@@ -752,9 +752,6 @@ void * __DRI_CREATE_NEW_SCREEN( int scrn, __DRIscreen *psc,
     psc->createNewDrawable = driCreateNewDrawable;
     psc->createNewContext  = driCreateNewContext;
 
-    if (internal_api_version >= 20070121)
-       psc->setTexOffset  = psp->DriverAPI.setTexOffset;
-
     *driver_modes = __driDriverInitScreen(psp);
     if (*driver_modes == NULL) {
        _mesa_free(psp);
index 269620cec47880f1271266cec8a35a03272aa9b7..84c6885d50f562f99e94a5a75cc9548774d22320 100644 (file)
@@ -333,14 +333,19 @@ radeonFillInModes( unsigned pixel_bits, unsigned depth_bits,
 }
 
 #if RADEON_COMMON && defined(RADEON_COMMON_FOR_R200)
-
 static const __DRIallocateExtension r200AllocateExtension = {
     { __DRI_ALLOCATE },
     r200AllocateMemoryMESA,
     r200FreeMemoryMESA,
     r200GetMemoryOffsetMESA
 };
+#endif
 
+#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R300)
+static const __DRItexOffsetExtension r300texOffsetExtension = {
+    { __DRI_TEX_OFFSET },
+   r300SetTexOffset,
+};
 #endif
 
 /* Create the device specific screen private data struct.
@@ -755,6 +760,10 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
        screen->extensions[i++] = &r200AllocateExtension.base;
 #endif
 
+#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R300)
+   screen->extensions[i++] = &r300texOffsetExtension.base;
+#endif
+
    screen->extensions[i++] = NULL;
    sPriv->extensions = screen->extensions;
 
@@ -956,9 +965,6 @@ static struct __DriverAPIRec radeonAPI = {
    .WaitForSBC      = NULL,
    .SwapBuffersMSC  = NULL,
    .CopySubBuffer   = radeonCopySubBuffer,
-#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R300)
-   .setTexOffset    = r300SetTexOffset,
-#endif
 };
 #else
 static const struct __DriverAPIRec r200API = {
index 68755c985a68104d6ae5c97e94bb66273191deb2..184b0d225ef99e8c6747034e050cdd40e358807f 100644 (file)
@@ -104,7 +104,7 @@ typedef struct {
    /* Configuration cache with default values for all contexts */
    driOptionCache optionCache;
 
-   const __DRIextension *extensions[7];
+   const __DRIextension *extensions[8];
 } radeonScreenRec, *radeonScreenPtr;
 
 #define IS_R100_CLASS(screen) \