drm/radeon/kms: implement bo busy check + current domain
This implements the busy ioctl along with a current domain check. returns 0 or -EBUSY puts the current domain no matter what the answer. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -262,7 +262,27 @@ int radeon_gem_mmap_ioctl(struct drm_device *dev, void *data,
|
||||
int radeon_gem_busy_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *filp)
|
||||
{
|
||||
/* FIXME: implement */
|
||||
struct drm_radeon_gem_busy *args = data;
|
||||
struct drm_gem_object *gobj;
|
||||
struct radeon_object *robj;
|
||||
int r;
|
||||
uint32_t cur_placement;
|
||||
|
||||
gobj = drm_gem_object_lookup(dev, filp, args->handle);
|
||||
if (gobj == NULL) {
|
||||
return -EINVAL;
|
||||
}
|
||||
robj = gobj->driver_private;
|
||||
r = radeon_object_busy_domain(robj, &cur_placement);
|
||||
if (cur_placement == TTM_PL_VRAM)
|
||||
args->domain = RADEON_GEM_DOMAIN_VRAM;
|
||||
if (cur_placement == TTM_PL_FLAG_TT)
|
||||
args->domain = RADEON_GEM_DOMAIN_GTT;
|
||||
if (cur_placement == TTM_PL_FLAG_SYSTEM)
|
||||
args->domain = RADEON_GEM_DOMAIN_CPU;
|
||||
mutex_lock(&dev->struct_mutex);
|
||||
drm_gem_object_unreference(gobj);
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user