Commit 43861f71 authored by Marek Olšák's avatar Marek Olšák Committed by Dave Airlie

drm/radeon: add a way to revoke hyper-z access

Signed-off-by: default avatarMarek Olšák <maraeo@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent c17c2f89
...@@ -162,13 +162,27 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) ...@@ -162,13 +162,27 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
return -EINVAL; return -EINVAL;
} }
case RADEON_INFO_WANT_HYPERZ: case RADEON_INFO_WANT_HYPERZ:
/* The "value" here is both an input and output parameter.
* If the input value is 1, filp requests hyper-z access.
* If the input value is 0, filp revokes its hyper-z access.
*
* When returning, the value is 1 if filp owns hyper-z access,
* 0 otherwise. */
if (value >= 2) {
DRM_DEBUG_KMS("WANT_HYPERZ: invalid value %d\n", value);
return -EINVAL;
}
mutex_lock(&dev->struct_mutex); mutex_lock(&dev->struct_mutex);
if (rdev->hyperz_filp) if (value == 1) {
value = 0; /* wants hyper-z */
else { if (!rdev->hyperz_filp)
rdev->hyperz_filp = filp; rdev->hyperz_filp = filp;
value = 1; } else if (value == 0) {
/* revokes hyper-z */
if (rdev->hyperz_filp == filp)
rdev->hyperz_filp = NULL;
} }
value = rdev->hyperz_filp == filp ? 1 : 0;
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev->struct_mutex);
break; break;
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment