radv: Copy BO list to ACE internal CS.

This is necessary to make sure the ACE internal cmdbuf
can access the same memory as the GFX cmdbuf.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16531>
This commit is contained in:
Timur Kristóf
2022-06-24 23:43:05 +02:00
committed by Marge Bot
parent 5a1cbafd9d
commit 28db493cdc
3 changed files with 20 additions and 0 deletions
+1
View File
@@ -840,6 +840,7 @@ radv_ace_internal_finalize(struct radv_cmd_buffer *cmd_buffer)
radv_emit_clear_data(cmd_buffer, V_370_ME, gfx2ace_va, 8);
}
device->ws->cs_add_buffers(ace_cs, cmd_buffer->cs);
return device->ws->cs_finalize(ace_cs);
}
+2
View File
@@ -288,6 +288,8 @@ struct radeon_winsys {
void (*cs_add_buffer)(struct radeon_cmdbuf *cs, struct radeon_winsys_bo *bo);
void (*cs_add_buffers)(struct radeon_cmdbuf *to, struct radeon_cmdbuf *from);
void (*cs_execute_secondary)(struct radeon_cmdbuf *parent, struct radeon_cmdbuf *child,
bool allow_ib2);
@@ -618,6 +618,22 @@ radv_amdgpu_cs_add_buffer(struct radeon_cmdbuf *_cs, struct radeon_winsys_bo *_b
radv_amdgpu_cs_add_buffer_internal(cs, bo->bo_handle, bo->priority);
}
static void
radv_amdgpu_cs_add_buffers(struct radeon_cmdbuf *_to, struct radeon_cmdbuf *_from)
{
struct radv_amdgpu_cs *from = radv_amdgpu_cs(_from);
struct radv_amdgpu_cs *to = radv_amdgpu_cs(_to);
for (unsigned i = 0; i < from->num_buffers; ++i) {
radv_amdgpu_cs_add_buffer_internal(to, from->handles[i].bo_handle,
from->handles[i].bo_priority);
}
for (unsigned i = 0; i < from->num_virtual_buffers; ++i) {
radv_amdgpu_cs_add_buffer(&to->base, from->virtual_buffers[i]);
}
}
static void
radv_amdgpu_cs_execute_secondary(struct radeon_cmdbuf *_parent, struct radeon_cmdbuf *_child,
bool allow_ib2)
@@ -1885,6 +1901,7 @@ radv_amdgpu_cs_init_functions(struct radv_amdgpu_winsys *ws)
ws->base.cs_finalize = radv_amdgpu_cs_finalize;
ws->base.cs_reset = radv_amdgpu_cs_reset;
ws->base.cs_add_buffer = radv_amdgpu_cs_add_buffer;
ws->base.cs_add_buffers = radv_amdgpu_cs_add_buffers;
ws->base.cs_execute_secondary = radv_amdgpu_cs_execute_secondary;
ws->base.cs_submit = radv_amdgpu_winsys_cs_submit;
ws->base.cs_dump = radv_amdgpu_winsys_cs_dump;