r200: Optimize polygon stipple emit.
authorPauli Nieminen <suokkos@gmail.com>
Fri, 5 Feb 2010 13:21:55 +0000 (15:21 +0200)
committerPauli Nieminen <suokkos@gmail.com>
Fri, 5 Feb 2010 13:26:19 +0000 (15:26 +0200)
Only emit polygon stipple when the state is enabled.

src/mesa/drivers/dri/r200/r200_state_init.c

index 4e8075eabc97649fecb7def04aec30e429ace0ec..51e8ac56d85bff1c8fea16f077909995425f19c9 100644 (file)
@@ -347,6 +347,15 @@ static int check_rrb(GLcontext *ctx, struct radeon_state_atom *atom)
    return atom->cmd_size;
 }
 
+static int check_polygon_stipple(GLcontext *ctx,
+               struct radeon_state_atom *atom)
+{
+   r200ContextPtr r200 = R200_CONTEXT(ctx);
+   if (r200->hw.set.cmd[SET_RE_CNTL] & R200_STIPPLE_ENABLE)
+          return atom->cmd_size;
+   return 0;
+}
+
 static void mtl_emit(GLcontext *ctx, struct radeon_state_atom *atom)
 {
    r200ContextPtr r200 = R200_CONTEXT(ctx);
@@ -885,7 +894,7 @@ void r200InitState( r200ContextPtr rmesa )
       }
    }
 
-   ALLOC_STATE( stp, always, STP_STATE_SIZE, "STP/stp", 0 );
+   ALLOC_STATE( stp, polygon_stipple, STP_STATE_SIZE, "STP/stp", 0 );
 
    for (i = 0; i < 6; i++)
       if (rmesa->radeon.radeonScreen->kernel_mm)