From 97becc1b6f05b46ce404ef0458568ab24660dbcb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Date: Mon, 24 Oct 2022 13:53:34 -0700 Subject: [PATCH] iris: Move iris_bo_busy_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 | 12 +++++++++++ src/gallium/drivers/iris/i915/iris_bufmgr.h | 1 + src/gallium/drivers/iris/iris_bufmgr.c | 31 +++++++++++------------------ 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/gallium/drivers/iris/i915/iris_bufmgr.c b/src/gallium/drivers/iris/i915/iris_bufmgr.c index ba9e948..de50396 100644 --- a/src/gallium/drivers/iris/i915/iris_bufmgr.c +++ b/src/gallium/drivers/iris/i915/iris_bufmgr.c @@ -27,3 +27,15 @@ #include "drm-uapi/i915_drm.h" +bool iris_i915_bo_busy_gem(struct iris_bo *bo) +{ + assert(iris_bo_is_real(bo)); + + struct iris_bufmgr *bufmgr = bo->bufmgr; + struct drm_i915_gem_busy busy = { .handle = bo->gem_handle }; + + if (intel_ioctl(iris_bufmgr_get_fd(bufmgr), DRM_IOCTL_I915_GEM_BUSY, &busy)) + return false; + + return busy.busy; +} diff --git a/src/gallium/drivers/iris/i915/iris_bufmgr.h b/src/gallium/drivers/iris/i915/iris_bufmgr.h index 1dcb270..cf9d539 100644 --- a/src/gallium/drivers/iris/i915/iris_bufmgr.h +++ b/src/gallium/drivers/iris/i915/iris_bufmgr.h @@ -26,3 +26,4 @@ struct iris_bo; +bool iris_i915_bo_busy_gem(struct iris_bo *bo); diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c index aa17bf6..77687e0 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.c +++ b/src/gallium/drivers/iris/iris_bufmgr.c @@ -432,21 +432,6 @@ vma_free(struct iris_bufmgr *bufmgr, util_vma_heap_free(&bufmgr->vma_allocator[memzone], address, size); } -static bool -iris_bo_busy_gem(struct iris_bo *bo) -{ - assert(iris_bo_is_real(bo)); - - struct iris_bufmgr *bufmgr = bo->bufmgr; - struct drm_i915_gem_busy busy = { .handle = bo->gem_handle }; - - int ret = intel_ioctl(bufmgr->fd, DRM_IOCTL_I915_GEM_BUSY, &busy); - if (ret == 0) { - return busy.busy; - } - return false; -} - /* A timeout of 0 just checks for busyness. */ static int iris_bo_wait_syncobj(struct iris_bo *bo, int64_t timeout_ns) @@ -518,10 +503,18 @@ bool iris_bo_busy(struct iris_bo *bo) { bool busy; - if (iris_bo_is_external(bo)) - busy = iris_bo_busy_gem(bo); - else - busy = iris_bo_busy_syncobj(bo); + + switch (iris_bufmgr_get_device_info(bo->bufmgr)->kmd_type) { + case INTEL_KMD_TYPE_I915: + if (iris_bo_is_external(bo)) + busy = iris_i915_bo_busy_gem(bo); + else + busy = iris_bo_busy_syncobj(bo); + break; + default: + unreachable("missing"); + busy = true; + } bo->idle = !busy; -- 2.7.4