Fix bug 1858 - array subscript out of range in gamma driver.
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 26 Jul 2005 00:10:53 +0000 (00:10 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 26 Jul 2005 00:10:53 +0000 (00:10 +0000)
Set ctx->Const.MaxTextureLevels = GAMMA_TEX_MAXLEVELS = 12
Remove bogus WRITE(level 12).
Max gamma texture size is 2kx2k  (note: 2k = 1 << (MaxLevels - 1))

src/mesa/drivers/dri/gamma/gamma_context.c
src/mesa/drivers/dri/gamma/gamma_context.h
src/mesa/drivers/dri/gamma/gamma_state.c

index f0d16db8ad790a5b04a6dff4698deafebc4885bf..ffaf45459bc590f1495a41ef50448500835a24d3 100644 (file)
@@ -115,7 +115,7 @@ GLboolean gammaCreateContext( const __GLcontextModes *glVisual,
 
    ctx = gmesa->glCtx;
 
-   ctx->Const.MaxTextureLevels = 13;  /* 4K by 4K?  Is that right? */
+   ctx->Const.MaxTextureLevels = GAMMA_TEX_MAXLEVELS;
    ctx->Const.MaxTextureUnits = 1; /* Permedia 3 */
    ctx->Const.MaxTextureImageUnits = 1;
    ctx->Const.MaxTextureCoordUnits = 1;
index 6dd458bc95c063075f614e8ac3da4b8dd1ee4921..7745f4c3c3df438fe83a926ee115087cb2c4058c 100644 (file)
@@ -118,7 +118,7 @@ typedef struct gamma_texture_object_t *gammaTextureObjectPtr;
 
 #define VALID_GAMMA_TEXTURE_OBJECT(tobj)  (tobj) 
 
-#define GAMMA_TEX_MAXLEVELS 12
+#define GAMMA_TEX_MAXLEVELS 12  /* 2K x 2K */
 
 /* For shared texture space managment, these texture objects may also
  * be used as proxies for regions of texture memory containing other
index 24a6b3672c7c2a1565506cb256f1b1ebeb8cd384..194313dc975a3c46f4d9968874bd4c311f9052cc 100644 (file)
@@ -1593,7 +1593,6 @@ void gammaEmitHwState( gammaContextPtr gmesa )
        WRITE(gmesa->buf, TxBaseAddr9, curTex->TextureBaseAddr[9]);
        WRITE(gmesa->buf, TxBaseAddr10, curTex->TextureBaseAddr[10]);
        WRITE(gmesa->buf, TxBaseAddr11, curTex->TextureBaseAddr[11]);
-       WRITE(gmesa->buf, TxBaseAddr12, curTex->TextureBaseAddr[12]);
        WRITE(gmesa->buf, TextureCacheControl, (TCC_Enable | TCC_Invalidate));
        } else {
        CHECK_DMA_BUFFER(gmesa, 6);