draw/mesh: reset some user state values on mesh draws.
authorDave Airlie <airlied@redhat.com>
Tue, 26 Sep 2023 00:24:23 +0000 (10:24 +1000)
committerMarge Bot <emma+marge@anholt.net>
Tue, 26 Sep 2023 01:45:23 +0000 (01:45 +0000)
Otherwise previous non-mesh draws and can leave things dirty.

Fixes crashes in:
dEQP-VK.mesh_shader.ext.query.all_queries.triangles.reset_before.copy.no_wait.indirect_draw.32bit.no_availability.no_blocks.task_mesh.inside_rp.single_view.with_secondary
after other shaders have run.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25385>

src/gallium/auxiliary/draw/draw_pt.c

index e983bd7..01f11ed 100644 (file)
@@ -643,6 +643,12 @@ draw_mesh(struct draw_context *draw,
 {
    struct draw_pt_middle_end *middle = draw->pt.middle.mesh;
 
+   draw->pt.user.eltSize = 0;
+   draw->pt.user.viewid = 0;
+   draw->pt.user.drawid = 0;
+   draw->pt.user.increment_draw_id = false;
+   draw->pt.vertices_per_patch = 0;
+
    middle->prepare(middle, 0, 0, NULL);
 
    draw_mesh_middle_end_run(middle, vert_info, prim_info);