mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-15 05:04:10 +08:00
winsys/amdgpu: Add R600_DEBUG flag to reserve VMID per ctx.
Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> Signed-off-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
5c2ff5773a
commit
f03b7c9ad9
@ -74,7 +74,7 @@ AC_SUBST([OPENCL_VERSION])
|
||||
# in the first entry.
|
||||
LIBDRM_REQUIRED=2.4.75
|
||||
LIBDRM_RADEON_REQUIRED=2.4.71
|
||||
LIBDRM_AMDGPU_REQUIRED=2.4.85
|
||||
LIBDRM_AMDGPU_REQUIRED=2.4.86
|
||||
LIBDRM_INTEL_REQUIRED=2.4.75
|
||||
LIBDRM_NVVIEUX_REQUIRED=2.4.66
|
||||
LIBDRM_NOUVEAU_REQUIRED=2.4.66
|
||||
|
@ -851,6 +851,7 @@ static const struct debug_named_value common_debug_options[] = {
|
||||
{ "dpbb", DBG(DPBB), "Enable DPBB." },
|
||||
{ "dfsm", DBG(DFSM), "Enable DFSM." },
|
||||
{ "nooutoforder", DBG(NO_OUT_OF_ORDER), "Disable out-of-order rasterization" },
|
||||
{ "reserve_vmid", DBG(RESERVE_VMID), "Force VMID reservation per context." },
|
||||
|
||||
DEBUG_NAMED_VALUE_END /* must be last */
|
||||
};
|
||||
|
@ -107,6 +107,7 @@ enum {
|
||||
DBG_NO_DISCARD_RANGE,
|
||||
DBG_NO_WC,
|
||||
DBG_CHECK_VM,
|
||||
DBG_RESERVE_VMID,
|
||||
|
||||
/* 3D engine options: */
|
||||
DBG_SWITCH_ON_EOP,
|
||||
|
@ -256,6 +256,14 @@ static struct radeon_winsys_ctx *amdgpu_ctx_create(struct radeon_winsys *ws)
|
||||
goto error_create;
|
||||
}
|
||||
|
||||
if (ctx->ws->reserve_vmid) {
|
||||
r = amdgpu_vm_reserve_vmid(ctx->ctx, 0);
|
||||
if (r) {
|
||||
fprintf(stderr, "amdgpu: amdgpu_vm_reserve_vmid failed. (%i)\n", r);
|
||||
goto error_create;
|
||||
}
|
||||
}
|
||||
|
||||
alloc_buffer.alloc_size = ctx->ws->info.gart_page_size;
|
||||
alloc_buffer.phys_alignment = ctx->ws->info.gart_page_size;
|
||||
alloc_buffer.preferred_heap = AMDGPU_GEM_DOMAIN_GTT;
|
||||
|
@ -162,6 +162,9 @@ static inline bool amdgpu_fence_is_syncobj(struct amdgpu_fence *fence)
|
||||
static inline void amdgpu_ctx_unref(struct amdgpu_ctx *ctx)
|
||||
{
|
||||
if (p_atomic_dec_zero(&ctx->refcount)) {
|
||||
if (ctx->ws->reserve_vmid)
|
||||
amdgpu_vm_unreserve_vmid(ctx->ctx, 0);
|
||||
|
||||
amdgpu_cs_ctx_free(ctx->ctx);
|
||||
amdgpu_bo_free(ctx->user_fence_bo);
|
||||
FREE(ctx);
|
||||
|
@ -73,6 +73,7 @@ static bool do_winsys_init(struct amdgpu_winsys *ws, int fd)
|
||||
|
||||
ws->check_vm = strstr(debug_get_option("R600_DEBUG", ""), "check_vm") != NULL;
|
||||
ws->debug_all_bos = debug_get_option_all_bos();
|
||||
ws->reserve_vmid = strstr(debug_get_option("R600_DEBUG", ""), "reserve_vmid") != NULL;
|
||||
|
||||
return true;
|
||||
|
||||
|
@ -81,6 +81,7 @@ struct amdgpu_winsys {
|
||||
|
||||
bool check_vm;
|
||||
bool debug_all_bos;
|
||||
bool reserve_vmid;
|
||||
|
||||
/* List of all allocated buffers */
|
||||
mtx_t global_bo_list_lock;
|
||||
|
Loading…
Reference in New Issue
Block a user