summaryrefslogtreecommitdiff
path: root/lib/igt_gt.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/igt_gt.c')
-rw-r--r--lib/igt_gt.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/igt_gt.c b/lib/igt_gt.c
index f70fcb92..e630550b 100644
--- a/lib/igt_gt.c
+++ b/lib/igt_gt.c
@@ -660,3 +660,26 @@ bool gem_has_engine(int gem_fd,
gem_class_instance_to_eb_flags(gem_fd, class,
instance));
}
+
+bool gem_ring_is_physical_engine(int fd, unsigned ring)
+{
+ if (ring == I915_EXEC_DEFAULT)
+ return false;
+
+ /* BSD uses an extra flag to chose between aliasing modes */
+ if ((ring & 63) == I915_EXEC_BSD) {
+ bool explicit_bsd = ring & (3 << 13);
+ bool has_bsd2 = gem_has_bsd2(fd);
+ return explicit_bsd ? has_bsd2 : !has_bsd2;
+ }
+
+ return true;
+}
+
+bool gem_ring_has_physical_engine(int fd, unsigned ring)
+{
+ if (!gem_ring_is_physical_engine(fd, ring))
+ return false;
+
+ return gem_has_ring(fd, ring);
+}