iris: Move iris_bo_wait_gem() to i915/iris_bufmgr.c

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>
This commit is contained in:
José Roberto de Souza 2022-10-24 14:08:55 -07:00 committed by Marge Bot
parent 97becc1b6f
commit a6dcd62f44
3 changed files with 29 additions and 22 deletions

View 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;
}

View 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);

View 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;