Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+19 −5
Original line number Diff line number Diff line
@@ -162,13 +162,27 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
			return -EINVAL;
		}
	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);
		if (rdev->hyperz_filp)
			value = 0;
		else {
		if (value == 1) {
			/* wants hyper-z */
			if (!rdev->hyperz_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);
		break;
	default: