diff options
author | Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com> | 2021-05-31 19:11:38 +0530 |
---|---|---|
committer | Petri Latvala <petri.latvala@intel.com> | 2021-06-01 13:39:42 +0300 |
commit | 5b6c56720993ca593a414cef91a0182bf939e14c (patch) | |
tree | d19731edd013f9cb26ea770eebde48136ed2a03c /lib | |
parent | f823d8ec14b34a6dd2c0804c684b07b0a50f7bb7 (diff) |
lib/i915: find scheduler caps for timeslicing
Check scheduler capability for timeslicing in appropriate
way, which requires wrappers to be created for IGT.
V3:
removed conditional error - petri
V2: has_timeslice = has_semaphore && has_preemption ||
has_guc_submission - Tvrtko
Signed-off-by: Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/i915/gem_scheduler.c | 21 | ||||
-rw-r--r-- | lib/i915/gem_scheduler.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/i915/gem_scheduler.c b/lib/i915/gem_scheduler.c index 184da843..6dfa3676 100644 --- a/lib/i915/gem_scheduler.c +++ b/lib/i915/gem_scheduler.c @@ -29,6 +29,7 @@ #include "ioctl_wrappers.h" #include "i915/gem_scheduler.h" +#include "i915/gem_submission.h" /** * SECTION:gem_scheduler @@ -130,6 +131,22 @@ bool gem_scheduler_has_engine_busy_stats(int fd) } /** + * gem_scheduler_has_timeslicing: + * @fd: open i915 drm file descriptor + * + * Feature test macro to query whether the driver supports using HW preemption + * to implement timeslicing of userspace batches. This allows userspace to + * implement micro-level scheduling within their own batches. + */ +bool gem_scheduler_has_timeslicing(int fd) +{ + return ((gem_scheduler_capability(fd) & + (I915_SCHEDULER_CAP_PREEMPTION | + I915_SCHEDULER_CAP_SEMAPHORES)) + || gem_has_guc_submission(fd)); +} + +/** * gem_scheduler_print_capability: * @fd: open i915 drm file descriptor * @@ -151,4 +168,8 @@ void gem_scheduler_print_capability(int fd) igt_info(" - With HW semaphores enabled\n"); if (caps & I915_SCHEDULER_CAP_ENGINE_BUSY_STATS) igt_info(" - With engine busy statistics\n"); + if ((caps & (I915_SCHEDULER_CAP_PREEMPTION + | I915_SCHEDULER_CAP_SEMAPHORES)) + || gem_has_guc_submission(fd)) + igt_info(" - With timeslicing enabled\n"); } diff --git a/lib/i915/gem_scheduler.h b/lib/i915/gem_scheduler.h index 14bd4cac..d43e84bd 100644 --- a/lib/i915/gem_scheduler.h +++ b/lib/i915/gem_scheduler.h @@ -32,6 +32,7 @@ bool gem_scheduler_has_ctx_priority(int fd); bool gem_scheduler_has_preemption(int fd); bool gem_scheduler_has_semaphores(int fd); bool gem_scheduler_has_engine_busy_stats(int fd); +bool gem_scheduler_has_timeslicing(int fd); void gem_scheduler_print_capability(int fd); #endif /* GEM_SCHEDULER_H */ |