Mesa (main): turnip: reset push descriptor set on command buffer reset

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 2 16:29:59 UTC 2021


Module: Mesa
Branch: main
Commit: 74aa09b22c6fe527f46925ae6f2faaf28b74c04d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=74aa09b22c6fe527f46925ae6f2faaf28b74c04d

Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date:   Wed Jun  2 16:07:13 2021 +0300

turnip: reset push descriptor set on command buffer reset

Otherwise it will store a pointer to already unmapped memory which
could lead to a crash in tu_CmdPushDescriptorSetWithTemplateKHR since
it tries to copy data from the old memory.

Fixes a crash with Zink's new lazy descriptor manager instroduced
in bfdd1d8d

Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11137>

---

 src/freedreno/vulkan/tu_cmd_buffer.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c
index e209bc9ee4e..d3592a24f40 100644
--- a/src/freedreno/vulkan/tu_cmd_buffer.c
+++ b/src/freedreno/vulkan/tu_cmd_buffer.c
@@ -1395,8 +1395,10 @@ tu_reset_cmd_buffer(struct tu_cmd_buffer *cmd_buffer)
    tu_cs_reset(&cmd_buffer->draw_epilogue_cs);
    tu_cs_reset(&cmd_buffer->sub_cs);
 
-   for (unsigned i = 0; i < MAX_BIND_POINTS; i++)
+   for (unsigned i = 0; i < MAX_BIND_POINTS; i++) {
       memset(&cmd_buffer->descriptors[i].sets, 0, sizeof(cmd_buffer->descriptors[i].sets));
+      memset(&cmd_buffer->descriptors[i].push_set, 0, sizeof(cmd_buffer->descriptors[i].push_set));
+   }
 
    cmd_buffer->status = TU_CMD_BUFFER_STATUS_INITIAL;
 



More information about the mesa-commit mailing list