diff options
| -rw-r--r-- | src/gallium/drivers/i915simple/i915_prim_emit.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/src/gallium/drivers/i915simple/i915_prim_emit.c b/src/gallium/drivers/i915simple/i915_prim_emit.c index 44c4325936..6da42b3846 100644 --- a/src/gallium/drivers/i915simple/i915_prim_emit.c +++ b/src/gallium/drivers/i915simple/i915_prim_emit.c @@ -72,6 +72,8 @@ emit_hw_vertex( struct i915_context *i915,     uint i;     uint count = 0;  /* for debug/sanity */ +   assert(!i915->dirty); +     for (i = 0; i < vinfo->num_attribs; i++) {        switch (vinfo->emit[i]) {        case EMIT_OMIT: @@ -122,17 +124,19 @@ emit_prim( struct draw_stage *stage,  	   unsigned nr )  {     struct i915_context *i915 = setup_stage(stage)->i915; -   unsigned vertex_size = i915->current.vertex_info.size * 4; /* in bytes */ +   unsigned vertex_size;     unsigned i; -   assert(vertex_size >= 12); /* never smaller than 12 bytes */ -     if (i915->dirty)        i915_update_derived( i915 );     if (i915->hardware_dirty)        i915_emit_hardware_state( i915 ); +   /* need to do this after validation! */ +   vertex_size = i915->current.vertex_info.size * 4; /* in bytes */ +   assert(vertex_size >= 12); /* never smaller than 12 bytes */ +     if (!BEGIN_BATCH( 1 + nr * vertex_size / 4, 0 )) {        FLUSH_BATCH(); | 
