draw: No need to make max_vertices even.
Triangle strip alternates the front/back orientation of its triangles. max_vertices was made even so that varray never splitted a triangle strip at the wrong positions. It did not work with triangle strips with adjacencies. And it is no longer relevant with vsplit.
This commit is contained in:
parent
c3fee80f2b
commit
aaf51ed7c2
|
@ -353,9 +353,6 @@ vbuf_alloc_vertices( struct vbuf_stage *vbuf )
|
||||||
/* Allocate a new vertex buffer */
|
/* Allocate a new vertex buffer */
|
||||||
vbuf->max_vertices = vbuf->render->max_vertex_buffer_bytes / vbuf->vertex_size;
|
vbuf->max_vertices = vbuf->render->max_vertex_buffer_bytes / vbuf->vertex_size;
|
||||||
|
|
||||||
/* even number */
|
|
||||||
vbuf->max_vertices = vbuf->max_vertices & ~1;
|
|
||||||
|
|
||||||
if(vbuf->max_vertices >= UNDEFINED_VERTEX_ID)
|
if(vbuf->max_vertices >= UNDEFINED_VERTEX_ID)
|
||||||
vbuf->max_vertices = UNDEFINED_VERTEX_ID - 1;
|
vbuf->max_vertices = UNDEFINED_VERTEX_ID - 1;
|
||||||
|
|
||||||
|
|
|
@ -120,9 +120,6 @@ void draw_pt_emit_prepare( struct pt_emit *emit,
|
||||||
|
|
||||||
*max_vertices = (draw->render->max_vertex_buffer_bytes /
|
*max_vertices = (draw->render->max_vertex_buffer_bytes /
|
||||||
(vinfo->size * 4));
|
(vinfo->size * 4));
|
||||||
|
|
||||||
/* even number */
|
|
||||||
*max_vertices = *max_vertices & ~1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -191,15 +191,6 @@ static void fetch_emit_prepare( struct draw_pt_middle_end *middle,
|
||||||
|
|
||||||
*max_vertices = (draw->render->max_vertex_buffer_bytes /
|
*max_vertices = (draw->render->max_vertex_buffer_bytes /
|
||||||
(vinfo->size * 4));
|
(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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -175,15 +175,6 @@ static void fse_prepare( struct draw_pt_middle_end *middle,
|
||||||
*max_vertices = (draw->render->max_vertex_buffer_bytes /
|
*max_vertices = (draw->render->max_vertex_buffer_bytes /
|
||||||
(vinfo->size * 4));
|
(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;
|
|
||||||
|
|
||||||
/* Probably need to do this somewhere (or fix exec shader not to
|
/* Probably need to do this somewhere (or fix exec shader not to
|
||||||
* need it):
|
* need it):
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -119,9 +119,6 @@ static void fetch_pipeline_prepare( struct draw_pt_middle_end *middle,
|
||||||
*max_vertices = 4096;
|
*max_vertices = 4096;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return even number */
|
|
||||||
*max_vertices = *max_vertices & ~1;
|
|
||||||
|
|
||||||
/* No need to prepare the shader.
|
/* No need to prepare the shader.
|
||||||
*/
|
*/
|
||||||
vs->prepare(vs, draw);
|
vs->prepare(vs, draw);
|
||||||
|
|
|
@ -125,9 +125,6 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle,
|
||||||
*max_vertices = 4096;
|
*max_vertices = 4096;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return even number */
|
|
||||||
*max_vertices = *max_vertices & ~1;
|
|
||||||
|
|
||||||
draw_llvm_make_variant_key(fpme->llvm, &key);
|
draw_llvm_make_variant_key(fpme->llvm, &key);
|
||||||
|
|
||||||
li = first_elem(&shader->variants);
|
li = first_elem(&shader->variants);
|
||||||
|
|
Loading…
Reference in New Issue