Sfoglia il codice sorgente

gallium/i915: compute vertex size _after_ state validation in emit_prim().

Fixes crash when drawing aa lines.
tags/mesa_20090313
Brian 17 anni fa
parent
commit
b02fc94834
1 ha cambiato i file con 7 aggiunte e 3 eliminazioni
  1. 7
    3
      src/gallium/drivers/i915simple/i915_prim_emit.c

+ 7
- 3
src/gallium/drivers/i915simple/i915_prim_emit.c Vedi File

@@ -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();


Loading…
Annulla
Salva