From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 5.2 021/171] drm/amd/display: Disable cursor when offscreen in negative direction Date: Thu, 18 Jul 2019 23:54:12 -0400 Message-ID: <20190719035643.14300-21-sashal@kernel.org> References: <20190719035643.14300-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190719035643.14300-1-sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Sasha Levin , Sun peng Li , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Alex Deucher , Bhawanpreet Lakha , Nicholas Kazlauskas RnJvbTogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9sYXMua2F6bGF1c2thc0BhbWQuY29tPgoK WyBVcHN0cmVhbSBjb21taXQgZTM3MWUxOWMxMGEyNjRiZDcyYzJmZjFkMjFlMjE2N2I5OTQ3MTBk MSBdCgpbV2h5XQpXaGVuIHggb3IgeSBpcyBuZWdhdGl2ZSB3ZSBzZXQgdGhlIHggYW5kIHkgdmFs dWVzIHRvIDAgYW5kIGNvbXBlbnNhdGUKd2l0aCBhIHBvc2l0aXZlIGN1cnNvciBob3RzcG90IGlu IERNIHNpbmNlIERDIGV4cGVjdHMgcG9zaXRpdmUgY3Vyc29yCnZhbHVlcy4KCldoZW4geCBvciB5 IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbWF4aW11bSBjdXJzb3Igd2lkdGggb3IgaGVp Z2h0CnRoZSBjdXJzb3IgaG90c3BvdCBpcyBjbGFtcGVkIHNvIHRoZSBob3RzcG90IGRvZXNuJ3Qg ZXhjZWVkIHRoZQpjdXJzb3Igc2l6ZToKCmlmICh4IDwgMCkgewogICAgICAgIHhvcmlnaW4gPSBt aW4oLXgsIGFtZGdwdV9jcnRjLT5tYXhfY3Vyc29yX3dpZHRoIC0gMSk7CiAgICAgICAgeCA9IDA7 Cn0KCmlmICh5IDwgMCkgewogICAgICAgIHlvcmlnaW4gPSBtaW4oLXksIGFtZGdwdV9jcnRjLT5t YXhfY3Vyc29yX2hlaWdodCAtIDEpOwogICAgICAgIHkgPSAwOwp9CgpUaGlzIGluY29ycmVjdGx5 IGZvcmNlcyB0aGUgY3Vyc29yIHRvIGJlIGF0IGxlYXN0IDEgcGl4ZWwgb24gdGhlIHNjcmVlbgpp biBlaXRoZXIgZGlyZWN0aW9uIHdoZW4geCBvciB5IGlzIHN1ZmZpY2llbnRseSBuZWdhdGl2ZS4K CltIb3ddCkp1c3QgZGlzYWJsZSB0aGUgY3Vyc29yIHdoZW4gaXQgZ29lcyBmYXIgZW5vdWdoIG9m ZiB0aGUgc2NyZWVuIGluIG9uZQpvZiB0aGVzZSBkaXJlY3Rpb25zLgoKVGhpcyBmaXhlcyBrbXNf Y3Vyc29yX2NyY0BjdXJzb3ItMjU2eDI1Ni1vZmZzY3JlZW4uCgpTaWduZWQtb2ZmLWJ5OiBOaWNo b2xhcyBLYXpsYXVza2FzIDxuaWNob2xhcy5rYXpsYXVza2FzQGFtZC5jb20+ClJldmlld2VkLWJ5 OiBTdW4gcGVuZyBMaSA8U3VucGVuZy5MaUBhbWQuY29tPgpBY2tlZC1ieTogQmhhd2FucHJlZXQg TGFraGEgPEJoYXdhbnByZWV0Lkxha2hhQGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IEFsZXggRGV1 Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2 aW4gPHNhc2hhbEBrZXJuZWwub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtLmMgfCAxNCArKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQs IDkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwppbmRleCBhYjdjNWMzMDA0ZWUuLmZh MjY4ZGQ3MzZmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdw dV9kbS9hbWRncHVfZG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1 X2RtL2FtZGdwdV9kbS5jCkBAIC00OTUyLDEyICs0OTUyLDEyIEBAIHN0YXRpYyBpbnQgZ2V0X2N1 cnNvcl9wb3NpdGlvbihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjLAogCWludCB4LCB5OwogCWludCB4b3JpZ2luID0gMCwgeW9yaWdpbiA9IDA7CiAKLQlpZiAo IWNydGMgfHwgIXBsYW5lLT5zdGF0ZS0+ZmIpIHsKLQkJcG9zaXRpb24tPmVuYWJsZSA9IGZhbHNl OwotCQlwb3NpdGlvbi0+eCA9IDA7Ci0JCXBvc2l0aW9uLT55ID0gMDsKKwlwb3NpdGlvbi0+ZW5h YmxlID0gZmFsc2U7CisJcG9zaXRpb24tPnggPSAwOworCXBvc2l0aW9uLT55ID0gMDsKKworCWlm ICghY3J0YyB8fCAhcGxhbmUtPnN0YXRlLT5mYikKIAkJcmV0dXJuIDA7Ci0JfQogCiAJaWYgKChw bGFuZS0+c3RhdGUtPmNydGNfdyA+IGFtZGdwdV9jcnRjLT5tYXhfY3Vyc29yX3dpZHRoKSB8fAog CSAgICAocGxhbmUtPnN0YXRlLT5jcnRjX2ggPiBhbWRncHVfY3J0Yy0+bWF4X2N1cnNvcl9oZWln aHQpKSB7CkBAIC00OTcxLDYgKzQ5NzEsMTAgQEAgc3RhdGljIGludCBnZXRfY3Vyc29yX3Bvc2l0 aW9uKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJeCA9 IHBsYW5lLT5zdGF0ZS0+Y3J0Y194OwogCXkgPSBwbGFuZS0+c3RhdGUtPmNydGNfeTsKIAorCWlm ICh4IDw9IC1hbWRncHVfY3J0Yy0+bWF4X2N1cnNvcl93aWR0aCB8fAorCSAgICB5IDw9IC1hbWRn cHVfY3J0Yy0+bWF4X2N1cnNvcl9oZWlnaHQpCisJCXJldHVybiAwOworCiAJaWYgKGNydGMtPnBy aW1hcnktPnN0YXRlKSB7CiAJCS8qIGF2aXZvIGN1cnNvciBhcmUgb2Zmc2V0IGludG8gdGhlIHRv dGFsIHN1cmZhY2UgKi8KIAkJeCArPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+c3JjX3ggPj4gMTY7 Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08DC6C76188 for ; Fri, 19 Jul 2019 03:57:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D43CA21851 for ; Fri, 19 Jul 2019 03:57:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1563508666; bh=fnhJtHhZ7psncufqizd+johqm8CCDOQCcGb61BQAxMg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=rK5wreC6Y9M0VNxMEMJEYZhR5UwXVD8EbBbvpY2yNrSm2VfHiq7PWvs1XtR8bKGok DOV8A4xbIQr1s3Wiq8b1UJYbHLApEV8+xxV4liNfyaoH7u4UHgCp2tF6SAUFwKl7fZ Y3w9NBl2r2rv3lnUktW6WQ4jS3PLV1bcyOE3PQCs= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727496AbfGSD5p (ORCPT ); Thu, 18 Jul 2019 23:57:45 -0400 Received: from mail.kernel.org ([198.145.29.99]:56936 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727356AbfGSD5o (ORCPT ); Thu, 18 Jul 2019 23:57:44 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0914A21852; Fri, 19 Jul 2019 03:57:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1563508663; bh=fnhJtHhZ7psncufqizd+johqm8CCDOQCcGb61BQAxMg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vRqbRgIf84hL8vDyIJkdhQECnhmt84w9FjXKgcYDw8dAZktKWlox09LVdr+FWX4zU fkZ3QnsUq5DfHCDTExcfkLlQmR8G+5Bfhuq18/TTm+Yv5GXKqHipuzYQTPUrGRJkpV dqURjNRGLLsRgZPSKFsXAlduSr3AKhWBr3/RzxMs= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Nicholas Kazlauskas , Sun peng Li , Bhawanpreet Lakha , Alex Deucher , Sasha Levin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 5.2 021/171] drm/amd/display: Disable cursor when offscreen in negative direction Date: Thu, 18 Jul 2019 23:54:12 -0400 Message-Id: <20190719035643.14300-21-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190719035643.14300-1-sashal@kernel.org> References: <20190719035643.14300-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Nicholas Kazlauskas [ Upstream commit e371e19c10a264bd72c2ff1d21e2167b994710d1 ] [Why] When x or y is negative we set the x and y values to 0 and compensate with a positive cursor hotspot in DM since DC expects positive cursor values. When x or y is less than or equal to the maximum cursor width or height the cursor hotspot is clamped so the hotspot doesn't exceed the cursor size: if (x < 0) { xorigin = min(-x, amdgpu_crtc->max_cursor_width - 1); x = 0; } if (y < 0) { yorigin = min(-y, amdgpu_crtc->max_cursor_height - 1); y = 0; } This incorrectly forces the cursor to be at least 1 pixel on the screen in either direction when x or y is sufficiently negative. [How] Just disable the cursor when it goes far enough off the screen in one of these directions. This fixes kms_cursor_crc@cursor-256x256-offscreen. Signed-off-by: Nicholas Kazlauskas Reviewed-by: Sun peng Li Acked-by: Bhawanpreet Lakha Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index ab7c5c3004ee..fa268dd736f4 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -4952,12 +4952,12 @@ static int get_cursor_position(struct drm_plane *plane, struct drm_crtc *crtc, int x, y; int xorigin = 0, yorigin = 0; - if (!crtc || !plane->state->fb) { - position->enable = false; - position->x = 0; - position->y = 0; + position->enable = false; + position->x = 0; + position->y = 0; + + if (!crtc || !plane->state->fb) return 0; - } if ((plane->state->crtc_w > amdgpu_crtc->max_cursor_width) || (plane->state->crtc_h > amdgpu_crtc->max_cursor_height)) { @@ -4971,6 +4971,10 @@ static int get_cursor_position(struct drm_plane *plane, struct drm_crtc *crtc, x = plane->state->crtc_x; y = plane->state->crtc_y; + if (x <= -amdgpu_crtc->max_cursor_width || + y <= -amdgpu_crtc->max_cursor_height) + return 0; + if (crtc->primary->state) { /* avivo cursor are offset into the total surface */ x += crtc->primary->state->src_x >> 16; -- 2.20.1