Add Egberts fixes for 64bit architectures
authorAlan Hourihane <alanh@tungstengraphics.com>
Mon, 15 Aug 2005 06:59:24 +0000 (06:59 +0000)
committerAlan Hourihane <alanh@tungstengraphics.com>
Mon, 15 Aug 2005 06:59:24 +0000 (06:59 +0000)
Add additional checks for the *DRIRec info structure passed in from the
device driver. This ensures that things fallback to indirect rendering if
the DDX driver has had modifications (i.e. removal of the drmAddress field).

27 files changed:
src/mesa/drivers/dri/ffb/ffb_xmesa.c
src/mesa/drivers/dri/ffb/server/ffb_drishare.h
src/mesa/drivers/dri/gamma/gamma_screen.c
src/mesa/drivers/dri/i810/i810screen.c
src/mesa/drivers/dri/i810/server/i810_dri.c
src/mesa/drivers/dri/i810/server/i810_dri.h
src/mesa/drivers/dri/i830/i830_screen.c
src/mesa/drivers/dri/i830/server/i830_dri.h
src/mesa/drivers/dri/i915/intel_screen.c
src/mesa/drivers/dri/mach64/mach64_screen.c
src/mesa/drivers/dri/mga/mga_xmesa.c
src/mesa/drivers/dri/mga/server/mga_dri.c
src/mesa/drivers/dri/mga/server/mga_dri.h
src/mesa/drivers/dri/r128/r128_screen.c
src/mesa/drivers/dri/r128/server/r128_dri.c
src/mesa/drivers/dri/r200/r200_screen.c
src/mesa/drivers/dri/r300/radeon_screen.c
src/mesa/drivers/dri/radeon/radeon_screen.c
src/mesa/drivers/dri/radeon/server/radeon_dri.c
src/mesa/drivers/dri/s3v/s3v_screen.c
src/mesa/drivers/dri/savage/savage_xmesa.c
src/mesa/drivers/dri/sis/server/sis_dri.h
src/mesa/drivers/dri/sis/sis_screen.c
src/mesa/drivers/dri/tdfx/server/tdfx_dri.h
src/mesa/drivers/dri/tdfx/tdfx_screen.c
src/mesa/drivers/dri/trident/trident_context.c
src/mesa/drivers/dri/unichrome/via_screen.c

index e260e1de24be1c45772365fb9df95cd6fe1a5764..5b50d24d9e34ed01a9a1c6b97b68449eedce777e 100644 (file)
@@ -68,6 +68,12 @@ ffbInitDriver(__DRIscreenPrivate *sPriv)
        if (getenv("LIBGL_FORCE_XSERVER"))
                return GL_FALSE;
 
+
+       if (sPriv->devPrivSize != sizeof(FFBDRIRec)) {
+               fprintf(stderr,"\nERROR!  sizeof(FFBDRIRec) does not match passed size from device driver\n");
+               return GL_FALSE;
+       }
+
        /* Allocate the private area. */
        ffbScreen = (ffbScreenPrivate *) MALLOC(sizeof(ffbScreenPrivate));
        if (!ffbScreen)
