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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user