Fix Alan Barnett's 'try10' display list bug.
authorKeith Whitwell <keith@tungstengraphics.com>
Tue, 17 Jul 2001 21:44:37 +0000 (21:44 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Tue, 17 Jul 2001 21:44:37 +0000 (21:44 +0000)
src/mesa/drivers/glide/fxtris.c
src/mesa/tnl/t_imm_dlist.c
src/mesa/tnl/t_imm_fixup.c

index 150a3f8005241ed6a7d6013944c9de9e1ac8f8de..57a16ee6ea39db54aba0b8d3b630755f69c5cc8d 100644 (file)
@@ -309,10 +309,10 @@ static struct {
 
 #define VERT_SET_RGBA( dst, f )                   \
 do {                                           \
-   dst->r = CLAMP( f[0], 0, 1 ) * 255.0;       \
-   dst->g = CLAMP( f[1], 0, 1 ) * 255.0;       \
-   dst->b = CLAMP( f[2], 0, 1 ) * 255.0;       \
-   dst->a = CLAMP( f[3], 0, 1 ) * 255.0;       \
+   dst->r = (GLfloat)f[0];     \
+   dst->g = (GLfloat)f[1];     \
+   dst->b = (GLfloat)f[2];     \
+   dst->a = (GLfloat)f[3];     \
 } while (0)
 
 #define VERT_COPY_RGBA( v0, v1 )               \
index 3cfdf1e51556591e89f352e718393e15280145d4..1708905ac55858f0997e1fbd69ef868b70ace277 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_dlist.c,v 1.22 2001/07/13 16:39:19 brianp Exp $ */
+/* $Id: t_imm_dlist.c,v 1.23 2001/07/17 21:44:37 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -341,9 +341,6 @@ execute_compiled_cassette( GLcontext *ctx, void *data )
       loopback_compiled_cassette( ctx, IM );
       restore_compiled_primitives( ctx, IM );
    }
-   else if (IM->Count == IM->Start) {
-      _tnl_copy_to_current( ctx, IM, IM->OrFlag );
-   }
    else {
       if (ctx->NewState)
         _mesa_update_state(ctx);
@@ -356,16 +353,22 @@ execute_compiled_cassette( GLcontext *ctx, void *data )
 
       if (IM->Primitive[IM->LastPrimitive] & PRIM_END)
         ctx->Driver.CurrentExecPrimitive = GL_POLYGON+1;
-      else
+      else if ((IM->Primitive[IM->LastPrimitive] & PRIM_BEGIN) ||
+              (IM->Primitive[IM->LastPrimitive] & PRIM_MODE_MASK) == 
+              PRIM_OUTSIDE_BEGIN_END) {
         ctx->Driver.CurrentExecPrimitive =
            IM->Primitive[IM->LastPrimitive] & PRIM_MODE_MASK;
+      }
 
       _tnl_get_exec_copy_verts( ctx, IM );
 
       if (IM->NormalLengthPtr) 
         fixup_normal_lengths( IM );
       
-      _tnl_run_cassette( ctx, IM );
+      if (IM->Count == IM->Start) 
+        _tnl_copy_to_current( ctx, IM, IM->OrFlag );
+      else
+        _tnl_run_cassette( ctx, IM );
 
       restore_compiled_primitives( ctx, IM );
    }
@@ -394,6 +397,7 @@ print_compiled_cassette( GLcontext *ctx, void *data )
           node->IM->id, node->Start, node->Count);
 
    IM->Start = node->Start;
+   IM->CopyStart = node->Start;
    IM->Count = node->Count;
    IM->BeginState = node->BeginState;
    IM->OrFlag = node->OrFlag;
index 0336a9779e88d10da59e37d8c4612a949d761612..607235d327b436933fc3eee9f4403baaa1113dae 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_fixup.c,v 1.22 2001/06/28 17:34:14 keithw Exp $ */
+/* $Id: t_imm_fixup.c,v 1.23 2001/07/17 21:44:37 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -512,12 +512,8 @@ void _tnl_fixup_compiled_cassette( GLcontext *ctx, struct immediate *IM )
 {
    TNLcontext *tnl = TNL_CONTEXT(ctx);
    GLuint fixup;
-   GLuint count = IM->Count;
    GLuint start = IM->Start;
 
-   if (count == start)
-      return;
-
    IM->CopyOrFlag = IM->OrFlag;          
    IM->CopyAndFlag = IM->AndFlag; 
    IM->CopyTexSize = IM->TexSize | tnl->ExecCopyTexSize;