mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-27 15:20:37 +02:00
gallium: additional fixes to ensure even number of vertices per buffer
This commit is contained in:
parent
7d7f3e2c94
commit
f140138558
4 changed files with 18 additions and 0 deletions
|
|
@ -390,6 +390,9 @@ vbuf_alloc_vertices( struct vbuf_stage *vbuf )
|
|||
/* Allocate a new vertex buffer */
|
||||
vbuf->max_vertices = vbuf->render->max_vertex_buffer_bytes / vbuf->vertex_size;
|
||||
|
||||
/* even number */
|
||||
vbuf->max_vertices = vbuf->max_vertices & ~1;
|
||||
|
||||
/* Must always succeed -- driver gives us a
|
||||
* 'max_vertex_buffer_bytes' which it guarantees it can allocate,
|
||||
* and it will flush itself if necessary to do so. If this does
|
||||
|
|
|
|||
|
|
@ -143,6 +143,9 @@ void draw_pt_emit_prepare( struct pt_emit *emit,
|
|||
|
||||
*max_vertices = (draw->render->max_vertex_buffer_bytes /
|
||||
(vinfo->size * 4));
|
||||
|
||||
/* even number */
|
||||
*max_vertices = *max_vertices & ~1;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -200,6 +200,15 @@ static void fetch_emit_prepare( struct draw_pt_middle_end *middle,
|
|||
|
||||
*max_vertices = (draw->render->max_vertex_buffer_bytes /
|
||||
(vinfo->size * 4));
|
||||
|
||||
/* Return an even number of verts.
|
||||
* This prevents "parity" errors when splitting long triangle strips which
|
||||
* can lead to front/back culling mix-ups.
|
||||
* Every other triangle in a strip has an alternate front/back orientation
|
||||
* so splitting at an odd position can cause the orientation of subsequent
|
||||
* triangles to get reversed.
|
||||
*/
|
||||
*max_vertices = *max_vertices & ~1;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -99,6 +99,9 @@ static void fetch_pipeline_prepare( struct draw_pt_middle_end *middle,
|
|||
*max_vertices = DRAW_PIPE_MAX_VERTICES;
|
||||
}
|
||||
|
||||
/* return even number */
|
||||
*max_vertices = *max_vertices & ~1;
|
||||
|
||||
/* No need to prepare the shader.
|
||||
*/
|
||||
vs->prepare(vs, draw);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue