| @@ -56,6 +56,7 @@ struct i915_context | |||
| struct pipe_mipmap_tree *texture[PIPE_MAX_SAMPLERS]; | |||
| struct pipe_viewport_state viewport; | |||
| GLuint dirty; | |||
| GLuint hw_dirty; | |||
| GLuint *batch_start; | |||
| @@ -120,7 +120,11 @@ emit_prim( struct draw_stage *stage, | |||
| unsigned *ptr; | |||
| unsigned i; | |||
| i915_emit_hardware_state( i915 ); | |||
| if (i915->dirty) | |||
| i915_update_derived( i915 ); | |||
| if (i915->hw_dirty) | |||
| i915_emit_hardware_state( i915 ); | |||
| ptr = winsys->batch_start( winsys, nr * vertex_size, 0 ); | |||
| if (ptr == 0) { | |||
| @@ -182,5 +182,8 @@ void i915_update_derived( struct i915_context *i915 ) | |||
| I915_NEW_FRAMEBUFFER)) | |||
| compute_cliprect(i915); | |||
| if (i915->dirty) | |||
| i915->hw_dirty = 1; | |||
| i915->dirty = 0; | |||
| } | |||
| @@ -250,5 +250,7 @@ i915_emit_hardware_state(struct i915_context *i915 ) | |||
| for (i = 0; i < dwords; i++) | |||
| OUT_BATCH( prog[i] ); | |||
| } | |||
| i915->hw_dirty = 0; | |||
| } | |||