Module: Mesa Branch: amdgpu Commit: 2de9b8b5ca85d0ba2c986e250942d4674d248cc9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2de9b8b5ca85d0ba2c986e250942d4674d248cc9
Author: Marek Olšák <[email protected]> Date: Thu Apr 30 17:01:52 2015 +0200 winsys/amdgpu: expose amdgpu_cs_query_reset_state to drivers Reviewed-by: Christian König <[email protected]> --- src/gallium/drivers/radeon/radeon_winsys.h | 5 +++++ src/gallium/winsys/amdgpu/drm/amdgpu_cs.c | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/gallium/drivers/radeon/radeon_winsys.h b/src/gallium/drivers/radeon/radeon_winsys.h index 863c332..a0645ef 100644 --- a/src/gallium/drivers/radeon/radeon_winsys.h +++ b/src/gallium/drivers/radeon/radeon_winsys.h @@ -532,6 +532,11 @@ struct radeon_winsys { void (*ctx_destroy)(struct radeon_winsys_ctx *ctx); /** + * Query a GPU reset status. + */ + enum pipe_reset_status (*ctx_query_reset_status)(struct radeon_winsys_ctx *ctx); + + /** * Create a command stream. * * \param ctx The submission context diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c index d1ccb27..da8085c 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c @@ -149,6 +149,32 @@ static void amdgpu_ctx_destroy(struct radeon_winsys_ctx *rwctx) FREE(ctx); } +static enum pipe_reset_status +amdgpu_ctx_query_reset_status(struct radeon_winsys_ctx *rwctx) +{ + struct amdgpu_ctx *ctx = (struct amdgpu_ctx*)rwctx; + uint32_t result, hangs; + int r; + + r = amdgpu_cs_query_reset_state(ctx->ctx, &result, &hangs); + if (r) { + fprintf(stderr, "amdgpu: amdgpu_cs_query_reset_state failed. (%i)\n", r); + return PIPE_NO_RESET; + } + + switch (result) { + case AMDGPU_CTX_GUILTY_RESET: + return PIPE_GUILTY_CONTEXT_RESET; + case AMDGPU_CTX_INNOCENT_RESET: + return PIPE_INNOCENT_CONTEXT_RESET; + case AMDGPU_CTX_UNKNOWN_RESET: + return PIPE_UNKNOWN_CONTEXT_RESET; + case AMDGPU_CTX_NO_RESET: + default: + return PIPE_NO_RESET; + } +} + /* COMMAND SUBMISSION */ static bool amdgpu_get_new_ib(struct amdgpu_cs *cs) @@ -603,6 +629,7 @@ void amdgpu_cs_init_functions(struct amdgpu_winsys *ws) { ws->base.ctx_create = amdgpu_ctx_create; ws->base.ctx_destroy = amdgpu_ctx_destroy; + ws->base.ctx_query_reset_status = amdgpu_ctx_query_reset_status; ws->base.cs_create = amdgpu_cs_create; ws->base.cs_destroy = amdgpu_cs_destroy; ws->base.cs_add_reloc = amdgpu_cs_add_reloc; _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
