summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ioctl_wrappers.c45
-rw-r--r--lib/ioctl_wrappers.h4
2 files changed, 40 insertions, 9 deletions
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index 0024898f..b534b037 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -924,18 +924,18 @@ bool gem_bo_busy(int fd, uint32_t handle)
/* feature test helpers */
/**
- * gem_uses_aliasing_ppgtt:
+ * gem_gtt_type:
* @fd: open i915 drm file descriptor
*
- * Feature test macro to check whether the kernel internally uses ppgtt to
- * execute batches. The /aliasing/ in the function name is a bit a misnomer,
- * this driver parameter is also true when full ppgtt address spaces are
- * available since for batchbuffer construction only ppgtt or global gtt is
- * relevant.
+ * Feature test macro to check what type of gtt is being used by the kernel:
+ * 0 - global gtt
+ * 1 - aliasing ppgtt
+ * 2 - full ppgtt, limited to 32bit address space
+ * 3 - full ppgtt, 64bit address space
*
- * Returns: Whether batches are run through ppgtt.
+ * Returns: Type of gtt being used.
*/
-bool gem_uses_aliasing_ppgtt(int fd)
+int gem_gtt_type(int fd)
{
struct drm_i915_getparam gp;
int val = 0;
@@ -952,6 +952,35 @@ bool gem_uses_aliasing_ppgtt(int fd)
}
/**
+ * gem_uses_ppgtt:
+ * @fd: open i915 drm file descriptor
+ *
+ * Feature test macro to check whether the kernel internally uses ppgtt to
+ * execute batches. Note that this is also true when we're using full ppgtt.
+ *
+ * Returns: Whether batches are run through ppgtt.
+ */
+bool gem_uses_ppgtt(int fd)
+{
+ return gem_gtt_type(fd) > 0;
+}
+
+/**
+ * gem_uses_full_ppgtt:
+ * @fd: open i915 drm file descriptor
+ *
+ * Feature test macro to check whether the kernel internally uses full
+ * per-process gtt to execute batches. Note that this is also true when we're
+ * using full 64b ppgtt.
+ *
+ * Returns: Whether batches are run through full ppgtt.
+ */
+bool gem_uses_full_ppgtt(int fd)
+{
+ return gem_gtt_type(fd) > 1;
+}
+
+/**
* gem_available_fences:
* @fd: open i915 drm file descriptor
*
diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
index 214ec788..a6bf7004 100644
--- a/lib/ioctl_wrappers.h
+++ b/lib/ioctl_wrappers.h
@@ -125,7 +125,9 @@ bool gem_has_bsd(int fd);
bool gem_has_blt(int fd);
bool gem_has_vebox(int fd);
bool gem_has_bsd2(int fd);
-bool gem_uses_aliasing_ppgtt(int fd);
+int gem_gtt_type(int fd);
+bool gem_uses_ppgtt(int fd);
+bool gem_uses_full_ppgtt(int fd);
int gem_available_fences(int fd);
uint64_t gem_available_aperture_size(int fd);
uint64_t gem_aperture_size(int fd);