radv: Use radv_buffer_map for parsing IBs

We need matching pointers pointers for annotations to work.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27549>
This commit is contained in:
Konstantin Seurer 2024-03-02 11:33:52 +01:00 committed by Marge Bot
parent a78cbc98cc
commit 00dec03438

View file

@ -1356,7 +1356,6 @@ static void
radv_amdgpu_winsys_get_cpu_addr(void *_cs, uint64_t addr, struct ac_addr_info *info) radv_amdgpu_winsys_get_cpu_addr(void *_cs, uint64_t addr, struct ac_addr_info *info)
{ {
struct radv_amdgpu_cs *cs = (struct radv_amdgpu_cs *)_cs; struct radv_amdgpu_cs *cs = (struct radv_amdgpu_cs *)_cs;
void *ret = NULL;
memset(info, 0, sizeof(struct ac_addr_info)); memset(info, 0, sizeof(struct ac_addr_info));
@ -1381,8 +1380,9 @@ radv_amdgpu_winsys_get_cpu_addr(void *_cs, uint64_t addr, struct ac_addr_info *i
struct radv_amdgpu_winsys_bo *bo = (struct radv_amdgpu_winsys_bo *)ib->bo; struct radv_amdgpu_winsys_bo *bo = (struct radv_amdgpu_winsys_bo *)ib->bo;
if (addr >= bo->base.va && addr - bo->base.va < bo->size) { if (addr >= bo->base.va && addr - bo->base.va < bo->size) {
if (amdgpu_bo_cpu_map(bo->bo, &ret) == 0) { void *map = radv_buffer_map(&cs->ws->base, &bo->base);
info->cpu_addr = (char *)ret + (addr - bo->base.va); if (map) {
info->cpu_addr = (char *)map + (addr - bo->base.va);
info->valid = true; info->valid = true;
return; return;
} }
@ -1392,10 +1392,11 @@ radv_amdgpu_winsys_get_cpu_addr(void *_cs, uint64_t addr, struct ac_addr_info *i
for (uint32_t i = 0; i < cs->ws->global_bo_list.count; i++) { for (uint32_t i = 0; i < cs->ws->global_bo_list.count; i++) {
struct radv_amdgpu_winsys_bo *bo = cs->ws->global_bo_list.bos[i]; struct radv_amdgpu_winsys_bo *bo = cs->ws->global_bo_list.bos[i];
if (addr >= bo->base.va && addr - bo->base.va < bo->size) { if (addr >= bo->base.va && addr - bo->base.va < bo->size) {
if (amdgpu_bo_cpu_map(bo->bo, &ret) == 0) { void *map = radv_buffer_map(&cs->ws->base, &bo->base);
if (map) {
u_rwlock_rdunlock(&cs->ws->global_bo_list.lock); u_rwlock_rdunlock(&cs->ws->global_bo_list.lock);
info->valid = true; info->valid = true;
info->cpu_addr = (char *)ret + (addr - bo->base.va); info->cpu_addr = (char *)map + (addr - bo->base.va);
return; return;
} }
} }