mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 07:18:17 +02:00
draw: make sure that the gs never outputs more data than we allocated for
This commit is contained in:
parent
9be40de087
commit
9ef6d34f7e
1 changed files with 25 additions and 17 deletions
|
|
@ -191,7 +191,7 @@ static void fetch_pipeline_run( struct draw_pt_middle_end *middle,
|
|||
fetch_count,
|
||||
fpme->vertex_size,
|
||||
fpme->vertex_size);
|
||||
if (gshader)
|
||||
if (gshader) {
|
||||
fetch_count =
|
||||
draw_geometry_shader_run(gshader,
|
||||
(const float (*)[4])pipeline_verts->data,
|
||||
|
|
@ -200,6 +200,8 @@ static void fetch_pipeline_run( struct draw_pt_middle_end *middle,
|
|||
fetch_count,
|
||||
fpme->vertex_size,
|
||||
fpme->vertex_size);
|
||||
debug_assert(fetch_count <= alloc_count);
|
||||
}
|
||||
}
|
||||
|
||||
/* stream output needs to be done before clipping */
|
||||
|
|
@ -283,14 +285,17 @@ static void fetch_pipeline_linear_run( struct draw_pt_middle_end *middle,
|
|||
fpme->vertex_size,
|
||||
fpme->vertex_size);
|
||||
|
||||
if (geometry_shader)
|
||||
count = draw_geometry_shader_run(geometry_shader,
|
||||
(const float (*)[4])pipeline_verts->data,
|
||||
( float (*)[4])pipeline_verts->data,
|
||||
draw->pt.user.gs_constants,
|
||||
count,
|
||||
fpme->vertex_size,
|
||||
fpme->vertex_size);
|
||||
if (geometry_shader) {
|
||||
count =
|
||||
draw_geometry_shader_run(geometry_shader,
|
||||
(const float (*)[4])pipeline_verts->data,
|
||||
( float (*)[4])pipeline_verts->data,
|
||||
draw->pt.user.gs_constants,
|
||||
count,
|
||||
fpme->vertex_size,
|
||||
fpme->vertex_size);
|
||||
debug_assert(count <= alloc_count);
|
||||
}
|
||||
}
|
||||
|
||||
/* stream output needs to be done before clipping */
|
||||
|
|
@ -368,14 +373,17 @@ static boolean fetch_pipeline_linear_run_elts( struct draw_pt_middle_end *middle
|
|||
fpme->vertex_size,
|
||||
fpme->vertex_size);
|
||||
|
||||
if (geometry_shader)
|
||||
count = draw_geometry_shader_run(geometry_shader,
|
||||
(const float (*)[4])pipeline_verts->data,
|
||||
( float (*)[4])pipeline_verts->data,
|
||||
draw->pt.user.gs_constants,
|
||||
count,
|
||||
fpme->vertex_size,
|
||||
fpme->vertex_size);
|
||||
if (geometry_shader) {
|
||||
count =
|
||||
draw_geometry_shader_run(geometry_shader,
|
||||
(const float (*)[4])pipeline_verts->data,
|
||||
( float (*)[4])pipeline_verts->data,
|
||||
draw->pt.user.gs_constants,
|
||||
count,
|
||||
fpme->vertex_size,
|
||||
fpme->vertex_size);
|
||||
debug_assert(count <= alloc_count);
|
||||
}
|
||||
}
|
||||
|
||||
/* stream output needs to be done before clipping */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue