[Xorg-commit] xc/lib/GL/mesa/src/drv/radeon radeon_ioctl.c,1.1.4.1,1.1.4.2 radeon_lock.c,1.1.4.1,1.1.4.2 radeon_screen.c,1.1.4.1,1.1.4.2 radeon_screen.h,1.1.4.1,1.1.4.2 radeon_state.c,1.1.4.1,1.1.4.2 radeon_state_init.c,1.1.4.1,1.1.4.2 radeon_texstate.c,1.1.4.1,1.1.4.2
Kaleb Keithley
xserver-commit at pdx.freedesktop.org
Sat Dec 6 15:24:54 EET 2003
Committed by: kaleb
Update of /cvs/xorg/xc/lib/GL/mesa/src/drv/radeon
In directory pdx:/home/kaleb/xorg/xc.XORG-CURRENT/lib/GL/mesa/src/drv/radeon
Modified Files:
Tag: XORG-CURRENT
radeon_ioctl.c radeon_lock.c radeon_screen.c radeon_screen.h
radeon_state.c radeon_state_init.c radeon_texstate.c
Log Message:
merge XFree86 4.3.99.901 (RC1) from vendor branch
Index: radeon_ioctl.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- radeon_ioctl.c 26 Nov 2003 22:48:33 -0000 1.1.4.1
+++ radeon_ioctl.c 6 Dec 2003 13:24:21 -0000 1.1.4.2
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c,v 1.12 2003/09/28 20:15:27 alanh Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c,v 1.13 2003/12/02 13:02:39 alanh Exp $ */
+/* $XdotOrg$ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
@@ -920,7 +921,8 @@
}
RADEON_STATECHANGE( rmesa, ctx );
- rmesa->hw.ctx.cmd[CTX_RB3D_COLOROFFSET] = rmesa->state.color.drawOffset;
+ rmesa->hw.ctx.cmd[CTX_RB3D_COLOROFFSET] = rmesa->state.color.drawOffset
+ + rmesa->radeonScreen->fbLocation;
rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] = rmesa->state.color.drawPitch;
}
Index: radeon_lock.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- radeon_lock.c 26 Nov 2003 22:48:33 -0000 1.1.4.1
+++ radeon_lock.c 6 Dec 2003 13:24:21 -0000 1.1.4.2
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c,v 1.6 2003/09/28 20:15:28 alanh Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c,v 1.7 2003/12/02 13:02:39 alanh Exp $ */
+/* $XdotOrg$ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
@@ -73,7 +74,8 @@
}
RADEON_STATECHANGE( rmesa, ctx );
- rmesa->hw.ctx.cmd[CTX_RB3D_COLOROFFSET] = rmesa->state.color.drawOffset;
+ rmesa->hw.ctx.cmd[CTX_RB3D_COLOROFFSET] = rmesa->state.color.drawOffset
+ + rmesa->radeonScreen->fbLocation;
rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] = rmesa->state.color.drawPitch;
}
Index: radeon_screen.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- radeon_screen.c 26 Nov 2003 22:48:33 -0000 1.1.4.1
+++ radeon_screen.c 6 Dec 2003 13:24:21 -0000 1.1.4.2
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c,v 1.8 2003/09/28 20:15:29 alanh Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c,v 1.9 2003/12/02 13:02:39 alanh Exp $ */
+/* $XdotOrg$ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
@@ -75,6 +76,7 @@
{
radeonScreenPtr screen;
RADEONDRIPtr dri_priv = (RADEONDRIPtr)sPriv->pDevPriv;
+ unsigned char *RADEONMMIO;
if ( ! driCheckDriDdxDrmVersions( sPriv, "Radeon", 4, 0, 4, 0, 1, 3 ) )
return NULL;
@@ -133,6 +135,8 @@
return NULL;
}
+ RADEONMMIO = screen->mmio.map;
+
screen->status.handle = dri_priv->statusHandle;
screen->status.size = dri_priv->statusSize;
if ( drmMap( sPriv->fd,
@@ -157,8 +161,6 @@
}
if ( dri_priv->gartTexHandle && dri_priv->gartTexMapSize ) {
- unsigned char *RADEONMMIO = screen->mmio.map;
-
screen->gartTextures.handle = dri_priv->gartTexHandle;
screen->gartTextures.size = dri_priv->gartTexMapSize;
if ( drmMap( sPriv->fd,
@@ -199,6 +201,18 @@
screen->cpp = dri_priv->bpp / 8;
screen->AGPMode = dri_priv->AGPMode;
+ screen->fbLocation = ( INREG( RADEON_MC_FB_LOCATION ) & 0xffff ) << 16;
+
+ if ( sPriv->drmMinor >= 10 ) {
+ drmRadeonSetParam sp;
+
+ sp.param = RADEON_SETPARAM_FB_LOCATION;
+ sp.value = screen->fbLocation;
+
+ drmCommandWrite( sPriv->fd, DRM_RADEON_SETPARAM,
+ &sp, sizeof( sp ) );
+ }
+
screen->frontOffset = dri_priv->frontOffset;
screen->frontPitch = dri_priv->frontPitch;
screen->backOffset = dri_priv->backOffset;
@@ -206,7 +220,8 @@
screen->depthOffset = dri_priv->depthOffset;
screen->depthPitch = dri_priv->depthPitch;
- screen->texOffset[RADEON_CARD_HEAP] = dri_priv->textureOffset;
+ screen->texOffset[RADEON_CARD_HEAP] = dri_priv->textureOffset
+ + screen->fbLocation;
screen->texSize[RADEON_CARD_HEAP] = dri_priv->textureSize;
screen->logTexGranularity[RADEON_CARD_HEAP] =
dri_priv->log2TexGran;
Index: radeon_screen.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- radeon_screen.h 26 Nov 2003 22:48:33 -0000 1.1.4.1
+++ radeon_screen.h 6 Dec 2003 13:24:21 -0000 1.1.4.2
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h,v 1.6 2003/09/28 20:15:29 alanh Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h,v 1.7 2003/12/02 13:02:39 alanh Exp $ */
+/* $XdotOrg$ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
@@ -67,6 +68,7 @@
int AGPMode;
unsigned int irq; /* IRQ number (0 means none) */
+ unsigned int fbLocation;
unsigned int frontOffset;
unsigned int frontPitch;
unsigned int backOffset;
Index: radeon_state.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/radeon/radeon_state.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- radeon_state.c 26 Nov 2003 22:48:33 -0000 1.1.4.1
+++ radeon_state.c 6 Dec 2003 13:24:21 -0000 1.1.4.2
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_state.c,v 1.9 2003/09/28 20:15:29 alanh Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_state.c,v 1.10 2003/12/02 13:02:39 alanh Exp $ */
+/* $XdotOrg$ */
/**************************************************************************
Copyright 2000, 2001 VA Linux Systems Inc., Fremont, California.
@@ -1617,8 +1618,9 @@
_swrast_DrawBuffer(ctx, mode);
RADEON_STATECHANGE( rmesa, ctx );
- rmesa->hw.ctx.cmd[CTX_RB3D_COLOROFFSET] = (rmesa->state.color.drawOffset &
- RADEON_COLOROFFSET_MASK);
+ rmesa->hw.ctx.cmd[CTX_RB3D_COLOROFFSET] = ((rmesa->state.color.drawOffset +
+ rmesa->radeonScreen->fbLocation)
+ & RADEON_COLOROFFSET_MASK);
rmesa->hw.ctx.cmd[CTX_RB3D_COLORPITCH] = rmesa->state.color.drawPitch;
}
Index: radeon_state_init.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- radeon_state_init.c 26 Nov 2003 22:48:33 -0000 1.1.4.1
+++ radeon_state_init.c 6 Dec 2003 13:24:21 -0000 1.1.4.2
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c,v 1.4 2003/09/28 20:15:29 alanh Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c,v 1.5 2003/12/02 13:02:39 alanh Exp $ */
+/* $XdotOrg$ */
/*
* Copyright 2000, 2001 VA Linux Systems Inc., Fremont, California.
*
@@ -322,7 +323,7 @@
RADEON_DST_BLEND_GL_ZERO );
rmesa->hw.ctx.cmd[CTX_RB3D_DEPTHOFFSET] =
- rmesa->radeonScreen->depthOffset;
+ rmesa->radeonScreen->depthOffset + rmesa->radeonScreen->fbLocation;
rmesa->hw.ctx.cmd[CTX_RB3D_DEPTHPITCH] =
((rmesa->radeonScreen->depthPitch &
@@ -421,8 +422,9 @@
(2 << RADEON_TXFORMAT_WIDTH_SHIFT) |
(2 << RADEON_TXFORMAT_HEIGHT_SHIFT));
- /* FIXME: What is this magic value? */
- rmesa->hw.tex[i].cmd[TEX_PP_TXOFFSET] = 0x2000 << (2 * i);
+ /* Initialize the texture offset to the start of the card texture heap */
+ rmesa->hw.tex[i].cmd[TEX_PP_TXOFFSET] =
+ rmesa->radeonScreen->texOffset[RADEON_CARD_HEAP];
rmesa->hw.tex[i].cmd[TEX_PP_BORDER_COLOR] = 0;
rmesa->hw.tex[i].cmd[TEX_PP_TXCBLEND] =
Index: radeon_texstate.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- radeon_texstate.c 26 Nov 2003 22:48:33 -0000 1.1.4.1
+++ radeon_texstate.c 6 Dec 2003 13:24:21 -0000 1.1.4.2
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c,v 1.7 2003/09/28 20:15:30 alanh Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c,v 1.8 2003/12/02 13:02:39 alanh Exp $ */
+/* $XdotOrg$ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
@@ -107,7 +108,7 @@
const struct gl_texture_image *baseImage = tObj->Image[tObj->BaseLevel];
GLint curOffset;
GLint i;
- GLint firstLevel=0, lastLevel=0, numLevels;
+ GLint numLevels;
GLint log2Width, log2Height, log2Depth;
/* Set the hardware texture format
@@ -127,40 +128,15 @@
}
-
/* Compute which mipmap levels we really want to send to the hardware.
- * This depends on the base image size, GL_TEXTURE_MIN_LOD,
- * GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, and GL_TEXTURE_MAX_LEVEL.
- * Yes, this looks overly complicated, but it's all needed.
*/
- switch (tObj->Target) {
- case GL_TEXTURE_1D:
- case GL_TEXTURE_2D:
- firstLevel = tObj->BaseLevel + (GLint)(tObj->MinLod + 0.5);
- firstLevel = MAX2(firstLevel, tObj->BaseLevel);
- lastLevel = tObj->BaseLevel + (GLint)(tObj->MaxLod + 0.5);
- lastLevel = MAX2(lastLevel, tObj->BaseLevel);
- lastLevel = MIN2(lastLevel, tObj->BaseLevel + baseImage->MaxLog2);
- lastLevel = MIN2(lastLevel, tObj->MaxLevel);
- lastLevel = MAX2(firstLevel, lastLevel); /* need at least one level */
- log2Width = tObj->Image[firstLevel]->WidthLog2;
- log2Height = tObj->Image[firstLevel]->HeightLog2;
- log2Depth = 0;
- break;
- case GL_TEXTURE_RECTANGLE_NV:
- firstLevel = lastLevel = 0;
- log2Width = log2Height = 1; /* ? */
- log2Depth = 0;
- break;
- default:
- return;
- }
- /* save these values */
- t->base.firstLevel = firstLevel;
- t->base.lastLevel = lastLevel;
+ driCalculateTextureFirstLastLevel( (driTextureObject *) t );
+ log2Width = tObj->Image[t->base.firstLevel]->WidthLog2;
+ log2Height = tObj->Image[t->base.firstLevel]->HeightLog2;
+ log2Depth = tObj->Image[t->base.firstLevel]->DepthLog2;
- numLevels = lastLevel - firstLevel + 1;
+ numLevels = t->base.lastLevel - t->base.firstLevel + 1;
assert(numLevels <= RADEON_MAX_TEXTURE_LEVELS);
@@ -174,7 +150,7 @@
const struct gl_texture_image *texImage;
GLuint size;
- texImage = tObj->Image[i + firstLevel];
+ texImage = tObj->Image[i + t->base.firstLevel];
if ( !texImage )
break;
@@ -239,17 +215,17 @@
t->pp_txformat |= ((log2Width << RADEON_TXFORMAT_WIDTH_SHIFT) |
(log2Height << RADEON_TXFORMAT_HEIGHT_SHIFT));
- t->pp_txsize = (((tObj->Image[firstLevel]->Width - 1) << 0) |
- ((tObj->Image[firstLevel]->Height - 1) << 16));
+ t->pp_txsize = (((tObj->Image[t->base.firstLevel]->Width - 1) << 0) |
+ ((tObj->Image[t->base.firstLevel]->Height - 1) << 16));
/* Only need to round to nearest 32 for textures, but the blitter
* requires 64-byte aligned pitches, and we may/may not need the
* blitter. NPOT only!
*/
if (baseImage->IsCompressed)
- t->pp_txpitch = (tObj->Image[firstLevel]->Width + 63) & ~(63);
+ t->pp_txpitch = (tObj->Image[t->base.firstLevel]->Width + 63) & ~(63);
else
- t->pp_txpitch = ((tObj->Image[firstLevel]->Width * baseImage->TexFormat->TexelBytes) + 63) & ~(63);
+ t->pp_txpitch = ((tObj->Image[t->base.firstLevel]->Width * baseImage->TexFormat->TexelBytes) + 63) & ~(63);
t->pp_txpitch -= 32;
t->dirty_state = TEX_ALL;
More information about the xorg-commit
mailing list