freedreno/replay: Delete all buffers after each submission
We expect all buffers to be dumped before each submission, so tracking whether buffer is used is wrong. Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26101>
This commit is contained in:
committed by
Marge Bot
parent
985a5c8f1a
commit
56a6bc758d
@@ -245,14 +245,12 @@ device_mark_buffers(struct device *dev)
|
||||
}
|
||||
|
||||
static void
|
||||
device_free_unused_buffers(struct device *dev)
|
||||
device_free_buffers(struct device *dev)
|
||||
{
|
||||
rb_tree_foreach_safe (struct buffer, buf, &dev->buffers, node) {
|
||||
if (!buf->used) {
|
||||
buffer_mem_free(dev, buf);
|
||||
rb_tree_remove(&dev->buffers, &buf->node);
|
||||
free(buf);
|
||||
}
|
||||
buffer_mem_free(dev, buf);
|
||||
rb_tree_remove(&dev->buffers, &buf->node);
|
||||
free(buf);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -451,11 +449,10 @@ device_create()
|
||||
static void
|
||||
device_submit_cmdstreams(struct device *dev)
|
||||
{
|
||||
device_free_unused_buffers(dev);
|
||||
device_mark_buffers(dev);
|
||||
|
||||
if (!u_vector_length(&dev->cmdstreams))
|
||||
if (!u_vector_length(&dev->cmdstreams)) {
|
||||
device_free_buffers(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
struct drm_msm_gem_submit_cmd cmds[u_vector_length(&dev->cmdstreams)];
|
||||
|
||||
@@ -566,6 +563,8 @@ device_submit_cmdstreams(struct device *dev)
|
||||
device_print_cp_log(dev);
|
||||
|
||||
device_dump_wrbuf(dev);
|
||||
|
||||
device_free_buffers(dev);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -709,11 +708,10 @@ device_create()
|
||||
static void
|
||||
device_submit_cmdstreams(struct device *dev)
|
||||
{
|
||||
device_free_unused_buffers(dev);
|
||||
device_mark_buffers(dev);
|
||||
|
||||
if (!u_vector_length(&dev->cmdstreams))
|
||||
if (!u_vector_length(&dev->cmdstreams)) {
|
||||
device_free_buffers(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
struct kgsl_command_object cmds[u_vector_length(&dev->cmdstreams)];
|
||||
|
||||
@@ -761,6 +759,8 @@ device_submit_cmdstreams(struct device *dev)
|
||||
device_print_cp_log(dev);
|
||||
|
||||
device_dump_wrbuf(dev);
|
||||
|
||||
device_free_buffers(dev);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -988,10 +988,10 @@ handle_file(const char *filename, uint32_t first_submit, uint32_t last_submit,
|
||||
cs->iova = gpuaddr;
|
||||
cs->size = sizedwords * sizeof(uint32_t);
|
||||
}
|
||||
|
||||
need_submit = true;
|
||||
}
|
||||
|
||||
need_submit = true;
|
||||
|
||||
submit++;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user