From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Keeping Subject: Re: [PATCH] drm/qxl: fix cursor position with non-zero hotspot Date: Mon, 8 Feb 2016 11:32:32 +0000 Message-ID: <20160208113232.02bc534a.john@metanate.com> References: <1447845445-2116-1-git-send-email-john@metanate.com> <20151118125823.GS20799@phenom.ffwll.local> <20151203104607.1a9a757a.john@metanate.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metanate.com (dougal.metanate.com [90.155.101.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F63D6E394 for ; Mon, 8 Feb 2016 03:33:17 -0800 (PST) In-Reply-To: <20151203104607.1a9a757a.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: Dave Airlie Cc: Michel =?UTF-8?B?RMOkbnplcg==?= , Maling list - DRI developers , LKML List-Id: dri-devel@lists.freedesktop.org SSBoYXZlbid0IHNlZW4gdGhpcyBnZXQgcGlja2VkIHVwLiAgSXMgdGhlcmUgc29tZXRoaW5nIHdy b25nIHdpdGggdGhlCnBhdGNoIG9yIHdhcyBpdCBqdXN0IGxvc3QgaW4gdGhlIG5vaXNlPwoKT24g VGh1LCAzIERlYyAyMDE1IDEwOjQ2OjA3ICswMDAwIEpvaG4gS2VlcGluZyB3cm90ZToKCj4gT24g V2VkLCAxOCBOb3YgMjAxNSAxMzo1ODoyMyArMDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiAK PiA+IE9uIFdlZCwgTm92IDE4LCAyMDE1IGF0IDExOjE3OjI1QU0gKzAwMDAsIEpvaG4gS2VlcGlu ZyB3cm90ZTogIAo+ID4gPiBUaGUgU1BJQ0UgcHJvdG9jb2wgY29uc2lkZXJzIHRoZSBwb3NpdGlv biBvZiBhIGN1cnNvciB0byBiZSB0aGUKPiA+ID4gbG9jYXRpb24gb2YgaXRzIGFjdGl2ZSBwaXhl bCBvbiB0aGUgZGlzcGxheSwgc28gdGhlIGN1cnNvciBpcyBkcmF3bgo+ID4gPiB3aXRoIGl0cyB0 b3AtbGVmdCBjb3JuZXIgYXQgIih4IC0gaG90X3Nwb3RfeCwgeSAtIGhvdF9zcG90X3kpIiBidXQK PiA+ID4gdGhlIERSTSBjdXJzb3IgcG9zaXRpb24gZ2l2ZXMgdGhlIGxvY2F0aW9uIHdoZXJlIHRo ZSB0b3AtbGVmdAo+ID4gPiBjb3JuZXIgc2hvdWxkIGJlIGRyYXduLCB3aXRoIHRoZSBob3RzcG90 IGJlaW5nIGEgaGludCBmb3IgZHJpdmVycwo+ID4gPiB0aGF0IG5lZWQgaXQuCj4gPiA+IAo+ID4g PiBUaGlzIGZpeGVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgd2luZG93IHJlc2l6ZSBjdXJzb3JzIHdo ZW4gdXNpbmcKPiA+ID4gRmx1eGJveCB3aXRoIHRoZSBRWEwgRFJNIGRyaXZlciBhbmQgYm90aCB0 aGUgUVhMIGFuZCBtb2Rlc2V0dGluZyBYCj4gPiA+IGRyaXZlcnMuCj4gPiA+IAo+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBKb2huIEtlZXBpbmcgPGpvaG5AbWV0YW5hdGUuY29tPgo+ID4gPiAtLS0KPiA+ ID4gVGhpcyBjb21lcyBmcm9tIHRoZSBkaXNjdXNzaW9uIGluIHRoZSB0aHJlYWQgYXQgWzFdLiAg TXkgdGVzdAo+ID4gPiBlbnZpcm9ubWVudCBpcyB1c2luZzoKPiA+ID4gCj4gPiA+ICAgICAtIFgu T3JnIFggU2VydmVyIDEuMTcuNAo+ID4gPiAgICAgLSB4Zjg2LXZpZGVvLXF4bCAwLjEuNAo+ID4g PiAgICAgLSBzcGljZS1ndGszIDAuMzAKPiA+ID4gCj4gPiA+IFsxXQo+ID4gPiBodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2RyaS1kZXZlbC8yMDE1LU5vdmVtYmVyL3RocmVh ZC5odG1sIzk0NjUwCj4gPiA+IAo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxh eS5jIHwgMTMgKysrKysrKysrLS0tLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJ2 LmggICAgIHwgIDIgKysKPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cXhsL3F4bF9kaXNwbGF5LmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kaXNwbGF5 LmMgaW5kZXggMTgzYWVhMS4uNWVkZWJmNCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3F4bC9xeGxfZGlzcGxheS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhs X2Rpc3BsYXkuYwo+ID4gPiBAQCAtMzc1LDEwICszNzUsMTUgQEAgc3RhdGljIGludCBxeGxfY3J0 Y19jdXJzb3Jfc2V0MihzdHJ1Y3QKPiA+ID4gZHJtX2NydGMgKmNydGMsIAo+ID4gPiAgCXF4bF9i b19rdW5tYXAodXNlcl9ibyk7Cj4gPiA+ICAKPiA+ID4gKwlxY3J0Yy0+Y3VyX3ggKz0gcWNydGMt PmhvdF9zcG90X3ggLSBob3RfeDsKPiA+ID4gKwlxY3J0Yy0+Y3VyX3kgKz0gcWNydGMtPmhvdF9z cG90X3kgLSBob3RfeTsKPiA+ID4gKwlxY3J0Yy0+aG90X3Nwb3RfeCA9IGhvdF94Owo+ID4gPiAr CXFjcnRjLT5ob3Rfc3BvdF95ID0gaG90X3k7ICAgIAo+ID4gCj4gPiBZYXkgZm9yIHRoZSBhcnRp ZmljaWFsIHNwbGl0IG9mIHRoZSBsZWdhY3kgZHJpdmVyIGludGVyZmFjZSBmb3IKPiA+IGN1cnNv cnMuCj4gPiAKPiA+IFJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZm d2xsLmNoPgo+ID4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKPiA+IAo+ID4gRGF2ZSwgY2Fu IHlvdSBwbHMgcGljayB0aGlzIHVwIGlmIHlvdSBhZ3JlZT8gIAo+IAo+IFBpbmc/Cj4gCj4gPiA+ ICsKPiA+ID4gIAljbWQgPSAoc3RydWN0IHF4bF9jdXJzb3JfY21kICopcXhsX3JlbGVhc2VfbWFw KHFkZXYsCj4gPiA+IHJlbGVhc2UpOyBjbWQtPnR5cGUgPSBRWExfQ1VSU09SX1NFVDsKPiA+ID4g LQljbWQtPnUuc2V0LnBvc2l0aW9uLnggPSBxY3J0Yy0+Y3VyX3g7Cj4gPiA+IC0JY21kLT51LnNl dC5wb3NpdGlvbi55ID0gcWNydGMtPmN1cl95Owo+ID4gPiArCWNtZC0+dS5zZXQucG9zaXRpb24u eCA9IHFjcnRjLT5jdXJfeCArIHFjcnRjLT5ob3Rfc3BvdF94Owo+ID4gPiArCWNtZC0+dS5zZXQu cG9zaXRpb24ueSA9IHFjcnRjLT5jdXJfeSArIHFjcnRjLT5ob3Rfc3BvdF95Owo+ID4gPiAgCj4g PiA+ICAJY21kLT51LnNldC5zaGFwZSA9IHF4bF9ib19waHlzaWNhbF9hZGRyZXNzKHFkZXYsCj4g PiA+IGN1cnNvcl9ibywgMCk7IAo+ID4gPiBAQCAtNDQxLDggKzQ0Niw4IEBAIHN0YXRpYyBpbnQg cXhsX2NydGNfY3Vyc29yX21vdmUoc3RydWN0IGRybV9jcnRjCj4gPiA+ICpjcnRjLCAKPiA+ID4g IAljbWQgPSAoc3RydWN0IHF4bF9jdXJzb3JfY21kICopcXhsX3JlbGVhc2VfbWFwKHFkZXYsCj4g PiA+IHJlbGVhc2UpOyBjbWQtPnR5cGUgPSBRWExfQ1VSU09SX01PVkU7Cj4gPiA+IC0JY21kLT51 LnBvc2l0aW9uLnggPSBxY3J0Yy0+Y3VyX3g7Cj4gPiA+IC0JY21kLT51LnBvc2l0aW9uLnkgPSBx Y3J0Yy0+Y3VyX3k7Cj4gPiA+ICsJY21kLT51LnBvc2l0aW9uLnggPSBxY3J0Yy0+Y3VyX3ggKyBx Y3J0Yy0+aG90X3Nwb3RfeDsKPiA+ID4gKwljbWQtPnUucG9zaXRpb24ueSA9IHFjcnRjLT5jdXJf eSArIHFjcnRjLT5ob3Rfc3BvdF95Owo+ID4gPiAgCXF4bF9yZWxlYXNlX3VubWFwKHFkZXYsIHJl bGVhc2UsICZjbWQtPnJlbGVhc2VfaW5mbyk7Cj4gPiA+ICAKPiA+ID4gIAlxeGxfcHVzaF9jdXJz b3JfcmluZ19yZWxlYXNlKHFkZXYsIHJlbGVhc2UsCj4gPiA+IFFYTF9DTURfQ1VSU09SLCBmYWxz ZSk7IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaAo+ID4gPiBiL2Ry aXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oIGluZGV4IDAxYTg2OTQuLjNhYjkwMTcgMTAwNjQ0 Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCj4gPiA+IEBAIC0xMzUsNiArMTM1LDggQEAgc3Ry dWN0IHF4bF9jcnRjIHsKPiA+ID4gIAlpbnQgaW5kZXg7Cj4gPiA+ICAJaW50IGN1cl94Owo+ID4g PiAgCWludCBjdXJfeTsKPiA+ID4gKwlpbnQgaG90X3Nwb3RfeDsKPiA+ID4gKwlpbnQgaG90X3Nw b3RfeTsKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gIHN0cnVjdCBxeGxfb3V0cHV0IHsKPiA+ID4g LS0gCj4gPiA+IDIuNi4zLjQ2Mi5nYmUyYzkxNAo+ID4gPiAgICAgCj4gPiAgIAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751552AbcBHLdV (ORCPT ); Mon, 8 Feb 2016 06:33:21 -0500 Received: from dougal.metanate.com ([90.155.101.14]:48843 "EHLO metanate.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750876AbcBHLdT (ORCPT ); Mon, 8 Feb 2016 06:33:19 -0500 Date: Mon, 8 Feb 2016 11:32:32 +0000 From: John Keeping To: Dave Airlie Cc: Daniel Vetter , Maling list - DRI developers , Michel =?UTF-8?B?RMOkbnplcg==?= , LKML Subject: Re: [PATCH] drm/qxl: fix cursor position with non-zero hotspot Message-ID: <20160208113232.02bc534a.john@metanate.com> In-Reply-To: <20151203104607.1a9a757a.john@metanate.com> References: <1447845445-2116-1-git-send-email-john@metanate.com> <20151118125823.GS20799@phenom.ffwll.local> <20151203104607.1a9a757a.john@metanate.com> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.29; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I haven't seen this get picked up. Is there something wrong with the patch or was it just lost in the noise? 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 > > > > >