mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 11:20:11 +01: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
7 changed files with 16 additions and 1 deletions
|
|
@ -74,7 +74,7 @@ AC_SUBST([OPENCL_VERSION])
|
||||||
# in the first entry.
|
# in the first entry.
|
||||||
LIBDRM_REQUIRED=2.4.75
|
LIBDRM_REQUIRED=2.4.75
|
||||||
LIBDRM_RADEON_REQUIRED=2.4.71
|
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_INTEL_REQUIRED=2.4.75
|
||||||
LIBDRM_NVVIEUX_REQUIRED=2.4.66
|
LIBDRM_NVVIEUX_REQUIRED=2.4.66
|
||||||
LIBDRM_NOUVEAU_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." },
|
{ "dpbb", DBG(DPBB), "Enable DPBB." },
|
||||||
{ "dfsm", DBG(DFSM), "Enable DFSM." },
|
{ "dfsm", DBG(DFSM), "Enable DFSM." },
|
||||||
{ "nooutoforder", DBG(NO_OUT_OF_ORDER), "Disable out-of-order rasterization" },
|
{ "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 */
|
DEBUG_NAMED_VALUE_END /* must be last */
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ enum {
|
||||||
DBG_NO_DISCARD_RANGE,
|
DBG_NO_DISCARD_RANGE,
|
||||||
DBG_NO_WC,
|
DBG_NO_WC,
|
||||||
DBG_CHECK_VM,
|
DBG_CHECK_VM,
|
||||||
|
DBG_RESERVE_VMID,
|
||||||
|
|
||||||
/* 3D engine options: */
|
/* 3D engine options: */
|
||||||
DBG_SWITCH_ON_EOP,
|
DBG_SWITCH_ON_EOP,
|
||||||
|
|
|
||||||
|
|
@ -256,6 +256,14 @@ static struct radeon_winsys_ctx *amdgpu_ctx_create(struct radeon_winsys *ws)
|
||||||
goto error_create;
|
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.alloc_size = ctx->ws->info.gart_page_size;
|
||||||
alloc_buffer.phys_alignment = ctx->ws->info.gart_page_size;
|
alloc_buffer.phys_alignment = ctx->ws->info.gart_page_size;
|
||||||
alloc_buffer.preferred_heap = AMDGPU_GEM_DOMAIN_GTT;
|
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)
|
static inline void amdgpu_ctx_unref(struct amdgpu_ctx *ctx)
|
||||||
{
|
{
|
||||||
if (p_atomic_dec_zero(&ctx->refcount)) {
|
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_cs_ctx_free(ctx->ctx);
|
||||||
amdgpu_bo_free(ctx->user_fence_bo);
|
amdgpu_bo_free(ctx->user_fence_bo);
|
||||||
FREE(ctx);
|
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->check_vm = strstr(debug_get_option("R600_DEBUG", ""), "check_vm") != NULL;
|
||||||
ws->debug_all_bos = debug_get_option_all_bos();
|
ws->debug_all_bos = debug_get_option_all_bos();
|
||||||
|
ws->reserve_vmid = strstr(debug_get_option("R600_DEBUG", ""), "reserve_vmid") != NULL;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ struct amdgpu_winsys {
|
||||||
|
|
||||||
bool check_vm;
|
bool check_vm;
|
||||||
bool debug_all_bos;
|
bool debug_all_bos;
|
||||||
|
bool reserve_vmid;
|
||||||
|
|
||||||
/* List of all allocated buffers */
|
/* List of all allocated buffers */
|
||||||
mtx_t global_bo_list_lock;
|
mtx_t global_bo_list_lock;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue