From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/qxl: fix cursor position with non-zero hotspot Date: Tue, 09 Feb 2016 16:31:22 +0200 Message-ID: <87twlic5vp.fsf@intel.com> References: <1447845445-2116-1-git-send-email-john@metanate.com> <20151118125823.GS20799@phenom.ffwll.local> <20151203104607.1a9a757a.john@metanate.com> <20160208113232.02bc534a.john@metanate.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 392346E580 for ; Tue, 9 Feb 2016 06:31:25 -0800 (PST) In-Reply-To: <20160208113232.02bc534a.john@metanate.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: John Keeping , Dave Airlie Cc: Michel =?utf-8?Q?D=C3=A4nzer?= , LKML , Maling list - DRI developers List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCAwOCBGZWIgMjAxNiwgSm9obiBLZWVwaW5nIDxqb2huQG1ldGFuYXRlLmNvbT4gd3Jv dGU6Cj4gSSBoYXZlbid0IHNlZW4gdGhpcyBnZXQgcGlja2VkIHVwLiAgSXMgdGhlcmUgc29tZXRo aW5nIHdyb25nIHdpdGggdGhlCj4gcGF0Y2ggb3Igd2FzIGl0IGp1c3QgbG9zdCBpbiB0aGUgbm9p c2U/CgpJIHBpY2tlZCB0aGlzIHVwIGluIG91ciBkcm0tZml4ZXMgYnJhbmNoLCBhbmQgd2lsbCBz ZW5kIGl0IG9uIHRvIERhdmUuCgpCUiwKSmFuaS4KCj4KPiBPbiBUaHUsIDMgRGVjIDIwMTUgMTA6 NDY6MDcgKzAwMDAgSm9obiBLZWVwaW5nIHdyb3RlOgo+Cj4+IE9uIFdlZCwgMTggTm92IDIwMTUg MTM6NTg6MjMgKzAxMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+IAo+PiA+IE9uIFdlZCwgTm92 IDE4LCAyMDE1IGF0IDExOjE3OjI1QU0gKzAwMDAsIEpvaG4gS2VlcGluZyB3cm90ZTogIAo+PiA+ ID4gVGhlIFNQSUNFIHByb3RvY29sIGNvbnNpZGVycyB0aGUgcG9zaXRpb24gb2YgYSBjdXJzb3Ig dG8gYmUgdGhlCj4+ID4gPiBsb2NhdGlvbiBvZiBpdHMgYWN0aXZlIHBpeGVsIG9uIHRoZSBkaXNw bGF5LCBzbyB0aGUgY3Vyc29yIGlzIGRyYXduCj4+ID4gPiB3aXRoIGl0cyB0b3AtbGVmdCBjb3Ju ZXIgYXQgIih4IC0gaG90X3Nwb3RfeCwgeSAtIGhvdF9zcG90X3kpIiBidXQKPj4gPiA+IHRoZSBE Uk0gY3Vyc29yIHBvc2l0aW9uIGdpdmVzIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgdG9wLWxlZnQK Pj4gPiA+IGNvcm5lciBzaG91bGQgYmUgZHJhd24sIHdpdGggdGhlIGhvdHNwb3QgYmVpbmcgYSBo aW50IGZvciBkcml2ZXJzCj4+ID4gPiB0aGF0IG5lZWQgaXQuCj4+ID4gPiAKPj4gPiA+IFRoaXMg Zml4ZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSB3aW5kb3cgcmVzaXplIGN1cnNvcnMgd2hlbiB1c2lu Zwo+PiA+ID4gRmx1eGJveCB3aXRoIHRoZSBRWEwgRFJNIGRyaXZlciBhbmQgYm90aCB0aGUgUVhM IGFuZCBtb2Rlc2V0dGluZyBYCj4+ID4gPiBkcml2ZXJzLgo+PiA+ID4gCj4+ID4gPiBTaWduZWQt b2ZmLWJ5OiBKb2huIEtlZXBpbmcgPGpvaG5AbWV0YW5hdGUuY29tPgo+PiA+ID4gLS0tCj4+ID4g PiBUaGlzIGNvbWVzIGZyb20gdGhlIGRpc2N1c3Npb24gaW4gdGhlIHRocmVhZCBhdCBbMV0uICBN eSB0ZXN0Cj4+ID4gPiBlbnZpcm9ubWVudCBpcyB1c2luZzoKPj4gPiA+IAo+PiA+ID4gICAgIC0g WC5PcmcgWCBTZXJ2ZXIgMS4xNy40Cj4+ID4gPiAgICAgLSB4Zjg2LXZpZGVvLXF4bCAwLjEuNAo+ PiA+ID4gICAgIC0gc3BpY2UtZ3RrMyAwLjMwCj4+ID4gPiAKPj4gPiA+IFsxXQo+PiA+ID4gaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2ZWwvMjAxNS1Ob3ZlbWJl ci90aHJlYWQuaHRtbCM5NDY1MAo+PiA+ID4gCj4+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3F4bC9x eGxfZGlzcGxheS5jIHwgMTMgKysrKysrKysrLS0tLQo+PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9x eGwvcXhsX2Rydi5oICAgICB8ICAyICsrCj4+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNl cnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+PiA+ID4gCj4+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCj4+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9x eGwvcXhsX2Rpc3BsYXkuYyBpbmRleCAxODNhZWExLi41ZWRlYmY0IDEwMDY0NAo+PiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCj4+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vcXhsL3F4bF9kaXNwbGF5LmMKPj4gPiA+IEBAIC0zNzUsMTAgKzM3NSwxNSBAQCBz dGF0aWMgaW50IHF4bF9jcnRjX2N1cnNvcl9zZXQyKHN0cnVjdAo+PiA+ID4gZHJtX2NydGMgKmNy dGMsIAo+PiA+ID4gIAlxeGxfYm9fa3VubWFwKHVzZXJfYm8pOwo+PiA+ID4gIAo+PiA+ID4gKwlx Y3J0Yy0+Y3VyX3ggKz0gcWNydGMtPmhvdF9zcG90X3ggLSBob3RfeDsKPj4gPiA+ICsJcWNydGMt PmN1cl95ICs9IHFjcnRjLT5ob3Rfc3BvdF95IC0gaG90X3k7Cj4+ID4gPiArCXFjcnRjLT5ob3Rf c3BvdF94ID0gaG90X3g7Cj4+ID4gPiArCXFjcnRjLT5ob3Rfc3BvdF95ID0gaG90X3k7ICAgIAo+ PiA+IAo+PiA+IFlheSBmb3IgdGhlIGFydGlmaWNpYWwgc3BsaXQgb2YgdGhlIGxlZ2FjeSBkcml2 ZXIgaW50ZXJmYWNlIGZvcgo+PiA+IGN1cnNvcnMuCj4+ID4gCj4+ID4gUmV2aWV3ZWQtYnk6IERh bmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4+ID4gQ2M6IHN0YWJsZUB2Z2Vy Lmtlcm5lbC5vcmcKPj4gPiAKPj4gPiBEYXZlLCBjYW4geW91IHBscyBwaWNrIHRoaXMgdXAgaWYg eW91IGFncmVlPyAgCj4+IAo+PiBQaW5nPwo+PiAKPj4gPiA+ICsKPj4gPiA+ICAJY21kID0gKHN0 cnVjdCBxeGxfY3Vyc29yX2NtZCAqKXF4bF9yZWxlYXNlX21hcChxZGV2LAo+PiA+ID4gcmVsZWFz ZSk7IGNtZC0+dHlwZSA9IFFYTF9DVVJTT1JfU0VUOwo+PiA+ID4gLQljbWQtPnUuc2V0LnBvc2l0 aW9uLnggPSBxY3J0Yy0+Y3VyX3g7Cj4+ID4gPiAtCWNtZC0+dS5zZXQucG9zaXRpb24ueSA9IHFj cnRjLT5jdXJfeTsKPj4gPiA+ICsJY21kLT51LnNldC5wb3NpdGlvbi54ID0gcWNydGMtPmN1cl94 ICsgcWNydGMtPmhvdF9zcG90X3g7Cj4+ID4gPiArCWNtZC0+dS5zZXQucG9zaXRpb24ueSA9IHFj cnRjLT5jdXJfeSArIHFjcnRjLT5ob3Rfc3BvdF95Owo+PiA+ID4gIAo+PiA+ID4gIAljbWQtPnUu c2V0LnNoYXBlID0gcXhsX2JvX3BoeXNpY2FsX2FkZHJlc3MocWRldiwKPj4gPiA+IGN1cnNvcl9i bywgMCk7IAo+PiA+ID4gQEAgLTQ0MSw4ICs0NDYsOCBAQCBzdGF0aWMgaW50IHF4bF9jcnRjX2N1 cnNvcl9tb3ZlKHN0cnVjdCBkcm1fY3J0Ywo+PiA+ID4gKmNydGMsIAo+PiA+ID4gIAljbWQgPSAo c3RydWN0IHF4bF9jdXJzb3JfY21kICopcXhsX3JlbGVhc2VfbWFwKHFkZXYsCj4+ID4gPiByZWxl YXNlKTsgY21kLT50eXBlID0gUVhMX0NVUlNPUl9NT1ZFOwo+PiA+ID4gLQljbWQtPnUucG9zaXRp b24ueCA9IHFjcnRjLT5jdXJfeDsKPj4gPiA+IC0JY21kLT51LnBvc2l0aW9uLnkgPSBxY3J0Yy0+ Y3VyX3k7Cj4+ID4gPiArCWNtZC0+dS5wb3NpdGlvbi54ID0gcWNydGMtPmN1cl94ICsgcWNydGMt PmhvdF9zcG90X3g7Cj4+ID4gPiArCWNtZC0+dS5wb3NpdGlvbi55ID0gcWNydGMtPmN1cl95ICsg cWNydGMtPmhvdF9zcG90X3k7Cj4+ID4gPiAgCXF4bF9yZWxlYXNlX3VubWFwKHFkZXYsIHJlbGVh c2UsICZjbWQtPnJlbGVhc2VfaW5mbyk7Cj4+ID4gPiAgCj4+ID4gPiAgCXF4bF9wdXNoX2N1cnNv cl9yaW5nX3JlbGVhc2UocWRldiwgcmVsZWFzZSwKPj4gPiA+IFFYTF9DTURfQ1VSU09SLCBmYWxz ZSk7IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaAo+PiA+ID4gYi9k cml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaCBpbmRleCAwMWE4Njk0Li4zYWI5MDE3IDEwMDY0 NAo+PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJ2LmgKPj4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCj4+ID4gPiBAQCAtMTM1LDYgKzEzNSw4IEBA IHN0cnVjdCBxeGxfY3J0YyB7Cj4+ID4gPiAgCWludCBpbmRleDsKPj4gPiA+ICAJaW50IGN1cl94 Owo+PiA+ID4gIAlpbnQgY3VyX3k7Cj4+ID4gPiArCWludCBob3Rfc3BvdF94Owo+PiA+ID4gKwlp bnQgaG90X3Nwb3RfeTsKPj4gPiA+ICB9Owo+PiA+ID4gIAo+PiA+ID4gIHN0cnVjdCBxeGxfb3V0 cHV0IHsKPj4gPiA+IC0tIAo+PiA+ID4gMi42LjMuNDYyLmdiZTJjOTE0Cj4+ID4gPiAgICAgCj4+ ID4gICAKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRl cgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756047AbcBIOb1 (ORCPT ); Tue, 9 Feb 2016 09:31:27 -0500 Received: from mga09.intel.com ([134.134.136.24]:37988 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753132AbcBIOb0 (ORCPT ); Tue, 9 Feb 2016 09:31:26 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,421,1449561600"; d="scan'208";a="911594005" From: Jani Nikula To: John Keeping , Dave Airlie Cc: Michel =?utf-8?Q?D=C3=A4nzer?= , Maling list - DRI developers , LKML Subject: Re: [PATCH] drm/qxl: fix cursor position with non-zero hotspot In-Reply-To: <20160208113232.02bc534a.john@metanate.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <1447845445-2116-1-git-send-email-john@metanate.com> <20151118125823.GS20799@phenom.ffwll.local> <20151203104607.1a9a757a.john@metanate.com> <20160208113232.02bc534a.john@metanate.com> User-Agent: Notmuch/0.21+34~g7dd0d52 (http://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu) Date: Tue, 09 Feb 2016 16:31:22 +0200 Message-ID: <87twlic5vp.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 08 Feb 2016, John Keeping wrote: > I haven't seen this get picked up. Is there something wrong with the > patch or was it just lost in the noise? I picked this up in our drm-fixes branch, and will send it on to Dave. BR, Jani. > > On Thu, 3 Dec 2015 10:46:07 +0000 John Keeping wrote: > >> On Wed, 18 Nov 2015 13:58:23 +0100, Daniel Vetter wrote: >> >> > On Wed, Nov 18, 2015 at 11:17:25AM +0000, John Keeping wrote: >> > > The SPICE protocol considers the position of a cursor to be the >> > > location of its active pixel on the display, so the cursor is drawn >> > > with its top-left corner at "(x - hot_spot_x, y - hot_spot_y)" but >> > > the DRM cursor position gives the location where the top-left >> > > corner should be drawn, with the hotspot being a hint for drivers >> > > that need it. >> > > >> > > This fixes the location of the window resize cursors when using >> > > Fluxbox with the QXL DRM driver and both the QXL and modesetting X >> > > drivers. >> > > >> > > Signed-off-by: John Keeping >> > > --- >> > > This comes from the discussion in the thread at [1]. My test >> > > environment is using: >> > > >> > > - X.Org X Server 1.17.4 >> > > - xf86-video-qxl 0.1.4 >> > > - spice-gtk3 0.30 >> > > >> > > [1] >> > > http://lists.freedesktop.org/archives/dri-devel/2015-November/thread.html#94650 >> > > >> > > drivers/gpu/drm/qxl/qxl_display.c | 13 +++++++++---- >> > > drivers/gpu/drm/qxl/qxl_drv.h | 2 ++ >> > > 2 files changed, 11 insertions(+), 4 deletions(-) >> > > >> > > diff --git a/drivers/gpu/drm/qxl/qxl_display.c >> > > b/drivers/gpu/drm/qxl/qxl_display.c index 183aea1..5edebf4 100644 >> > > --- a/drivers/gpu/drm/qxl/qxl_display.c >> > > +++ b/drivers/gpu/drm/qxl/qxl_display.c >> > > @@ -375,10 +375,15 @@ static int qxl_crtc_cursor_set2(struct >> > > drm_crtc *crtc, >> > > qxl_bo_kunmap(user_bo); >> > > >> > > + qcrtc->cur_x += qcrtc->hot_spot_x - hot_x; >> > > + qcrtc->cur_y += qcrtc->hot_spot_y - hot_y; >> > > + qcrtc->hot_spot_x = hot_x; >> > > + qcrtc->hot_spot_y = hot_y; >> > >> > Yay for the artificial split of the legacy driver interface for >> > cursors. >> > >> > Reviewed-by: Daniel Vetter >> > Cc: stable@vger.kernel.org >> > >> > Dave, can you pls pick this up if you agree? >> >> Ping? >> >> > > + >> > > cmd = (struct qxl_cursor_cmd *)qxl_release_map(qdev, >> > > release); cmd->type = QXL_CURSOR_SET; >> > > - cmd->u.set.position.x = qcrtc->cur_x; >> > > - cmd->u.set.position.y = qcrtc->cur_y; >> > > + cmd->u.set.position.x = qcrtc->cur_x + qcrtc->hot_spot_x; >> > > + cmd->u.set.position.y = qcrtc->cur_y + qcrtc->hot_spot_y; >> > > >> > > cmd->u.set.shape = qxl_bo_physical_address(qdev, >> > > cursor_bo, 0); >> > > @@ -441,8 +446,8 @@ static int qxl_crtc_cursor_move(struct drm_crtc >> > > *crtc, >> > > cmd = (struct qxl_cursor_cmd *)qxl_release_map(qdev, >> > > release); cmd->type = QXL_CURSOR_MOVE; >> > > - cmd->u.position.x = qcrtc->cur_x; >> > > - cmd->u.position.y = qcrtc->cur_y; >> > > + cmd->u.position.x = qcrtc->cur_x + qcrtc->hot_spot_x; >> > > + cmd->u.position.y = qcrtc->cur_y + qcrtc->hot_spot_y; >> > > qxl_release_unmap(qdev, release, &cmd->release_info); >> > > >> > > qxl_push_cursor_ring_release(qdev, release, >> > > QXL_CMD_CURSOR, false); diff --git a/drivers/gpu/drm/qxl/qxl_drv.h >> > > b/drivers/gpu/drm/qxl/qxl_drv.h index 01a8694..3ab9017 100644 >> > > --- a/drivers/gpu/drm/qxl/qxl_drv.h >> > > +++ b/drivers/gpu/drm/qxl/qxl_drv.h >> > > @@ -135,6 +135,8 @@ struct qxl_crtc { >> > > int index; >> > > int cur_x; >> > > int cur_y; >> > > + int hot_spot_x; >> > > + int hot_spot_y; >> > > }; >> > > >> > > struct qxl_output { >> > > -- >> > > 2.6.3.462.gbe2c914 >> > > >> > > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Jani Nikula, Intel Open Source Technology Center