On Thu, 2003-11-06 at 00:36, Felix KÃhling wrote:
> I just ran into another related problem. The xscreensaver demo cage (for
> example) terminated with:
>
> drmCommandWrite: -22
> drmRadeonCmdBuffer: -22 (exiting)
>
> before rendering the first frame. The kernel log shows:
>
> [drm:radeon_check_and_fixup_packets] *ERROR* Invalid R100 texture offset
> [drm:radeon_emit_packets] *ERROR* Packet verification failed
> [drm:radeon_cp_cmdbuf] *ERROR* radeon_emit_packets failed
>
> This appears to happen if the application changes some texture filter
> options without triggering the _NEW_TEXTURE state bit. Therefore the
> code in radeon_texstate.c doesn't set a valid texture offset in the
> TXFILTER command packet. The attached patch fixes the problem for me. I
> hope it doesn't break anything else.
>
> R200 may need a similar patch.
Indeed, something like this.
--
Earthling Michel DÃnzer | Debian (powerpc), X and DRI developer
Software libre enthusiast | http://svcs.affero.net/rm.php?r=daenzer
Index: lib/GL/mesa/src/drv/r200/r200_state_init.c
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/r200/r200_state_init.c,v
retrieving revision 1.14
diff -p -u -r1.14 r200_state_init.c
--- lib/GL/mesa/src/drv/r200/r200_state_init.c 4 Nov 2003 00:46:04 -0000 1.14
+++ lib/GL/mesa/src/drv/r200/r200_state_init.c 6 Nov 2003 00:00:35 -0000
@@ -490,7 +496,8 @@ void r200InitState( r200ContextPtr rmesa
((i << R200_TXFORMAT_ST_ROUTE_SHIFT) | /* <-- note i */
(2 << R200_TXFORMAT_WIDTH_SHIFT) |
(2 << R200_TXFORMAT_HEIGHT_SHIFT));
- rmesa->hw.tex[i].cmd[TEX_PP_TXOFFSET] = 0;
+ rmesa->hw.tex[i].cmd[TEX_PP_TXOFFSET] =
+ rmesa->r200Screen->texOffset[RADEON_CARD_HEAP];
rmesa->hw.tex[i].cmd[TEX_PP_BORDER_COLOR] = 0;
rmesa->hw.tex[i].cmd[TEX_PP_TXFORMAT_X] =
(/* R200_TEXCOORD_PROJ | */