mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 20:50:09 +01:00
winsys/amdgpu: use the no-op helper to detect if reset completion
On older kernel the completion of the reset isn't signalled to userspace, yet we need it to implement the EXT_robustness extension correctly. In this situation, try to create a new context and submit a no-op job. If the reset isn't done the kernel will reject the submission (-ECANCELED); otherwise the submission will go through and we'll know that the reset is done. Reviewed-by: André Almeida <andrealmeid@igalia.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22290>
This commit is contained in:
parent
45cd75cdad
commit
b4a2cb1e16
1 changed files with 7 additions and 0 deletions
|
|
@ -469,10 +469,17 @@ amdgpu_ctx_query_reset_status(struct radeon_winsys_ctx *rwctx, bool full_reset_o
|
|||
* completed. If a reset status is repeatedly returned, the context may
|
||||
* be in the process of resetting.
|
||||
*
|
||||
* Starting with drm_minor >= 54 amdgpu reports if the reset is complete,
|
||||
* so don't do anything special. On older kernels, submit a no-op cs. If it
|
||||
* succeeds then assume the reset is complete.
|
||||
*/
|
||||
if (!(flags & AMDGPU_CTX_QUERY2_FLAGS_RESET_IN_PROGRESS))
|
||||
*reset_completed = true;
|
||||
|
||||
if (ctx->ws->info.drm_minor < 54 && ctx->ws->info.has_graphics)
|
||||
*reset_completed = amdgpu_submit_gfx_nop(ctx->ws->dev) == 0;
|
||||
}
|
||||
|
||||
if (needs_reset)
|
||||
*needs_reset = flags & AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST;
|
||||
if (flags & AMDGPU_CTX_QUERY2_FLAGS_GUILTY)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue