Mesa (master): vc4: fix vc4_yuv_blit overwriting fragment constant buffer slot 0

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Mar 3 19:31:16 UTC 2020


Module: Mesa
Branch: master
Commit: 291f40a4991a7fe6d6091051421290c585bb63a8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=291f40a4991a7fe6d6091051421290c585bb63a8

Author: Chris Lord <clord at igalia.com>
Date:   Fri Feb 28 15:18:14 2020 +0000

vc4: fix vc4_yuv_blit overwriting fragment constant buffer slot 0

vc4_yuv_blit calls util_blitter_restore_constant_buffer_state without
first calling util_blitter_save_fragment_constant_buffer_slot. This causes
subsequent crashes in vc4_write_uniforms when using fragment shaders that
reference YUV textures.

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2581
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3997>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3997>

---

 src/gallium/drivers/vc4/vc4_blit.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/gallium/drivers/vc4/vc4_blit.c b/src/gallium/drivers/vc4/vc4_blit.c
index 93b1478ddd1..4e4c4898ea8 100644
--- a/src/gallium/drivers/vc4/vc4_blit.c
+++ b/src/gallium/drivers/vc4/vc4_blit.c
@@ -165,6 +165,8 @@ vc4_tile_blit(struct pipe_context *pctx, const struct pipe_blit_info *info)
 void
 vc4_blitter_save(struct vc4_context *vc4)
 {
+        util_blitter_save_fragment_constant_buffer_slot(vc4->blitter,
+                                                        vc4->constbuf[PIPE_SHADER_FRAGMENT].cb);
         util_blitter_save_vertex_buffer_slot(vc4->blitter, vc4->vertexbuf.vb);
         util_blitter_save_vertex_elements(vc4->blitter, vc4->vtx);
         util_blitter_save_vertex_shader(vc4->blitter, vc4->prog.bind_vs);



More information about the mesa-commit mailing list