mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 07:08:04 +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,
|
fetch_count,
|
||||||
fpme->vertex_size,
|
fpme->vertex_size,
|
||||||
fpme->vertex_size);
|
fpme->vertex_size);
|
||||||
if (gshader)
|
if (gshader) {
|
||||||
fetch_count =
|
fetch_count =
|
||||||
draw_geometry_shader_run(gshader,
|
draw_geometry_shader_run(gshader,
|
||||||
(const float (*)[4])pipeline_verts->data,
|
(const float (*)[4])pipeline_verts->data,
|
||||||
|
|
@ -200,6 +200,8 @@ static void fetch_pipeline_run( struct draw_pt_middle_end *middle,
|
||||||
fetch_count,
|
fetch_count,
|
||||||
fpme->vertex_size,
|
fpme->vertex_size,
|
||||||
fpme->vertex_size);
|
fpme->vertex_size);
|
||||||
|
debug_assert(fetch_count <= alloc_count);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stream output needs to be done before clipping */
|
/* 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,
|
||||||
fpme->vertex_size);
|
fpme->vertex_size);
|
||||||
|
|
||||||
if (geometry_shader)
|
if (geometry_shader) {
|
||||||
count = draw_geometry_shader_run(geometry_shader,
|
count =
|
||||||
(const float (*)[4])pipeline_verts->data,
|
draw_geometry_shader_run(geometry_shader,
|
||||||
( float (*)[4])pipeline_verts->data,
|
(const float (*)[4])pipeline_verts->data,
|
||||||
draw->pt.user.gs_constants,
|
( float (*)[4])pipeline_verts->data,
|
||||||
count,
|
draw->pt.user.gs_constants,
|
||||||
fpme->vertex_size,
|
count,
|
||||||
fpme->vertex_size);
|
fpme->vertex_size,
|
||||||
|
fpme->vertex_size);
|
||||||
|
debug_assert(count <= alloc_count);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stream output needs to be done before clipping */
|
/* 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,
|
||||||
fpme->vertex_size);
|
fpme->vertex_size);
|
||||||
|
|
||||||
if (geometry_shader)
|
if (geometry_shader) {
|
||||||
count = draw_geometry_shader_run(geometry_shader,
|
count =
|
||||||
(const float (*)[4])pipeline_verts->data,
|
draw_geometry_shader_run(geometry_shader,
|
||||||
( float (*)[4])pipeline_verts->data,
|
(const float (*)[4])pipeline_verts->data,
|
||||||
draw->pt.user.gs_constants,
|
( float (*)[4])pipeline_verts->data,
|
||||||
count,
|
draw->pt.user.gs_constants,
|
||||||
fpme->vertex_size,
|
count,
|
||||||
fpme->vertex_size);
|
fpme->vertex_size,
|
||||||
|
fpme->vertex_size);
|
||||||
|
debug_assert(count <= alloc_count);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stream output needs to be done before clipping */
|
/* stream output needs to be done before clipping */
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue