Mesa (amdgpu): winsys/amdgpu: expose amdgpu_cs_query_reset_state to drivers
Marek Olšák
mareko at kemper.freedesktop.org
Thu May 14 13:05:26 UTC 2015
Module: Mesa
Branch: amdgpu
Commit: 2de9b8b5ca85d0ba2c986e250942d4674d248cc9
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2de9b8b5ca85d0ba2c986e250942d4674d248cc9
Author: Marek Olšák <marek.olsak at amd.com>
Date: Thu Apr 30 17:01:52 2015 +0200
winsys/amdgpu: expose amdgpu_cs_query_reset_state to drivers
Reviewed-by: Christian König <christian.koenig at amd.com>
---
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;
More information about the mesa-commit
mailing list