mirror of
https://src.fedoraproject.org/rpms/mesa.git
synced 2024-11-28 11:06:25 +00:00
radeon: add some minor fixes
This commit is contained in:
parent
a66d330e41
commit
2638d1a906
1 changed files with 83 additions and 114 deletions
|
@ -8450,7 +8450,7 @@ index 3b81ac0..0000000
|
||||||
- return 0;
|
- return 0;
|
||||||
-}
|
-}
|
||||||
diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c b/src/mesa/drivers/dri/r200/r200_texstate.c
|
diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c b/src/mesa/drivers/dri/r200/r200_texstate.c
|
||||||
index 0ad5651..15758d7 100644
|
index 0ad5651..eee54cd 100644
|
||||||
--- a/src/mesa/drivers/dri/r200/r200_texstate.c
|
--- a/src/mesa/drivers/dri/r200/r200_texstate.c
|
||||||
+++ b/src/mesa/drivers/dri/r200/r200_texstate.c
|
+++ b/src/mesa/drivers/dri/r200/r200_texstate.c
|
||||||
@@ -37,9 +37,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -37,9 +37,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
@ -8749,7 +8749,7 @@ index 0ad5651..15758d7 100644
|
||||||
t->pp_txpitch = pitch - 32;
|
t->pp_txpitch = pitch - 32;
|
||||||
|
|
||||||
switch (depth) {
|
switch (depth) {
|
||||||
@@ -1014,6 +765,123 @@ void r200SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
@@ -1014,6 +765,122 @@ void r200SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8821,7 +8821,6 @@ index 0ad5651..15758d7 100644
|
||||||
+ radeon_miptree_unreference(rImage->mt);
|
+ radeon_miptree_unreference(rImage->mt);
|
||||||
+ rImage->mt = NULL;
|
+ rImage->mt = NULL;
|
||||||
+ }
|
+ }
|
||||||
+ fprintf(stderr,"settexbuf %d %dx%d@%d\n", rb->pitch, rb->width, rb->height, rb->cpp);
|
|
||||||
+ _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
|
+ _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
|
||||||
+ rb->width, rb->height, 1, 0, rb->cpp);
|
+ rb->width, rb->height, 1, 0, rb->cpp);
|
||||||
+ texImage->RowStride = rb->pitch / rb->cpp;
|
+ texImage->RowStride = rb->pitch / rb->cpp;
|
||||||
|
@ -8873,7 +8872,7 @@ index 0ad5651..15758d7 100644
|
||||||
#define REF_COLOR 1
|
#define REF_COLOR 1
|
||||||
#define REF_ALPHA 2
|
#define REF_ALPHA 2
|
||||||
|
|
||||||
@@ -1207,12 +1075,41 @@ static GLboolean r200UpdateAllTexEnv( GLcontext *ctx )
|
@@ -1207,12 +1074,41 @@ static GLboolean r200UpdateAllTexEnv( GLcontext *ctx )
|
||||||
R200_VOLUME_FILTER_MASK)
|
R200_VOLUME_FILTER_MASK)
|
||||||
|
|
||||||
|
|
||||||
|
@ -8917,7 +8916,7 @@ index 0ad5651..15758d7 100644
|
||||||
|
|
||||||
R200_STATECHANGE( rmesa, tex[unit] );
|
R200_STATECHANGE( rmesa, tex[unit] );
|
||||||
|
|
||||||
@@ -1225,36 +1122,21 @@ static void import_tex_obj_state( r200ContextPtr rmesa,
|
@@ -1225,36 +1121,21 @@ static void import_tex_obj_state( r200ContextPtr rmesa,
|
||||||
cmd[TEX_PP_TXSIZE] = texobj->pp_txsize; /* NPOT only! */
|
cmd[TEX_PP_TXSIZE] = texobj->pp_txsize; /* NPOT only! */
|
||||||
cmd[TEX_PP_TXPITCH] = texobj->pp_txpitch; /* NPOT only! */
|
cmd[TEX_PP_TXPITCH] = texobj->pp_txpitch; /* NPOT only! */
|
||||||
cmd[TEX_PP_BORDER_COLOR] = texobj->pp_border_color;
|
cmd[TEX_PP_BORDER_COLOR] = texobj->pp_border_color;
|
||||||
|
@ -8957,7 +8956,7 @@ index 0ad5651..15758d7 100644
|
||||||
static void set_texgen_matrix( r200ContextPtr rmesa,
|
static void set_texgen_matrix( r200ContextPtr rmesa,
|
||||||
GLuint unit,
|
GLuint unit,
|
||||||
const GLfloat *s_plane,
|
const GLfloat *s_plane,
|
||||||
@@ -1377,7 +1259,6 @@ static GLboolean r200_validate_texgen( GLcontext *ctx, GLuint unit )
|
@@ -1377,7 +1258,6 @@ static GLboolean r200_validate_texgen( GLcontext *ctx, GLuint unit )
|
||||||
} else {
|
} else {
|
||||||
tgcm |= R200_TEXGEN_COMP_T << (unit * 4);
|
tgcm |= R200_TEXGEN_COMP_T << (unit * 4);
|
||||||
}
|
}
|
||||||
|
@ -8965,7 +8964,7 @@ index 0ad5651..15758d7 100644
|
||||||
if (texUnit->TexGenEnabled & R_BIT) {
|
if (texUnit->TexGenEnabled & R_BIT) {
|
||||||
if (texUnit->GenR.Mode != mode)
|
if (texUnit->GenR.Mode != mode)
|
||||||
mixed_fallback = GL_TRUE;
|
mixed_fallback = GL_TRUE;
|
||||||
@@ -1517,52 +1398,6 @@ static GLboolean r200_validate_texgen( GLcontext *ctx, GLuint unit )
|
@@ -1517,52 +1397,6 @@ static GLboolean r200_validate_texgen( GLcontext *ctx, GLuint unit )
|
||||||
return GL_TRUE;
|
return GL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9018,7 +9017,7 @@ index 0ad5651..15758d7 100644
|
||||||
void set_re_cntl_d3d( GLcontext *ctx, int unit, GLboolean use_d3d )
|
void set_re_cntl_d3d( GLcontext *ctx, int unit, GLboolean use_d3d )
|
||||||
{
|
{
|
||||||
r200ContextPtr rmesa = R200_CONTEXT(ctx);
|
r200ContextPtr rmesa = R200_CONTEXT(ctx);
|
||||||
@@ -1579,237 +1414,169 @@ void set_re_cntl_d3d( GLcontext *ctx, int unit, GLboolean use_d3d )
|
@@ -1579,237 +1413,169 @@ void set_re_cntl_d3d( GLcontext *ctx, int unit, GLboolean use_d3d )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9380,7 +9379,7 @@ index 0ad5651..15758d7 100644
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1850,11 +1617,11 @@ void r200UpdateTextureState( GLcontext *ctx )
|
@@ -1850,11 +1616,11 @@ void r200UpdateTextureState( GLcontext *ctx )
|
||||||
|
|
||||||
FALLBACK( rmesa, R200_FALLBACK_TEXTURE, !ok );
|
FALLBACK( rmesa, R200_FALLBACK_TEXTURE, !ok );
|
||||||
|
|
||||||
|
@ -9394,7 +9393,7 @@ index 0ad5651..15758d7 100644
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* T0 hang workaround -------------
|
* T0 hang workaround -------------
|
||||||
@@ -1867,7 +1634,7 @@ void r200UpdateTextureState( GLcontext *ctx )
|
@@ -1867,7 +1633,7 @@ void r200UpdateTextureState( GLcontext *ctx )
|
||||||
R200_STATECHANGE(rmesa, tex[1]);
|
R200_STATECHANGE(rmesa, tex[1]);
|
||||||
rmesa->hw.ctx.cmd[CTX_PP_CNTL] |= R200_TEX_1_ENABLE;
|
rmesa->hw.ctx.cmd[CTX_PP_CNTL] |= R200_TEX_1_ENABLE;
|
||||||
if (!(rmesa->hw.cst.cmd[CST_PP_CNTL_X] & R200_PPX_TEX_1_ENABLE))
|
if (!(rmesa->hw.cst.cmd[CST_PP_CNTL_X] & R200_PPX_TEX_1_ENABLE))
|
||||||
|
@ -19221,7 +19220,7 @@ index 0fe51b0..0000000
|
||||||
- return 0;
|
- return 0;
|
||||||
-}
|
-}
|
||||||
diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c
|
diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c
|
||||||
index cadec7f..cf4cad7 100644
|
index cadec7f..2d7ad55 100644
|
||||||
--- a/src/mesa/drivers/dri/r300/r300_texstate.c
|
--- a/src/mesa/drivers/dri/r300/r300_texstate.c
|
||||||
+++ b/src/mesa/drivers/dri/r300/r300_texstate.c
|
+++ b/src/mesa/drivers/dri/r300/r300_texstate.c
|
||||||
@@ -47,7 +47,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -47,7 +47,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
@ -19745,7 +19744,7 @@ index cadec7f..cf4cad7 100644
|
||||||
}
|
}
|
||||||
|
|
||||||
void r300SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
void r300SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
||||||
@@ -591,78 +325,164 @@ void r300SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
@@ -591,78 +325,163 @@ void r300SetTexOffset(__DRIcontext * pDRICtx, GLint texname,
|
||||||
r300ContextPtr rmesa = pDRICtx->driverPrivate;
|
r300ContextPtr rmesa = pDRICtx->driverPrivate;
|
||||||
struct gl_texture_object *tObj =
|
struct gl_texture_object *tObj =
|
||||||
_mesa_lookup_texture(rmesa->radeon.glCtx, texname);
|
_mesa_lookup_texture(rmesa->radeon.glCtx, texname);
|
||||||
|
@ -19886,7 +19885,6 @@ index cadec7f..cf4cad7 100644
|
||||||
+ radeon_miptree_unreference(rImage->mt);
|
+ radeon_miptree_unreference(rImage->mt);
|
||||||
+ rImage->mt = NULL;
|
+ rImage->mt = NULL;
|
||||||
+ }
|
+ }
|
||||||
+ fprintf(stderr,"settexbuf %dx%d@%d %d targ %x format %x\n", rb->width, rb->height, rb->cpp, rb->pitch, target, format);
|
|
||||||
+ _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
|
+ _mesa_init_teximage_fields(radeon->glCtx, target, texImage,
|
||||||
+ rb->width, rb->height, 1, 0, rb->cpp);
|
+ rb->width, rb->height, 1, 0, rb->cpp);
|
||||||
+ texImage->RowStride = rb->pitch / rb->cpp;
|
+ texImage->RowStride = rb->pitch / rb->cpp;
|
||||||
|
@ -32675,7 +32673,7 @@ index 1ec06bc..f30eb1c 100644
|
||||||
drm_clip_rect_t *boxes );
|
drm_clip_rect_t *boxes );
|
||||||
|
|
||||||
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
|
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
|
||||||
index 8828533..1541412 100644
|
index 8828533..544ab74 100644
|
||||||
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
|
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
|
||||||
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
|
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
|
||||||
@@ -35,6 +35,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -35,6 +35,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
@ -32858,7 +32856,7 @@ index 8828533..1541412 100644
|
||||||
r300SetTexOffset,
|
r300SetTexOffset,
|
||||||
};
|
};
|
||||||
-#endif
|
-#endif
|
||||||
|
-
|
||||||
-/* Create the device specific screen private data struct.
|
-/* Create the device specific screen private data struct.
|
||||||
- */
|
- */
|
||||||
-static radeonScreenPtr
|
-static radeonScreenPtr
|
||||||
|
@ -32870,7 +32868,7 @@ index 8828533..1541412 100644
|
||||||
- int i;
|
- int i;
|
||||||
- int ret;
|
- int ret;
|
||||||
- uint32_t temp = 0;
|
- uint32_t temp = 0;
|
||||||
-
|
|
||||||
- if (sPriv->devPrivSize != sizeof(RADEONDRIRec)) {
|
- if (sPriv->devPrivSize != sizeof(RADEONDRIRec)) {
|
||||||
- fprintf(stderr,"\nERROR! sizeof(RADEONDRIRec) does not match passed size from device driver\n");
|
- fprintf(stderr,"\nERROR! sizeof(RADEONDRIRec) does not match passed size from device driver\n");
|
||||||
- return GL_FALSE;
|
- return GL_FALSE;
|
||||||
|
@ -32999,7 +32997,7 @@ index 8828533..1541412 100644
|
||||||
case PCI_CHIP_RADEON_LY:
|
case PCI_CHIP_RADEON_LY:
|
||||||
case PCI_CHIP_RADEON_LZ:
|
case PCI_CHIP_RADEON_LZ:
|
||||||
case PCI_CHIP_RADEON_QY:
|
case PCI_CHIP_RADEON_QY:
|
||||||
@@ -824,9 +739,161 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
@@ -824,9 +739,145 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "unknown chip id 0x%x, can't guess.\n",
|
fprintf(stderr, "unknown chip id 0x%x, can't guess.\n",
|
||||||
|
@ -33052,19 +33050,6 @@ index 8828533..1541412 100644
|
||||||
+ {
|
+ {
|
||||||
+ int ret;
|
+ int ret;
|
||||||
+
|
+
|
||||||
+#ifdef RADEON_PARAM_KERNEL_MM
|
|
||||||
+ ret = radeonGetParam(sPriv, RADEON_PARAM_KERNEL_MM, &screen->kernel_mm);
|
|
||||||
+
|
|
||||||
+ if (ret && ret != -EINVAL) {
|
|
||||||
+ FREE( screen );
|
|
||||||
+ fprintf(stderr, "drm_radeon_getparam_t (RADEON_OFFSET): %d\n", ret);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (ret == -EINVAL)
|
|
||||||
+ screen->kernel_mm = 0;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+ ret = radeonGetParam(sPriv, RADEON_PARAM_GART_BUFFER_OFFSET,
|
+ ret = radeonGetParam(sPriv, RADEON_PARAM_GART_BUFFER_OFFSET,
|
||||||
+ &screen->gart_buffer_offset);
|
+ &screen->gart_buffer_offset);
|
||||||
+
|
+
|
||||||
|
@ -33098,63 +33083,60 @@ index 8828533..1541412 100644
|
||||||
+ screen->drmSupportsVertexProgram = (sPriv->drm_version.minor >= 25);
|
+ screen->drmSupportsVertexProgram = (sPriv->drm_version.minor >= 25);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ if (!screen->kernel_mm) {
|
+ screen->mmio.handle = dri_priv->registerHandle;
|
||||||
+ screen->mmio.handle = dri_priv->registerHandle;
|
+ screen->mmio.size = dri_priv->registerSize;
|
||||||
+ screen->mmio.size = dri_priv->registerSize;
|
+ if ( drmMap( sPriv->fd,
|
||||||
|
+ screen->mmio.handle,
|
||||||
|
+ screen->mmio.size,
|
||||||
|
+ &screen->mmio.map ) ) {
|
||||||
|
+ FREE( screen );
|
||||||
|
+ __driUtilMessage("%s: drmMap failed\n", __FUNCTION__ );
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ RADEONMMIO = screen->mmio.map;
|
||||||
|
+
|
||||||
|
+ screen->status.handle = dri_priv->statusHandle;
|
||||||
|
+ screen->status.size = dri_priv->statusSize;
|
||||||
|
+ if ( drmMap( sPriv->fd,
|
||||||
|
+ screen->status.handle,
|
||||||
|
+ screen->status.size,
|
||||||
|
+ &screen->status.map ) ) {
|
||||||
|
+ drmUnmap( screen->mmio.map, screen->mmio.size );
|
||||||
|
+ FREE( screen );
|
||||||
|
+ __driUtilMessage("%s: drmMap (2) failed\n", __FUNCTION__ );
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+ screen->scratch = (__volatile__ uint32_t *)
|
||||||
|
+ ((GLubyte *)screen->status.map + RADEON_SCRATCH_REG_OFFSET);
|
||||||
|
+
|
||||||
|
+ screen->buffers = drmMapBufs( sPriv->fd );
|
||||||
|
+ if ( !screen->buffers ) {
|
||||||
|
+ drmUnmap( screen->status.map, screen->status.size );
|
||||||
|
+ drmUnmap( screen->mmio.map, screen->mmio.size );
|
||||||
|
+ FREE( screen );
|
||||||
|
+ __driUtilMessage("%s: drmMapBufs failed\n", __FUNCTION__ );
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ( dri_priv->gartTexHandle && dri_priv->gartTexMapSize ) {
|
||||||
|
+ screen->gartTextures.handle = dri_priv->gartTexHandle;
|
||||||
|
+ screen->gartTextures.size = dri_priv->gartTexMapSize;
|
||||||
+ if ( drmMap( sPriv->fd,
|
+ if ( drmMap( sPriv->fd,
|
||||||
+ screen->mmio.handle,
|
+ screen->gartTextures.handle,
|
||||||
+ screen->mmio.size,
|
+ screen->gartTextures.size,
|
||||||
+ &screen->mmio.map ) ) {
|
+ (drmAddressPtr)&screen->gartTextures.map ) ) {
|
||||||
+ FREE( screen );
|
+ drmUnmapBufs( screen->buffers );
|
||||||
+ __driUtilMessage("%s: drmMap failed\n", __FUNCTION__ );
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ RADEONMMIO = screen->mmio.map;
|
|
||||||
+
|
|
||||||
+ screen->status.handle = dri_priv->statusHandle;
|
|
||||||
+ screen->status.size = dri_priv->statusSize;
|
|
||||||
+ if ( drmMap( sPriv->fd,
|
|
||||||
+ screen->status.handle,
|
|
||||||
+ screen->status.size,
|
|
||||||
+ &screen->status.map ) ) {
|
|
||||||
+ drmUnmap( screen->mmio.map, screen->mmio.size );
|
|
||||||
+ FREE( screen );
|
|
||||||
+ __driUtilMessage("%s: drmMap (2) failed\n", __FUNCTION__ );
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+ screen->scratch = (__volatile__ uint32_t *)
|
|
||||||
+ ((GLubyte *)screen->status.map + RADEON_SCRATCH_REG_OFFSET);
|
|
||||||
+
|
|
||||||
+ screen->buffers = drmMapBufs( sPriv->fd );
|
|
||||||
+ if ( !screen->buffers ) {
|
|
||||||
+ drmUnmap( screen->status.map, screen->status.size );
|
+ drmUnmap( screen->status.map, screen->status.size );
|
||||||
+ drmUnmap( screen->mmio.map, screen->mmio.size );
|
+ drmUnmap( screen->mmio.map, screen->mmio.size );
|
||||||
+ FREE( screen );
|
+ FREE( screen );
|
||||||
+ __driUtilMessage("%s: drmMapBufs failed\n", __FUNCTION__ );
|
+ __driUtilMessage("%s: drmMap failed for GART texture area\n", __FUNCTION__);
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ if ( dri_priv->gartTexHandle && dri_priv->gartTexMapSize ) {
|
+ screen->gart_texture_offset = dri_priv->gartTexOffset + screen->gart_base;
|
||||||
+ screen->gartTextures.handle = dri_priv->gartTexHandle;
|
|
||||||
+ screen->gartTextures.size = dri_priv->gartTexMapSize;
|
|
||||||
+ if ( drmMap( sPriv->fd,
|
|
||||||
+ screen->gartTextures.handle,
|
|
||||||
+ screen->gartTextures.size,
|
|
||||||
+ (drmAddressPtr)&screen->gartTextures.map ) ) {
|
|
||||||
+ drmUnmapBufs( screen->buffers );
|
|
||||||
+ drmUnmap( screen->status.map, screen->status.size );
|
|
||||||
+ drmUnmap( screen->mmio.map, screen->mmio.size );
|
|
||||||
+ FREE( screen );
|
|
||||||
+ __driUtilMessage("%s: drmMap failed for GART texture area\n", __FUNCTION__);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ screen->gart_texture_offset = dri_priv->gartTexOffset + screen->gart_base;
|
|
||||||
+ }
|
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+
|
|
||||||
+ ret = radeon_set_screen_flags(screen, dri_priv->deviceID);
|
+ ret = radeon_set_screen_flags(screen, dri_priv->deviceID);
|
||||||
+ if (ret == -1)
|
+ if (ret == -1)
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
|
@ -33162,7 +33144,7 @@ index 8828533..1541412 100644
|
||||||
if ((screen->chip_family == CHIP_FAMILY_R350 || screen->chip_family == CHIP_FAMILY_R300) &&
|
if ((screen->chip_family == CHIP_FAMILY_R350 || screen->chip_family == CHIP_FAMILY_R300) &&
|
||||||
sPriv->ddx_version.minor < 2) {
|
sPriv->ddx_version.minor < 2) {
|
||||||
fprintf(stderr, "xf86-video-ati-6.6.2 or newer needed for Radeon 9500/9700/9800 cards.\n");
|
fprintf(stderr, "xf86-video-ati-6.6.2 or newer needed for Radeon 9500/9700/9800 cards.\n");
|
||||||
@@ -851,10 +918,9 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
@@ -851,8 +902,7 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
||||||
screen->cpp = dri_priv->bpp / 8;
|
screen->cpp = dri_priv->bpp / 8;
|
||||||
screen->AGPMode = dri_priv->AGPMode;
|
screen->AGPMode = dri_priv->AGPMode;
|
||||||
|
|
||||||
|
@ -33170,12 +33152,9 @@ index 8828533..1541412 100644
|
||||||
- &temp);
|
- &temp);
|
||||||
+ ret = radeonGetParam(sPriv, RADEON_PARAM_FB_LOCATION, &temp);
|
+ ret = radeonGetParam(sPriv, RADEON_PARAM_FB_LOCATION, &temp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
- if (screen->chip_family < CHIP_FAMILY_RS600)
|
if (screen->chip_family < CHIP_FAMILY_RS600)
|
||||||
+ if (screen->chip_family < CHIP_FAMILY_RS600 && !screen->kernel_mm)
|
|
||||||
screen->fbLocation = ( INREG( RADEON_MC_FB_LOCATION ) & 0xffff) << 16;
|
screen->fbLocation = ( INREG( RADEON_MC_FB_LOCATION ) & 0xffff) << 16;
|
||||||
else {
|
@@ -866,8 +916,7 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
||||||
FREE( screen );
|
|
||||||
@@ -866,8 +932,7 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (screen->chip_family >= CHIP_FAMILY_R300) {
|
if (screen->chip_family >= CHIP_FAMILY_R300) {
|
||||||
|
@ -33185,17 +33164,10 @@ index 8828533..1541412 100644
|
||||||
if (ret) {
|
if (ret) {
|
||||||
fprintf(stderr, "Unable to get num_pipes, need newer drm\n");
|
fprintf(stderr, "Unable to get num_pipes, need newer drm\n");
|
||||||
switch (screen->chip_family) {
|
switch (screen->chip_family) {
|
||||||
@@ -956,26 +1021,158 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
@@ -961,21 +1010,149 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
||||||
screen->extensions[i++] = &driMediaStreamCounterExtension.base;
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
+ if (!screen->kernel_mm) {
|
#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R200)
|
||||||
#if !RADEON_COMMON
|
|
||||||
- screen->extensions[i++] = &radeonTexOffsetExtension.base;
|
|
||||||
+ screen->extensions[i++] = &radeonTexOffsetExtension.base;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R200)
|
|
||||||
+ if (IS_R200_CLASS(screen))
|
+ if (IS_R200_CLASS(screen))
|
||||||
+ screen->extensions[i++] = &r200AllocateExtension.base;
|
+ screen->extensions[i++] = &r200AllocateExtension.base;
|
||||||
+
|
+
|
||||||
|
@ -33215,10 +33187,7 @@ index 8828533..1541412 100644
|
||||||
+ screen->sarea = (drm_radeon_sarea_t *) ((GLubyte *) sPriv->pSAREA +
|
+ screen->sarea = (drm_radeon_sarea_t *) ((GLubyte *) sPriv->pSAREA +
|
||||||
+ screen->sarea_priv_offset);
|
+ screen->sarea_priv_offset);
|
||||||
+
|
+
|
||||||
+ if (screen->kernel_mm)
|
+ screen->bom = radeon_bo_manager_legacy_ctor(screen);
|
||||||
+ screen->bom = radeon_bo_manager_gem_ctor(sPriv->fd);
|
|
||||||
+ else
|
|
||||||
+ screen->bom = radeon_bo_manager_legacy_ctor(screen);
|
|
||||||
+ if (screen->bom == NULL) {
|
+ if (screen->bom == NULL) {
|
||||||
+ free(screen);
|
+ free(screen);
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
|
@ -33320,9 +33289,9 @@ index 8828533..1541412 100644
|
||||||
+
|
+
|
||||||
+#if !RADEON_COMMON
|
+#if !RADEON_COMMON
|
||||||
+ screen->extensions[i++] = &radeonTexBufferExtension.base;
|
+ screen->extensions[i++] = &radeonTexBufferExtension.base;
|
||||||
#endif
|
+#endif
|
||||||
|
+
|
||||||
#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R200)
|
+#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R200)
|
||||||
if (IS_R200_CLASS(screen))
|
if (IS_R200_CLASS(screen))
|
||||||
screen->extensions[i++] = &r200AllocateExtension.base;
|
screen->extensions[i++] = &r200AllocateExtension.base;
|
||||||
|
|
||||||
|
@ -33348,7 +33317,7 @@ index 8828533..1541412 100644
|
||||||
return screen;
|
return screen;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -984,23 +1181,32 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
@@ -984,23 +1161,32 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
|
||||||
static void
|
static void
|
||||||
radeonDestroyScreen( __DRIscreenPrivate *sPriv )
|
radeonDestroyScreen( __DRIscreenPrivate *sPriv )
|
||||||
{
|
{
|
||||||
|
@ -33394,7 +33363,7 @@ index 8828533..1541412 100644
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1009,16 +1215,21 @@ radeonDestroyScreen( __DRIscreenPrivate *sPriv )
|
@@ -1009,16 +1195,21 @@ radeonDestroyScreen( __DRIscreenPrivate *sPriv )
|
||||||
static GLboolean
|
static GLboolean
|
||||||
radeonInitDriver( __DRIscreenPrivate *sPriv )
|
radeonInitDriver( __DRIscreenPrivate *sPriv )
|
||||||
{
|
{
|
||||||
|
@ -33422,13 +33391,14 @@ index 8828533..1541412 100644
|
||||||
/**
|
/**
|
||||||
* Create the Mesa framebuffer and renderbuffers for a given window/drawable.
|
* Create the Mesa framebuffer and renderbuffers for a given window/drawable.
|
||||||
*
|
*
|
||||||
@@ -1031,101 +1242,111 @@ radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv,
|
@@ -1031,101 +1222,111 @@ radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv,
|
||||||
const __GLcontextModes *mesaVis,
|
const __GLcontextModes *mesaVis,
|
||||||
GLboolean isPixmap )
|
GLboolean isPixmap )
|
||||||
{
|
{
|
||||||
- radeonScreenPtr screen = (radeonScreenPtr) driScrnPriv->private;
|
- radeonScreenPtr screen = (radeonScreenPtr) driScrnPriv->private;
|
||||||
+ radeonScreenPtr screen = (radeonScreenPtr) driScrnPriv->private;
|
+ radeonScreenPtr screen = (radeonScreenPtr) driScrnPriv->private;
|
||||||
+
|
|
||||||
|
- if (isPixmap) {
|
||||||
+ const GLboolean swDepth = GL_FALSE;
|
+ const GLboolean swDepth = GL_FALSE;
|
||||||
+ const GLboolean swAlpha = GL_FALSE;
|
+ const GLboolean swAlpha = GL_FALSE;
|
||||||
+ const GLboolean swAccum = mesaVis->accumRedBits > 0;
|
+ const GLboolean swAccum = mesaVis->accumRedBits > 0;
|
||||||
|
@ -33436,8 +33406,7 @@ index 8828533..1541412 100644
|
||||||
+ mesaVis->depthBits != 24;
|
+ mesaVis->depthBits != 24;
|
||||||
+ GLenum rgbFormat;
|
+ GLenum rgbFormat;
|
||||||
+ struct radeon_framebuffer *rfb;
|
+ struct radeon_framebuffer *rfb;
|
||||||
|
+
|
||||||
- if (isPixmap) {
|
|
||||||
+ if (isPixmap)
|
+ if (isPixmap)
|
||||||
return GL_FALSE; /* not implemented */
|
return GL_FALSE; /* not implemented */
|
||||||
- }
|
- }
|
||||||
|
@ -33614,7 +33583,7 @@ index 8828533..1541412 100644
|
||||||
/**
|
/**
|
||||||
* Choose the appropriate CreateContext function based on the chipset.
|
* Choose the appropriate CreateContext function based on the chipset.
|
||||||
* Eventually, all drivers will go through this process.
|
* Eventually, all drivers will go through this process.
|
||||||
@@ -1136,25 +1357,21 @@ static GLboolean radeonCreateContext(const __GLcontextModes * glVisual,
|
@@ -1136,25 +1337,21 @@ static GLboolean radeonCreateContext(const __GLcontextModes * glVisual,
|
||||||
{
|
{
|
||||||
__DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv;
|
__DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv;
|
||||||
radeonScreenPtr screen = (radeonScreenPtr) (sPriv->private);
|
radeonScreenPtr screen = (radeonScreenPtr) (sPriv->private);
|
||||||
|
@ -33650,7 +33619,7 @@ index 8828533..1541412 100644
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1216,13 +1433,103 @@ radeonInitScreen(__DRIscreenPrivate *psp)
|
@@ -1216,13 +1413,103 @@ radeonInitScreen(__DRIscreenPrivate *psp)
|
||||||
if (!radeonInitDriver(psp))
|
if (!radeonInitDriver(psp))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -33663,7 +33632,7 @@ index 8828533..1541412 100644
|
||||||
+ (dri_priv->bpp == 16) ? 0 : 8, 1);
|
+ (dri_priv->bpp == 16) ? 0 : 8, 1);
|
||||||
}
|
}
|
||||||
+#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
|
+#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
|
||||||
+
|
|
||||||
+/**
|
+/**
|
||||||
+ * This is the driver specific part of the createNewScreen entry point.
|
+ * This is the driver specific part of the createNewScreen entry point.
|
||||||
+ * Called when using DRI2.
|
+ * Called when using DRI2.
|
||||||
|
@ -33704,7 +33673,7 @@ index 8828533..1541412 100644
|
||||||
+ driInitSingleExtension( NULL, ATI_fs_extension );
|
+ driInitSingleExtension( NULL, ATI_fs_extension );
|
||||||
+ driInitExtensions( NULL, point_extensions, GL_FALSE );
|
+ driInitExtensions( NULL, point_extensions, GL_FALSE );
|
||||||
+#endif
|
+#endif
|
||||||
|
+
|
||||||
+ if (!radeonInitDriver(psp)) {
|
+ if (!radeonInitDriver(psp)) {
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
+ }
|
+ }
|
||||||
|
@ -33756,7 +33725,7 @@ index 8828533..1541412 100644
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get information about previous buffer swaps.
|
* Get information about previous buffer swaps.
|
||||||
@@ -1230,31 +1537,26 @@ radeonInitScreen(__DRIscreenPrivate *psp)
|
@@ -1230,31 +1517,26 @@ radeonInitScreen(__DRIscreenPrivate *psp)
|
||||||
static int
|
static int
|
||||||
getSwapInfo( __DRIdrawablePrivate *dPriv, __DRIswapInfo * sInfo )
|
getSwapInfo( __DRIdrawablePrivate *dPriv, __DRIswapInfo * sInfo )
|
||||||
{
|
{
|
||||||
|
@ -33798,7 +33767,7 @@ index 8828533..1541412 100644
|
||||||
const struct __DriverAPIRec driDriverAPI = {
|
const struct __DriverAPIRec driDriverAPI = {
|
||||||
.InitScreen = radeonInitScreen,
|
.InitScreen = radeonInitScreen,
|
||||||
.DestroyScreen = radeonDestroyScreen,
|
.DestroyScreen = radeonDestroyScreen,
|
||||||
@@ -1271,23 +1573,7 @@ const struct __DriverAPIRec driDriverAPI = {
|
@@ -1271,23 +1553,7 @@ const struct __DriverAPIRec driDriverAPI = {
|
||||||
.WaitForSBC = NULL,
|
.WaitForSBC = NULL,
|
||||||
.SwapBuffersMSC = NULL,
|
.SwapBuffersMSC = NULL,
|
||||||
.CopySubBuffer = radeonCopySubBuffer,
|
.CopySubBuffer = radeonCopySubBuffer,
|
||||||
|
|
Loading…
Reference in a new issue