@@ -721,7 +727,7 @@ void * __driCreateNewScreen_20050727( __DRInativeDisplay *dpy, int scrn, __DRIsc
                             
 {
    __DRIscreenPrivate *psp;
-   static const __DRIversion ddx_expected = { 0, 0, 1 };
+   static const __DRIversion ddx_expected = { 0, 1, 1 };
    static const __DRIversion dri_expected = { 4, 0, 0 };
    static const __DRIversion drm_expected = { 0, 0, 1 };
 
index f023920a1fc6a426237d763de83c3c5da52e7188..baf2f0d0a6592e7251f1e134bd3a599382119ddd 100644 (file)
@@ -21,23 +21,18 @@ typedef struct ffb_dri_state {
 typedef struct {
        drm_handle_t    hFbcRegs;
        drmSize         sFbcRegs;
-       drmAddress      mFbcRegs;
 
        drm_handle_t    hDacRegs;
        drmSize         sDacRegs;
-       drmAddress      mDacRegs;
 
        drm_handle_t    hSfb8r;
        drmSize         sSfb8r;
-       drmAddress      mSfb8r;
 
        drm_handle_t    hSfb32;
        drmSize         sSfb32;
-       drmAddress      mSfb32;
 
        drm_handle_t    hSfb64;
        drmSize         sSfb64;
-       drmAddress      mSfb64;
 
        /* Fastfill/Pagefill parameters. */
        unsigned char   disable_pagefill;
index bc6b254d3285090158a10786ab7a899bb7a0422a..0b91d059e929149155e5707f9bc1d5c9331de2a8 100644 (file)
@@ -35,6 +35,11 @@ gammaScreenPtr gammaCreateScreen( __DRIscreenPrivate *sPriv )
    GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)sPriv->pDevPriv;
    int i;
 
+   if (sPriv->devPrivSize != sizeof(GLINTDRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(GLINTDRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
+
 #if 0
    /* Check the DRI externsion version */
    if ( sPriv->driMajor != 3 || sPriv->driMinor != 1 ) {
index 7c5f38e3586879921b521123f23c4ff831fb5b16..c6546d1ebd23df3b5baad810ed35d71d11ab73c8 100644 (file)
@@ -223,6 +223,10 @@ i810InitDriver(__DRIscreenPrivate *sPriv)
    i810ScreenPrivate *i810Screen;
    I810DRIPtr         gDRIPriv = (I810DRIPtr)sPriv->pDevPriv;
 
+   if (sPriv->devPrivSize != sizeof(I810DRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(I810DRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
 
    /* Allocate the private area */
    i810Screen = (i810ScreenPrivate *)CALLOC(sizeof(i810ScreenPrivate));
index 17e0f4ead3fcaef02f754b2997e7147db7e27531..f52797c5ed21f255bd5a3989a1759af09cf1f1a7 100644 (file)
@@ -212,7 +212,7 @@ static int I810DRIAgpInit( const DRIDriverContext *ctx, I810Ptr info)
    drmAgpAlloc(ctx->drmFD, 4096 * 1024, 1, NULL, &dcacheHandle);
    info->dcacheHandle = dcacheHandle;
    
-   fprintf(stderr, "[agp] dcacheHandle : %p\n", dcacheHandle);
+   fprintf(stderr, "[agp] dcacheHandle : 0x%x\n", dcacheHandle);
 
 #define Elements(x) sizeof(x)/sizeof(*x)
    for (pitch_idx = 0; pitch_idx < Elements(i810_pitches); pitch_idx++)
@@ -710,7 +710,7 @@ static int I810ScreenInit( DRIDriverContext *ctx, I810Ptr info )
       return 0;
    }
    fprintf(stderr,
-          "[drm] register handle = 0x%08lx\n", info->regs);
+          "[drm] register handle = 0x%08x\n", info->regs);
 
    I810DRIAgpPreInit(ctx, info);
    /* Need to AddMap the framebuffer and mmio regions here:
index 2e710a414acec63f85c484155609ec89c3f7bc9b..408a4ebb4d5a1186dec8b8bed07dca702be523db 100644 (file)
@@ -11,7 +11,6 @@
 typedef struct {
    drm_handle_t regs;
    drmSize regsSize;
-   drmAddress regsMap;
 
    drmSize backbufferSize;
    drm_handle_t backbuffer;
index 4d47f1618186b7ded6e3ffff50f2cafa97941cb8..25def0b6fec9ac9f3ccf333be61e46cadcd366c0 100644 (file)
@@ -146,6 +146,10 @@ static GLboolean i830InitDriver(__DRIscreenPrivate *sPriv)
      (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
    void * const psc = sPriv->psc->screenConfigs;
 
+   if (sPriv->devPrivSize != sizeof(I830DRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(I830DRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
 
    /* Allocate the private area */
    i830Screen = (i830ScreenPrivate *)CALLOC(sizeof(i830ScreenPrivate));
index 6477f4e79ffc932b084d7389fedf0007a88d9465..e4b36cc16a2a548b32b61fa84042366b9346ee51 100644 (file)
@@ -18,7 +18,6 @@
 typedef struct _I830DRIRec {
    drm_handle_t regs;
    drmSize regsSize;
-   drmAddress regsMap;
 
    drmSize backbufferSize;
    drm_handle_t backbuffer;
index 61166fe2a6c74e6c8b8ed19ed2e3360ec9b14841..57c7504bf28e2bfc8c6524b8babc4c2c859047e3 100644 (file)
@@ -80,7 +80,7 @@ static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv)
    void * const psc = sPriv->psc->screenConfigs;
 
    if (sPriv->devPrivSize != sizeof(I830DRIRec)) {
-      fprintf(stderr,"\nERROR!  sizeof(I830DRIRec) does not match passed size from 2D driver\n");
+      fprintf(stderr,"\nERROR!  sizeof(I830DRIRec) does not match passed size from device driver\n");
       return GL_FALSE;
    }
 
index 0bd8d6eb77d2ab6e870173149d9363a1c7421a0d..bcdaea166d0e9ff3ce800e16751c8bf7f11f6fd0 100644 (file)
@@ -211,6 +211,10 @@ mach64CreateScreen( __DRIscreenPrivate *sPriv )
      (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
    void * const psc = sPriv->psc->screenConfigs;
 
+   if (sPriv->devPrivSize != sizeof(ATIDRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(ATIDRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
 
    if ( MACH64_DEBUG & DEBUG_VERBOSE_DRI ) 
       fprintf( stderr, "%s\n", __FUNCTION__ );
index 1eb03ef0ec11fe9053da57a4da4f0773c92199a5..3e7db69c2d22d9008ba20fd3e169f7191a95c11c 100644 (file)
@@ -200,6 +200,10 @@ mgaInitDriver(__DRIscreenPrivate *sPriv)
        (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
    void * const psc = sPriv->psc->screenConfigs;
 
+   if (sPriv->devPrivSize != sizeof(MGADRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(MGADRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
 
    /* Allocate the private area */
    mgaScreen = (mgaScreenPrivate *)MALLOC(sizeof(mgaScreenPrivate));
@@ -945,7 +949,7 @@ void * __driCreateNewScreen_20050727( __DRInativeDisplay *dpy, int scrn, __DRIsc
                             
 {
    __DRIscreenPrivate *psp;
-   static const __DRIversion ddx_expected = { 1, 1, 1 };
+   static const __DRIversion ddx_expected = { 1, 2, 0 };
    static const __DRIversion dri_expected = { 4, 0, 0 };
    static const __DRIversion drm_expected = { 3, 0, 0 };
 
index a9830814a1a070a5cd0a4d1fd6b97aa0aa8f7afa..258ace83a0ebc82478e8f5493f017294c813b3a2 100644 (file)
@@ -206,7 +206,7 @@ static int MGADRIAgpInit(struct DRIDriverContextRec *ctx, MGAPtr pMga)
       return 0;
    }
    fprintf( stderr,
-              "[agp] WARP microcode handle = 0x%08lx\n",
+              "[agp] WARP microcode handle = 0x%08x\n",
               pMga->warp.handle );
 
    if ( drmMap( ctx->drmFD,
@@ -233,7 +233,7 @@ static int MGADRIAgpInit(struct DRIDriverContextRec *ctx, MGAPtr pMga)
       return 0;
    }
    fprintf( stderr,
-              "[agp] Primary DMA handle = 0x%08lx\n",
+              "[agp] Primary DMA handle = 0x%08x\n",
               pMga->primary.handle );
 
    if ( drmMap( ctx->drmFD,
@@ -260,7 +260,7 @@ static int MGADRIAgpInit(struct DRIDriverContextRec *ctx, MGAPtr pMga)
       return 0;
    }
    fprintf( stderr,
-              "[agp] DMA buffers handle = 0x%08lx\n",
+              "[agp] DMA buffers handle = 0x%08x\n",
               pMga->buffers.handle );
 
    if ( drmMap( ctx->drmFD,
@@ -304,7 +304,7 @@ static int MGADRIAgpInit(struct DRIDriverContextRec *ctx, MGAPtr pMga)
    }
 /* should i map it ? */
    fprintf( stderr,
-               "[agp] agpTexture handle = 0x%08lx\n",
+               "[agp] agpTexture handle = 0x%08x\n",
                pMga->agpTextures.handle );
    fprintf( stderr,
                "[agp] agpTexture size: %d kb\n", pMga->agpTextures.size/1024 );
@@ -339,7 +339,7 @@ static int MGADRIMapInit( struct DRIDriverContextRec *ctx, MGAPtr pMga )
       return 0;
    }
    fprintf( stderr,
-              "[drm] Status handle = 0x%08lx\n",
+              "[drm] Status handle = 0x%08x\n",
               pMga->status.handle );
 
    if ( drmMap( ctx->drmFD,
index 1ef6592196ce00895e26d9d1fe51974ef79c40f9..03b8414603a1488b545edb46e7115b9aeaae7fe4 100644 (file)
 # define DEPRECATED
 #endif
 
+#if 1
+typedef struct _mgaDrmRegion {
+    drm_handle_t     handle;
+    unsigned int  offset;
+    drmSize       size;
+} mgaDrmRegion, *mgaDrmRegionPtr;
+#else
+#define mgaDrmRegion drmRegion
+#endif
+
 typedef struct {
    int chipset;
    int width DEPRECATED;
@@ -91,10 +101,10 @@ typedef struct {
     * for the X.org 6.9 / 7.0 release), these fields should be removed.
     */
    /*@{*/
-   drmRegion registers;            /**< MMIO registers. */
-   drmRegion status DEPRECATED;    /**< No longer used on the client-side. */
-   drmRegion primary;              /**< Primary DMA region. */
-   drmRegion buffers DEPRECATED;   /**< No longer used on the client-side. */
+   mgaDrmRegion registers;            /**< MMIO registers. */
+   mgaDrmRegion status DEPRECATED;    /**< No longer used on the client-side. */
+   mgaDrmRegion primary;              /**< Primary DMA region. */
+   mgaDrmRegion buffers DEPRECATED;   /**< No longer used on the client-side. */
    /*@}*/
 
    unsigned int sarea_priv_offset;
index 52b9b7bcbcc508cea8ee1caf432e7430f9318e18..c6c598cc3b8b2ab37f16a87fad0c1dbe34a99d17 100644 (file)
@@ -102,6 +102,10 @@ r128CreateScreen( __DRIscreenPrivate *sPriv )
      (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
    void * const psc = sPriv->psc->screenConfigs;
 
+   if (sPriv->devPrivSize != sizeof(R128DRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(R128DRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
 
    /* Allocate the private area */
    r128Screen = (r128ScreenPtr) CALLOC( sizeof(*r128Screen) );
index 4cc3c23098fd2310b6123cd5a720ae209cdf5b65..5edf1e10036c23691e0597ef91eaf38158771a37 100644 (file)
@@ -164,7 +164,7 @@ static GLboolean R128DRIAgpInit(const DRIDriverContext *ctx)
        return GL_FALSE;
     }
     fprintf(stderr,
-              "[agp] ring handle = 0x%08lx\n", info->ringHandle);
+              "[agp] ring handle = 0x%08x\n", info->ringHandle);
 
     if (drmMap(ctx->drmFD, info->ringHandle, info->ringMapSize,
               (drmAddressPtr)&info->ring) < 0) {
@@ -182,7 +182,7 @@ static GLboolean R128DRIAgpInit(const DRIDriverContext *ctx)
        return GL_FALSE;
     }
     fprintf(stderr,
-              "[agp] ring read ptr handle = 0x%08lx\n",
+              "[agp] ring read ptr handle = 0x%08x\n",
               info->ringReadPtrHandle);
 
     if (drmMap(ctx->drmFD, info->ringReadPtrHandle, info->ringReadMapSize,
@@ -398,7 +398,7 @@ static GLboolean R128DRIMapInit(const DRIDriverContext *ctx)
        return GL_FALSE;
     }
     fprintf(stderr,
-              "[drm] register handle = 0x%08lx\n", info->registerHandle);
+              "[drm] register handle = 0x%08x\n", info->registerHandle);
 
     return GL_TRUE;
 }
index 480ee64f00b81b38bdc662cc0f4c1283ebabd0f8..b4c360c2188db2803a6a3828b230e85aff8395e2 100644 (file)
@@ -239,6 +239,10 @@ r200CreateScreen( __DRIscreenPrivate *sPriv )
      (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
    void * const psc = sPriv->psc->screenConfigs;
 
+   if (sPriv->devPrivSize != sizeof(RADEONDRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(RADEONDRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
 
    /* Allocate the private area */
    screen = (r200ScreenPtr) CALLOC( sizeof(*screen) );
index 2893a9824c1ae2dbf161e35fa6be34108d7622f1..ea15e872877bb3d98615f1d1be360e5b6dbff319 100644 (file)
@@ -315,6 +315,10 @@ static radeonScreenPtr radeonCreateScreen(__DRIscreenPrivate * sPriv)
              (*dri_interface->getProcAddress("glxEnableExtension"));
        void *const psc = sPriv->psc->screenConfigs;
 
+       if (sPriv->devPrivSize != sizeof(RADEONDRIRec)) {
+               fprintf(stderr,"\nERROR!  sizeof(RADEONDRIRec) does not match passed size from device driver\n");
+               return GL_FALSE;
+       }
 
        /* Allocate the private area */
        screen = (radeonScreenPtr) CALLOC(sizeof(*screen));
index 6822fed9ca67f2651b12221a2a32432cc8a7d27f..b3a768c2851b99b15bdabfcc18a18cdcedae164c 100644 (file)
@@ -212,6 +212,10 @@ radeonScreenPtr radeonCreateScreen( __DRIscreenPrivate *sPriv )
      (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
    void * const psc = sPriv->psc->screenConfigs;
 
+   if (sPriv->devPrivSize != sizeof(RADEONDRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(RADEONDRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
 
    /* Allocate the private area */
    screen = (radeonScreenPtr) CALLOC( sizeof(*screen) );
index 1258b263f5d3bc618082f0eabfe6010064f3ea11..7f83d868cb81ae7628156c507d919d255d622a2c 100644 (file)
@@ -398,7 +398,7 @@ static int RADEONDRIAgpInit( const DRIDriverContext *ctx, RADEONInfoPtr info)
       fprintf(stderr, "[gart] Could not add ring mapping\n");
       return 0;
    }
-   fprintf(stderr, "[gart] ring handle = 0x%08lx\n", info->ringHandle);
+   fprintf(stderr, "[gart] ring handle = 0x%08x\n", info->ringHandle);
     
 
    if (drmAddMap(ctx->drmFD, info->ringReadOffset, info->ringReadMapSize,
@@ -409,7 +409,7 @@ static int RADEONDRIAgpInit( const DRIDriverContext *ctx, RADEONInfoPtr info)
    }
     
    fprintf(stderr,
-          "[gart] ring read ptr handle = 0x%08lx\n",
+          "[gart] ring read ptr handle = 0x%08lx\n",
           info->ringReadPtrHandle);
     
    if (drmAddMap(ctx->drmFD, info->bufStart, info->bufMapSize,
@@ -419,7 +419,7 @@ static int RADEONDRIAgpInit( const DRIDriverContext *ctx, RADEONInfoPtr info)
       return 0;
    }
    fprintf(stderr,
-          "[gart] vertex/indirect buffers handle = 0x%08lx\n",
+          "[gart] vertex/indirect buffers handle = 0x%08x\n",
           info->bufHandle);
 
    if (drmAddMap(ctx->drmFD, info->gartTexStart, info->gartTexMapSize,
@@ -429,7 +429,7 @@ static int RADEONDRIAgpInit( const DRIDriverContext *ctx, RADEONInfoPtr info)
       return 0;
    }
    fprintf(stderr,
-          "[gart] AGP texture map handle = 0x%08lx\n",
+          "[gart] AGP texture map handle = 0x%08lx\n",
           info->gartTexHandle);
 
    /* Initialize Radeon's AGP registers */
@@ -486,7 +486,7 @@ static int RADEONDRIPciInit(const DRIDriverContext *ctx, RADEONInfoPtr info)
        return 0;
     }
     fprintf(stderr,
-              "[pci] ring handle = 0x%08lx\n", info->ringHandle);
+              "[pci] ring handle = 0x%08x\n", info->ringHandle);
 
     if (drmAddMap(ctx->drmFD, info->ringReadOffset, info->ringReadMapSize,
                  DRM_SCATTER_GATHER, flags, &info->ringReadPtrHandle) < 0) {
@@ -495,7 +495,7 @@ static int RADEONDRIPciInit(const DRIDriverContext *ctx, RADEONInfoPtr info)
        return 0;
     }
     fprintf(stderr,
-              "[pci] ring read ptr handle = 0x%08lx\n",
+              "[pci] ring read ptr handle = 0x%08lx\n",
               info->ringReadPtrHandle);
 
     if (drmAddMap(ctx->drmFD, info->bufStart, info->bufMapSize,
@@ -505,7 +505,7 @@ static int RADEONDRIPciInit(const DRIDriverContext *ctx, RADEONInfoPtr info)
        return 0;
     }
     fprintf(stderr,
-              "[pci] vertex/indirect buffers handle = 0x%08lx\n",
+              "[pci] vertex/indirect buffers handle = 0x%08lx\n",
               info->bufHandle);
 
     if (drmAddMap(ctx->drmFD, info->gartTexStart, info->gartTexMapSize,
@@ -515,7 +515,7 @@ static int RADEONDRIPciInit(const DRIDriverContext *ctx, RADEONInfoPtr info)
        return 0;
     }
     fprintf(stderr,
-              "[pci] GART texture map handle = 0x%08lx\n",
+              "[pci] GART texture map handle = 0x%08x\n",
               info->gartTexHandle);
 
     return 1;
index 810232fec473d69045ae14ae74c740a6f9ea5924..f1810597e6f5ce5eda6b9edfa1c477e651bcdc2b 100644 (file)
@@ -17,6 +17,11 @@ s3vScreenPtr s3vCreateScreen( __DRIscreenPrivate *sPriv )
    DEBUG(("sPriv->pDevPriv at %p\n", sPriv->pDevPriv));
    DEBUG(("size = %i\n", sizeof(*vDRIPriv)));
 
+   if (sPriv->devPrivSize != sizeof(S3VDRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(S3VDRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
+
    /* Allocate the private area */
    s3vScreen = (s3vScreenPtr) CALLOC( sizeof(*s3vScreen) );
    if ( !s3vScreen ) return NULL;
index d57b2c52d4594ef58b11fb71ec13564aad52ab3f..12cf78535ad286c966dceab4d881188c6c730617 100644 (file)
@@ -170,6 +170,11 @@ savageInitDriver(__DRIscreenPrivate *sPriv)
   savageScreenPrivate *savageScreen;
   SAVAGEDRIPtr         gDRIPriv = (SAVAGEDRIPtr)sPriv->pDevPriv;
 
+   if (sPriv->devPrivSize != sizeof(SAVAGEDRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(SAVAGEDRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
+
    /* Allocate the private area */
    savageScreen = (savageScreenPrivate *)Xmalloc(sizeof(savageScreenPrivate));
    if (!savageScreen)
index df18ff0baccdf720640b30ca7e6ef61788a05f79..a05662430e2ff66695767dabaec7b30476b19a1f 100644 (file)
@@ -38,7 +38,6 @@ typedef struct {
 typedef struct {
   drm_handle_t handle;
   drmSize size;
-  drmAddress map;
 } sisRegion, *sisRegionPtr;
 
 typedef struct {
index 174a74169ceeef8bfa3a9314c00ac6579bea44f1..8815d0e83266bb7e1cbadaf3fa85bb1ae0072026 100644 (file)
@@ -129,6 +129,10 @@ sisCreateScreen( __DRIscreenPrivate *sPriv )
    sisScreenPtr sisScreen;
    SISDRIPtr sisDRIPriv = (SISDRIPtr)sPriv->pDevPriv;
 
+   if (sPriv->devPrivSize != sizeof(SISDRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(SISDRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
 
    /* Allocate the private area */
    sisScreen = (sisScreenPtr)CALLOC( sizeof(*sisScreen) );
@@ -427,7 +431,7 @@ void * __driCreateNewScreen_20050727( __DRInativeDisplay *dpy, int scrn,
 
 {
    __DRIscreenPrivate *psp;
-   static const __DRIversion ddx_expected = {0, 1, 0};
+   static const __DRIversion ddx_expected = {0, 8, 0};
    static const __DRIversion dri_expected = {4, 0, 0};
    static const __DRIversion drm_expected = {1, 0, 0};
 
index 8f3104f3d97838da205c140289ae6a7f31d1a292..acd0b9ae5ba38675227119ed23294e18af4f72de 100644 (file)
@@ -9,7 +9,6 @@
 typedef struct {
   drm_handle_t regs;
   drmSize regsSize;
-  drmAddress regsMap;
   int deviceID;
   int width;
   int height;
index 0da4d7e3c2eb93780694045d5282ef6c34893515..ab64f7986de58fab4b1d3a75c6671d031080d760 100644 (file)
@@ -74,6 +74,11 @@ tdfxCreateScreen( __DRIscreenPrivate *sPriv )
    tdfxScreenPrivate *fxScreen;
    TDFXDRIPtr fxDRIPriv = (TDFXDRIPtr) sPriv->pDevPriv;
 
+   if (sPriv->devPrivSize != sizeof(TDFXDRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(TDFXDRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
+
    /* Allocate the private area */
    fxScreen = (tdfxScreenPrivate *) CALLOC( sizeof(tdfxScreenPrivate) );
    if ( !fxScreen )
@@ -441,7 +446,7 @@ void * __driCreateNewScreen_20050727( __DRInativeDisplay *dpy, int scrn, __DRIsc
                             __GLcontextModes ** driver_modes )
 {
    __DRIscreenPrivate *psp;
-   static const __DRIversion ddx_expected = { 1, 0, 0 };
+   static const __DRIversion ddx_expected = { 1, 1, 0 };
    static const __DRIversion dri_expected = { 4, 0, 0 };
    static const __DRIversion drm_expected = { 1, 0, 0 };
 
index 8d0717937e8ff35d6c4b94204ebe87f469c5d558..b44c6205c9c5169d54d7792586ca45711305de72 100644 (file)
@@ -358,6 +358,10 @@ tridentScreenPtr tridentCreateScreen( __DRIscreenPrivate *sPriv )
    TRIDENTDRIPtr tDRIPriv = (TRIDENTDRIPtr)sPriv->pDevPriv;
    tridentScreenPtr tridentScreen;
 
+   if (sPriv->devPrivSize != sizeof(TRIDENTDRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(TRIDENTDRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+   }
 
     /* Allocate the private area */
     tridentScreen = (tridentScreenPtr) CALLOC( sizeof(*tridentScreen) );
index 924818c1242354c5ef8a9b5b67a197a2992bf60a..50342f3ff5962eabe8d1faec1f27b88b933469c5 100644 (file)
@@ -101,6 +101,10 @@ viaInitDriver(__DRIscreenPrivate *sPriv)
       (PFNGLXSCRENABLEEXTENSIONPROC) (*dri_interface->getProcAddress("glxEnableExtension"));
     void * const psc = sPriv->psc->screenConfigs;
 
+    if (sPriv->devPrivSize != sizeof(VIADRIRec)) {
+      fprintf(stderr,"\nERROR!  sizeof(VIADRIRec) does not match passed size from device driver\n");
+      return GL_FALSE;
+    }
 
     /* Allocate the private area */
     viaScreen = (viaScreenPrivate *) CALLOC(sizeof(viaScreenPrivate));