radeon_winsys: add a ctx_set_sw_reset_status callback

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24732>
This commit is contained in:
Marek Olšák
2023-08-06 22:04:06 -04:00
committed by Marge Bot
parent d7b7332a16
commit 784492a363
3 changed files with 21 additions and 0 deletions
@@ -507,6 +507,13 @@ struct radeon_winsys {
*/
void (*ctx_destroy)(struct radeon_winsys_ctx *ctx);
/**
* Set a reset status for the context due to a software failure, such as an allocation failure
* or a skipped draw.
*/
void (*ctx_set_sw_reset_status)(struct radeon_winsys_ctx *ctx, enum pipe_reset_status status,
const char *format, ...);
/**
* Query a GPU reset status.
*/
@@ -1969,6 +1969,7 @@ void amdgpu_cs_init_functions(struct amdgpu_screen_winsys *ws)
{
ws->base.ctx_create = amdgpu_ctx_create;
ws->base.ctx_destroy = amdgpu_ctx_destroy;
ws->base.ctx_set_sw_reset_status = amdgpu_ctx_set_sw_reset_status;
ws->base.ctx_query_reset_status = amdgpu_ctx_query_reset_status;
ws->base.cs_create = amdgpu_cs_create;
ws->base.cs_setup_preemption = amdgpu_cs_setup_preemption;
@@ -68,6 +68,18 @@ static void radeon_drm_ctx_destroy(struct radeon_winsys_ctx *ctx)
FREE(ctx);
}
static void
radeon_drm_ctx_set_sw_reset_status(struct radeon_winsys_ctx *rwctx, enum pipe_reset_status status,
const char *format, ...)
{
/* TODO: we should do something better here */
va_list args;
va_start(args, format);
vfprintf(stderr, format, args);
va_end(args);
}
static enum pipe_reset_status
radeon_drm_ctx_query_reset_status(struct radeon_winsys_ctx *rctx, bool full_reset_only,
bool *needs_reset, bool *reset_completed)
@@ -843,6 +855,7 @@ void radeon_drm_cs_init_functions(struct radeon_drm_winsys *ws)
{
ws->base.ctx_create = radeon_drm_ctx_create;
ws->base.ctx_destroy = radeon_drm_ctx_destroy;
ws->base.ctx_set_sw_reset_status = radeon_drm_ctx_set_sw_reset_status;
ws->base.ctx_query_reset_status = radeon_drm_ctx_query_reset_status;
ws->base.cs_create = radeon_drm_cs_create;
ws->base.cs_destroy = radeon_drm_cs_destroy;