aboutsummaryrefslogtreecommitdiffstats
path: root/amdgpu/amdgpu_cs.c
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>2019-01-28 22:20:20 +0100
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>2019-04-18 10:39:32 +0200
commit232dc3305d55d199f4765968d299bfc2a249d920 (patch)
tree7dc4b87c620f3d3a32c77a1ff2dcc1f46db68edb /amdgpu/amdgpu_cs.c
parent0b474eab3dd37c09f7f05e55176fcaea76fb4f92 (diff)
downloadexternal_libdrm-232dc3305d55d199f4765968d299bfc2a249d920.tar.gz
external_libdrm-232dc3305d55d199f4765968d299bfc2a249d920.tar.bz2
external_libdrm-232dc3305d55d199f4765968d299bfc2a249d920.zip
amdgpu: Add context priority override function.
This way we can override the priority of a single context using a master fd. Since we cannot usefully create an amdgpu device of a master fd without the fd deduplication kicking in this takes a plain fd. This can be used by e.g. radv to get high priority contexts using a master fd from the primary node or a lease. Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Andres Rodriguez <andresx7@gmail.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Diffstat (limited to 'amdgpu/amdgpu_cs.c')
-rw-r--r--amdgpu/amdgpu_cs.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/amdgpu/amdgpu_cs.c b/amdgpu/amdgpu_cs.c
index 5bedf748..7ee844fb 100644
--- a/amdgpu/amdgpu_cs.c
+++ b/amdgpu/amdgpu_cs.c
@@ -142,6 +142,31 @@ drm_public int amdgpu_cs_ctx_free(amdgpu_context_handle context)
return r;
}
+drm_public int amdgpu_cs_ctx_override_priority(amdgpu_device_handle dev,
+ amdgpu_context_handle context,
+ int master_fd,
+ unsigned priority)
+{
+ int r;
+
+ if (!dev || !context || master_fd < 0)
+ return -EINVAL;
+
+ union drm_amdgpu_sched args;
+ memset(&args, 0, sizeof(args));
+
+ args.in.op = AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE;
+ args.in.fd = dev->fd;
+ args.in.priority = priority;
+ args.in.ctx_id = context->id;
+
+ r = drmCommandWrite(master_fd, DRM_AMDGPU_SCHED, &args, sizeof(args));
+ if (r)
+ return r;
+
+ return 0;
+}
+
drm_public int amdgpu_cs_query_reset_state(amdgpu_context_handle context,
uint32_t *state, uint32_t *hangs)
{