From a6dcd62f448ad99b29488e3e7d3a72f3505c612a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Mon, 24 Oct 2022 14:08:55 -0700 Subject: [PATCH] iris: Move iris_bo_wait_gem() to i915/iris_bufmgr.c MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: José Roberto de Souza Reviewed-by: Lionel Landwerlin Part-of: --- src/gallium/drivers/iris/i915/iris_bufmgr.c | 16 ++++++++++++++ src/gallium/drivers/iris/i915/iris_bufmgr.h | 2 ++ src/gallium/drivers/iris/iris_bufmgr.c | 33 ++++++++++------------------- 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/gallium/drivers/iris/i915/iris_bufmgr.c b/src/gallium/drivers/iris/i915/iris_bufmgr.c index de50396..3eb3bd9 100644 --- a/src/gallium/drivers/iris/i915/iris_bufmgr.c +++ b/src/gallium/drivers/iris/i915/iris_bufmgr.c @@ -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; +} diff --git a/src/gallium/drivers/iris/i915/iris_bufmgr.h b/src/gallium/drivers/iris/i915/iris_bufmgr.h index cf9d539..1702b03 100644 --- a/src/gallium/drivers/iris/i915/iris_bufmgr.h +++ b/src/gallium/drivers/iris/i915/iris_bufmgr.h @@ -23,7 +23,9 @@ #pragma once #include +#include 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); diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c index 77687e0..17dc704 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.c +++ b/src/gallium/drivers/iris/iris_bufmgr.c @@ -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; -- 2.7.4