radeon exa/render bug?

Alex Deucher alexdeucher at gmail.com
Sun Feb 12 15:28:52 PST 2006


On 2/12/06, John Clemens <john at deater.net> wrote:
>
> I think I found a buglet in radeon_exa_render.c:R100TextureSetup().
> Unless I'm waay too tired, the test for a bad texture offset should
> happen before we set the byte-swap and MACRO_TILE control bits.  As
> it stands now, it looks like we always fall back if we have a Colortiling
> on, or a byte swapped texture format.   Patch attached.
>
> But it doesn't solve my main issue. I'm looking at the ati driver for my
> iBook G3 (Radeon M6), trying to figure out what's causing corruption with
> EXA and Render acceleration.  A tiny screenshot of the corruption can be
> seen here: https://bugs.freedesktop.org/attachment.cgi?id=4299 .  The
> problem goes away if you turn off either render acceleration or EXA (or
> both).  If anyone has any ideas, I'm all ears.  Just please be patient,
> I've never worked on video drivers before, much less opengl.
>
> Also, I'm assuming that there's no way to use colortiling on linux/ppc?
> because we have to use 'UseFBDev' for mode switching?
>

Usefbdev is no longer required for radeon and r128 on ppc. turn it off
and make sure the "vgaaccess" option is set to true (default on PPC).

Alex

> thanks,
> john.c
>
> --
> John Clemens                      http://www.deater.net/john
> john at deater.net      "I Hate Quotes" -- Samuel L. Clemens
>
>
>
> --- xf86-video-ati-6.5.7.3-orig/src/radeon_exa_render.c 2005-09-27 19:34:11.000000000 -0400
> +++ xf86-video-ati-6.5.7.3/src/radeon_exa_render.c      2006-02-12 02:54:37.000000000 -0500
> @@ -223,6 +223,11 @@
>       txpitch = exaGetPixmapPitch(pPix);
>       txoffset = exaGetPixmapOffset(pPix) + info->fbLocation;
>
> +    if ((txoffset & 0x1f) != 0)
> +       RADEON_FALLBACK(("Bad texture offset 0x%x\n", (int)txoffset));
> +    if ((txpitch & 0x1f) != 0)
> +       RADEON_FALLBACK(("Bad texture pitch 0x%x\n", (int)txpitch));
> +
>       for (i = 0; i < sizeof(R100TexFormats) / sizeof(R100TexFormats[0]); i++)
>       {
>         if (R100TexFormats[i].fmt == pPict->format)
> @@ -241,11 +246,6 @@
>         txformat |= RADEON_TXFORMAT_NON_POWER2;
>       txformat |= unit << 24; /* RADEON_TXFORMAT_ST_ROUTE_STQX */
>
> -    if ((txoffset & 0x1f) != 0)
> -       RADEON_FALLBACK(("Bad texture offset 0x%x\n", (int)txoffset));
> -    if ((txpitch & 0x1f) != 0)
> -       RADEON_FALLBACK(("Bad texture pitch 0x%x\n", (int)txpitch));
> -
>       switch (pPict->filter) {
>       case PictFilterNearest:
>         txfilter = (RADEON_MAG_FILTER_NEAREST | RADEON_MIN_FILTER_NEAREST);



More information about the xorg mailing list