mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 20:10:17 +01:00
radv: add RADV_DEBUG=vm option
Useful for debugging page faults because this adds a gap between every VA allocation. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38907>
This commit is contained in:
parent
e53576a559
commit
0beb83b0eb
6 changed files with 16 additions and 5 deletions
|
|
@ -1504,6 +1504,8 @@ RADV driver environment variables
|
|||
Use bvh4 encoding on GPUs that support bvh8 encoding.
|
||||
``validatevas``
|
||||
Enable tracking of VA ranges for radv_build_is_valid_va.
|
||||
``vm``
|
||||
add a gap between all VA allocations to check for page faults
|
||||
|
||||
.. envvar:: RADV_FORCE_VRS
|
||||
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ enum {
|
|||
RADV_DEBUG_DUMP_BO_HISTORY = 1ull << 58,
|
||||
RADV_DEBUG_NO_BO_LIST = 1ull << 59,
|
||||
RADV_DEBUG_DUMP_IBS = 1ull << 60,
|
||||
RADV_DEBUG_VM = 1ull << 61,
|
||||
RADV_DEBUG_DUMP_SHADERS = RADV_DEBUG_DUMP_VS | RADV_DEBUG_DUMP_TCS | RADV_DEBUG_DUMP_TES | RADV_DEBUG_DUMP_GS |
|
||||
RADV_DEBUG_DUMP_PS | RADV_DEBUG_DUMP_TASK | RADV_DEBUG_DUMP_MESH | RADV_DEBUG_DUMP_CS |
|
||||
RADV_DEBUG_DUMP_NIR | RADV_DEBUG_DUMP_ASM | RADV_DEBUG_DUMP_BACKEND_IR,
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ static const struct debug_control radv_debug_options[] = {
|
|||
{"bo_history", RADV_DEBUG_DUMP_BO_HISTORY},
|
||||
{"nobolist", RADV_DEBUG_NO_BO_LIST},
|
||||
{"dumpibs", RADV_DEBUG_DUMP_IBS},
|
||||
{"vm", RADV_DEBUG_VM},
|
||||
{NULL, 0},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -508,8 +508,10 @@ radv_amdgpu_winsys_virtual_bo_create(struct radeon_winsys *_ws, uint64_t size, u
|
|||
|
||||
const uint64_t va_flags = AMDGPU_VA_RANGE_HIGH | (flags & RADEON_FLAG_32BIT ? AMDGPU_VA_RANGE_32_BIT : 0) |
|
||||
(flags & RADEON_FLAG_REPLAYABLE ? AMDGPU_VA_RANGE_REPLAYABLE : 0);
|
||||
r = ac_drm_va_range_alloc(ws->dev, amdgpu_gpu_va_range_general, size, virt_alignment, replay_address, &va,
|
||||
&va_handle, va_flags);
|
||||
const uint64_t va_gap_size = ws->debug_vm ? MAX2(4 * virt_alignment, 64 * 1024) : 0;
|
||||
|
||||
r = ac_drm_va_range_alloc(ws->dev, amdgpu_gpu_va_range_general, size + va_gap_size, virt_alignment, replay_address,
|
||||
&va, &va_handle, va_flags);
|
||||
if (r) {
|
||||
result = replay_address ? VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS : VK_ERROR_OUT_OF_DEVICE_MEMORY;
|
||||
goto error_va_alloc;
|
||||
|
|
@ -593,8 +595,10 @@ radv_amdgpu_winsys_bo_create(struct radeon_winsys *_ws, uint64_t size, unsigned
|
|||
|
||||
const uint64_t va_flags = AMDGPU_VA_RANGE_HIGH | (flags & RADEON_FLAG_32BIT ? AMDGPU_VA_RANGE_32_BIT : 0) |
|
||||
(flags & RADEON_FLAG_REPLAYABLE ? AMDGPU_VA_RANGE_REPLAYABLE : 0);
|
||||
r = ac_drm_va_range_alloc(ws->dev, amdgpu_gpu_va_range_general, size, virt_alignment, replay_address, &va,
|
||||
&va_handle, va_flags);
|
||||
uint64_t va_gap_size = ws->debug_vm ? MAX2(4 * virt_alignment, 64 * 1024) : 0;
|
||||
|
||||
r = ac_drm_va_range_alloc(ws->dev, amdgpu_gpu_va_range_general, size + va_gap_size, virt_alignment, replay_address,
|
||||
&va, &va_handle, va_flags);
|
||||
if (r) {
|
||||
result = replay_address ? VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS : VK_ERROR_OUT_OF_DEVICE_MEMORY;
|
||||
goto error_va_alloc;
|
||||
|
|
|
|||
|
|
@ -242,7 +242,8 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags,
|
|||
/* Check that options don't differ from the existing winsys. */
|
||||
if (((debug_flags & RADV_DEBUG_ALL_BOS) && !ws->debug_all_bos) ||
|
||||
((debug_flags & RADV_DEBUG_HANG) && !ws->debug_log_bos) ||
|
||||
((debug_flags & RADV_DEBUG_NO_IB_CHAINING) && ws->chain_ib) || (perftest_flags != ws->perftest)) {
|
||||
((debug_flags & RADV_DEBUG_NO_IB_CHAINING) && ws->chain_ib) ||
|
||||
((debug_flags & RADV_DEBUG_VM) && !ws->debug_vm) || (perftest_flags != ws->perftest)) {
|
||||
fprintf(stderr, "radv/amdgpu: Found options that differ from the existing winsys.\n");
|
||||
return VK_ERROR_INITIALIZATION_FAILED;
|
||||
}
|
||||
|
|
@ -328,6 +329,7 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags,
|
|||
|
||||
ws->perftest = perftest_flags;
|
||||
ws->zero_all_vram_allocs = debug_flags & RADV_DEBUG_ZERO_VRAM;
|
||||
ws->debug_vm = debug_flags & RADV_DEBUG_VM;
|
||||
u_rwlock_init(&ws->global_bo_list.lock);
|
||||
list_inithead(&ws->log_bo_list);
|
||||
u_rwlock_init(&ws->log_bo_list_lock);
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ struct radv_amdgpu_winsys {
|
|||
FILE *bo_history_logfile;
|
||||
bool chain_ib;
|
||||
bool zero_all_vram_allocs;
|
||||
bool debug_vm;
|
||||
uint64_t perftest;
|
||||
|
||||
alignas(8) uint64_t allocated_vram;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue