mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 21:10:12 +01:00
Reset temporary vertices ids.
This commit is contained in:
parent
c28fdf3096
commit
3e22180fc8
4 changed files with 41 additions and 2 deletions
|
|
@ -243,6 +243,18 @@ void draw_alloc_tmps( struct draw_stage *stage, unsigned nr )
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the verticies ids of this and subsequent stages.
|
||||
*/
|
||||
void draw_reset_tmps( struct draw_stage *stage )
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
if (stage->tmp)
|
||||
for (i = 0; i < stage->nr_tmps; i++)
|
||||
stage->tmp[i]->vertex_id = UNDEFINED_VERTEX_ID;
|
||||
}
|
||||
|
||||
void draw_free_tmps( struct draw_stage *stage )
|
||||
{
|
||||
if (stage->tmp) {
|
||||
|
|
@ -251,9 +263,24 @@ void draw_free_tmps( struct draw_stage *stage )
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
boolean draw_use_sse(struct draw_context *draw)
|
||||
{
|
||||
return (boolean) draw->use_sse;
|
||||
}
|
||||
|
||||
|
||||
void draw_reset_vertex_ids(struct draw_context *draw)
|
||||
{
|
||||
struct draw_stage *stage = draw->pipeline.first;
|
||||
|
||||
while (stage) {
|
||||
if (stage->reset_tmps)
|
||||
stage->reset_tmps(stage);
|
||||
else
|
||||
draw_reset_tmps(stage);
|
||||
stage = stage->next;
|
||||
}
|
||||
|
||||
draw_vertex_cache_reset_vertex_ids(draw);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,6 +116,13 @@ struct draw_stage
|
|||
|
||||
void (*end)( struct draw_stage * );
|
||||
|
||||
/**
|
||||
* Reset temporary vertices ids in this stage
|
||||
*
|
||||
* draw_free_tmps will be called instead if null.
|
||||
*/
|
||||
void (*reset_tmps)( struct draw_stage * );
|
||||
|
||||
void (*reset_stipple_counter)( struct draw_stage * );
|
||||
};
|
||||
|
||||
|
|
@ -254,8 +261,11 @@ extern struct draw_stage *draw_validate_stage( struct draw_context *context );
|
|||
|
||||
|
||||
extern void draw_free_tmps( struct draw_stage *stage );
|
||||
extern void draw_reset_tmps( struct draw_stage *stage );
|
||||
extern void draw_alloc_tmps( struct draw_stage *stage, unsigned nr );
|
||||
|
||||
extern void draw_reset_vertex_ids( struct draw_context *draw );
|
||||
|
||||
|
||||
extern int draw_vertex_cache_check_space( struct draw_context *draw,
|
||||
unsigned nr_verts );
|
||||
|
|
|
|||
|
|
@ -290,9 +290,11 @@ static void vbuf_flush_elements( struct draw_stage *stage )
|
|||
break;
|
||||
case PIPE_PRIM_LINES:
|
||||
hwprim = PRIM3D_LINELIST;
|
||||
assert(nr % 2 == 0);
|
||||
break;
|
||||
case PIPE_PRIM_TRIANGLES:
|
||||
hwprim = PRIM3D_TRILIST;
|
||||
assert(nr % 3 == 0);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
|
|
@ -365,7 +367,7 @@ static void vbuf_flush_vertices( struct draw_stage *stage )
|
|||
* issues uploading vertices if the hardware wants to flush when
|
||||
* we flush.
|
||||
*/
|
||||
draw_vertex_cache_reset_vertex_ids( vbuf->i915->draw );
|
||||
draw_reset_vertex_ids( vbuf->i915->draw );
|
||||
}
|
||||
|
||||
/* FIXME: handle failure */
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ static void vbuf_flush_elements( struct draw_stage *stage )
|
|||
* issues uploading vertices if the hardware wants to flush when
|
||||
* we flush.
|
||||
*/
|
||||
draw_vertex_cache_reset_vertex_ids( vbuf->draw_context );
|
||||
draw_reset_vertex_ids( vbuf->draw_context );
|
||||
}
|
||||
|
||||
stage->tri = vbuf_first_tri;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue