fd/replay: Add wrbuf support for KGSL/DXG

The vector for wrbufs wasn't being initialized for KGSL and DXG
leading to UB when they were used with it.

Signed-off-by: Mark Collins <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28253>
This commit is contained in:
Mark Collins
2024-03-18 11:04:36 +00:00
committed by Marge Bot
parent 0fad4e547b
commit e0a680162d
+6
View File
@@ -749,6 +749,7 @@ device_create(uint64_t base_addr)
rb_tree_init(&dev->buffers);
util_vma_heap_init(&dev->vma, req.gpuaddr, ROUND_DOWN_TO(FAKE_ADDRESS_SPACE_SIZE, 4096));
u_vector_init(&dev->cmdstreams, 8, sizeof(struct cmdstream));
u_vector_init(&dev->wrbufs, 8, sizeof(struct wrbuf));
struct kgsl_drawctxt_create drawctxt_req = {
.flags = KGSL_CONTEXT_SAVE_GMEM |
@@ -822,6 +823,8 @@ device_submit_cmdstreams(struct device *dev)
device_print_cp_log(dev);
device_dump_wrbuf(dev);
u_vector_finish(&dev->wrbufs);
u_vector_init(&dev->wrbufs, 8, sizeof(struct wrbuf));
device_free_buffers(dev);
}
@@ -1086,6 +1089,7 @@ device_create(uint64_t base_addr)
rb_tree_init(&dev->buffers);
util_vma_heap_init(&dev->vma, dev->va_iova, ROUND_DOWN_TO(alloc_size, 4096));
u_vector_init(&dev->cmdstreams, 8, sizeof(struct cmdstream));
u_vector_init(&dev->wrbufs, 8, sizeof(struct wrbuf));
printf("Allocated iova at 0x%" PRIx64 "\n", dev->va_iova);
@@ -1183,6 +1187,8 @@ device_submit_cmdstreams(struct device *dev)
device_print_cp_log(dev);
device_dump_wrbuf(dev);
u_vector_finish(&dev->wrbufs);
u_vector_init(&dev->wrbufs, 8, sizeof(struct wrbuf));
device_free_buffers(dev);
}