r300g: only emit scissor when needed
authorMarek Olšák <maraeo@gmail.com>
Tue, 12 Jan 2010 22:55:37 +0000 (23:55 +0100)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Wed, 13 Jan 2010 02:08:57 +0000 (18:08 -0800)
Reverting some bits from ce1c493ff8fad4b62e2b66f06636ac6560a6e0ad.

Given the latest fixes, it's not needed to always emit scissor, really.

src/gallium/drivers/r300/r300_context.c
src/gallium/drivers/r300/r300_state.c

index be83c3eca80bc5b01362e36cb3d6b92605a4ce62..98a5bb8e5fd1fd86d8e410f691123feea6bf6f68 100644 (file)
@@ -127,8 +127,6 @@ static void r300_setup_atoms(struct r300_context* r300)
     R300_INIT_ATOM(rs);
     R300_INIT_ATOM(scissor);
     R300_INIT_ATOM(viewport);
-
-    r300->scissor_state.always_dirty = TRUE;
 }
 
 struct pipe_context* r300_create_context(struct pipe_screen* screen,
index a08aa3493d94b635de327b9d512042ae9e64f5f5..00f1b23117508dde764d76879aea7ee8c0a9511d 100644 (file)
@@ -491,6 +491,7 @@ static void
 
     r300->blend_state.dirty = TRUE;
     r300->dsa_state.dirty = TRUE;
+    r300->scissor_state.dirty = TRUE;
 }
 
 /* Create fragment shader state. */
@@ -692,6 +693,8 @@ static void r300_bind_rs_state(struct pipe_context* pipe, void* state)
 
     r300->rs_state.state = rs;
     r300->rs_state.dirty = TRUE;
+    /* XXX Why is this still needed, dammit!? */
+    r300->scissor_state.dirty = TRUE;
     r300->viewport_state.dirty = TRUE;
 
     /* XXX Clean these up when we move to atom emits */
@@ -836,6 +839,7 @@ static void r300_set_scissor_state(struct pipe_context* pipe,
 
     memcpy(r300->scissor_state.state, state,
         sizeof(struct pipe_scissor_state));
+    r300->scissor_state.dirty = TRUE;
 }
 
 static void r300_set_viewport_state(struct pipe_context* pipe,