iris: Move iris_bo_wait_gem() to i915/iris_bufmgr.c
authorJosé Roberto de Souza <jose.souza@intel.com>
Mon, 24 Oct 2022 21:08:55 +0000 (14:08 -0700)
committerMarge Bot <emma+marge@anholt.net>
Tue, 7 Mar 2023 16:16:10 +0000 (16:16 +0000)
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21494>

src/gallium/drivers/iris/i915/iris_bufmgr.c
src/gallium/drivers/iris/i915/iris_bufmgr.h
src/gallium/drivers/iris/iris_bufmgr.c

index de50396..3eb3bd9 100644 (file)
@@ -39,3 +39,19 @@ bool iris_i915_bo_busy_gem(struct iris_bo *bo)
 
    return busy.busy;
 }
+
+int iris_i915_bo_wait_gem(struct iris_bo *bo, int64_t timeout_ns)
+{
+   assert(iris_bo_is_real(bo));
+
+   struct iris_bufmgr *bufmgr = bo->bufmgr;
+   struct drm_i915_gem_wait wait = {
+      .bo_handle = bo->gem_handle,
+      .timeout_ns = timeout_ns,
+   };
+
+   if (intel_ioctl(iris_bufmgr_get_fd(bufmgr), DRM_IOCTL_I915_GEM_WAIT, &wait))
+      return -errno;
+
+   return 0;
+}
index cf9d539..1702b03 100644 (file)
@@ -23,7 +23,9 @@
 #pragma once
 
 #include <stdbool.h>
+#include <stdint.h>
 
 struct iris_bo;
 
 bool iris_i915_bo_busy_gem(struct iris_bo *bo);
+int iris_i915_bo_wait_gem(struct iris_bo *bo, int64_t timeout_ns);
index 77687e0..17dc704 100644 (file)
@@ -1643,24 +1643,6 @@ iris_bo_map(struct util_debug_callback *dbg,
    return map;
 }
 
-static int
-iris_bo_wait_gem(struct iris_bo *bo, int64_t timeout_ns)
-{
-   assert(iris_bo_is_real(bo));
-
-   struct iris_bufmgr *bufmgr = bo->bufmgr;
-   struct drm_i915_gem_wait wait = {
-      .bo_handle = bo->gem_handle,
-      .timeout_ns = timeout_ns,
-   };
-
-   int ret = intel_ioctl(bufmgr->fd, DRM_IOCTL_I915_GEM_WAIT, &wait);
-   if (ret != 0)
-      return -errno;
-
-   return 0;
-}
-
 /**
  * Waits on a BO for the given amount of time.
  *
@@ -1693,10 +1675,17 @@ iris_bo_wait(struct iris_bo *bo, int64_t timeout_ns)
 {
    int ret;
 
-   if (iris_bo_is_external(bo))
-      ret = iris_bo_wait_gem(bo, timeout_ns);
-   else
-      ret = iris_bo_wait_syncobj(bo, timeout_ns);
+   switch (iris_bufmgr_get_device_info(bo->bufmgr)->kmd_type) {
+   case INTEL_KMD_TYPE_I915:
+      if (iris_bo_is_external(bo))
+         ret = iris_i915_bo_wait_gem(bo, timeout_ns);
+      else
+         ret = iris_bo_wait_syncobj(bo, timeout_ns);
+      break;
+   default:
+      unreachable("missing");
+      ret = -1;
+   }
 
    bo->idle = ret == 0;