diff options
author | Grazvydas Ignotas <[email protected]> | 2017-06-11 16:46:17 +0300 |
---|---|---|
committer | Grazvydas Ignotas <[email protected]> | 2017-06-11 23:07:09 +0300 |
commit | fae3b139055f32c4d076c170726393995be96d1b (patch) | |
tree | ac3f23892758170ab75a2660053b5194dbb0d514 /src/amd/vulkan | |
parent | f56aa25ac5d2509392177bfa503aa52a565b9a85 (diff) |
radv: fix trace dumping for !use_ib_bos
Fixes trace dumping crash for SI or when RADV_DEBUG=noibs is set.
Fixes: 97dfff5410 "radv: Dump command buffer on hang."
Signed-off-by: Grazvydas Ignotas <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd/vulkan')
-rw-r--r-- | src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c index 7b749700d1c..ffc756617c0 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c @@ -952,6 +952,9 @@ static void *radv_amdgpu_winsys_get_cpu_addr(void *_cs, uint64_t addr) { struct radv_amdgpu_cs *cs = (struct radv_amdgpu_cs *)_cs; void *ret = NULL; + + if (!cs->ib_buffer) + return NULL; for (unsigned i = 0; i <= cs->num_old_ib_buffers; ++i) { struct radv_amdgpu_winsys_bo *bo; @@ -970,10 +973,15 @@ static void radv_amdgpu_winsys_cs_dump(struct radeon_winsys_cs *_cs, uint32_t trace_id) { struct radv_amdgpu_cs *cs = (struct radv_amdgpu_cs *)_cs; + void *ib = cs->base.buf; + int num_dw = cs->base.cdw; - ac_parse_ib(file, - radv_amdgpu_winsys_get_cpu_addr(cs, cs->ib.ib_mc_address), - cs->ib.size, trace_id, "main IB", cs->ws->info.chip_class, + if (cs->ws->use_ib_bos) { + ib = radv_amdgpu_winsys_get_cpu_addr(cs, cs->ib.ib_mc_address); + num_dw = cs->ib.size; + } + assert(ib); + ac_parse_ib(file, ib, num_dw, trace_id, "main IB", cs->ws->info.chip_class, radv_amdgpu_winsys_get_cpu_addr, cs); } |