fix r128 rendering, lockups
authorMiroslav Šustek <sustmidown@centrum.cz>
Tue, 27 Mar 2007 03:34:33 +0000 (23:34 -0400)
committerAlex Deucher <alex@botch2.com>
Tue, 27 Mar 2007 03:40:04 +0000 (23:40 -0400)
mis-count in offset led to mis-rendering and lockups;
units are 4 bytes rather than 1.  Noticed by Chris Salch.
fixes bug 7994, possibly others.

src/mesa/drivers/dri/r128/r128_tris.c

index 7e3e714f37269a39e44072f74f65077028a1bb68..f406e928c5e5acef4ebb4dbfe267111e43831176 100644 (file)
@@ -605,9 +605,9 @@ static void r128RenderStart( GLcontext *ctx )
     * build up a hardware vertex.
     */
    if (RENDERINPUTS_TEST_RANGE( index_bitset, _TNL_FIRST_TEX, _TNL_LAST_TEX ))
-      EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, R128_CCE_VC_FRMT_RHW, 16 );
+      EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, R128_CCE_VC_FRMT_RHW, 4 );
    else
-      EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_3F_VIEWPORT, 0, 12 );
+      EMIT_ATTR( _TNL_ATTRIB_POS, EMIT_3F_VIEWPORT, 0, 3 );
 
    rmesa->coloroffset = offset;
 #if MESA_LITTLE_ENDIAN