[{"id":3676135,"web_url":"http://patchwork.ozlabs.org/comment/3676135/","msgid":"<a3c93b9f-0bf5-4379-9486-8100aa399168@rsg.ci.i.u-tokyo.ac.jp>","list_archive_url":null,"date":"2026-04-11T10:44:15","subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","submitter":{"id":90980,"url":"http://patchwork.ozlabs.org/api/people/90980/","name":"Akihiko Odaki","email":"odaki@rsg.ci.i.u-tokyo.ac.jp"},"content":"On 2026/04/09 23:46, Benno Fünstück wrote:\n> From: Benno Fünfstück <benno.fuenfstueck@neodyme.io>\n> \n> When using virtio-gpu-gl, if the guest uses hardware mouse cursor acceleration then the mouse cursor can end up being a resource with the flag Y_0_TOP set. In this case, we need to make sure to flip the cursor data such that display clients render it correctly.\n> \n> For example, this fixes mouse cursor rendering for wlroots-based window managers (like Sway) in Linux guests.\n> \n> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/2315\n> Signed-off-by: Benno Fünfstück <benno.fuenfstueck@neodyme.io>\n\nReviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>\n\nRegards,\nAkihiko Odaki","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=fail reason=\"key not found in DNS\" header.d=rsg.ci.i.u-tokyo.ac.jp\n header.i=@rsg.ci.i.u-tokyo.ac.jp header.a=rsa-sha256 header.s=rs20250326\n header.b=JI96ssUV;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4ft9Kp6MYWz1yGb\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 11 Apr 2026 20:45:02 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wBVpM-0007qe-5L; Sat, 11 Apr 2026 06:44:36 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <odaki@rsg.ci.i.u-tokyo.ac.jp>)\n id 1wBVpJ-0007qT-WA\n for qemu-devel@nongnu.org; Sat, 11 Apr 2026 06:44:34 -0400","from www3579.sakura.ne.jp ([49.212.243.89])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <odaki@rsg.ci.i.u-tokyo.ac.jp>)\n id 1wBVpH-0000rU-Ci\n for qemu-devel@nongnu.org; Sat, 11 Apr 2026 06:44:33 -0400","from [133.11.54.205] (h205.csg.ci.i.u-tokyo.ac.jp [133.11.54.205])\n (authenticated bits=0)\n by www3579.sakura.ne.jp (8.16.1/8.16.1) with ESMTPSA id 63BAiGUr028703\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO);\n Sat, 11 Apr 2026 19:44:16 +0900 (JST)\n (envelope-from odaki@rsg.ci.i.u-tokyo.ac.jp)"],"DKIM-Signature":"a=rsa-sha256; bh=hD1tC1p6bsgeECjItEP/pP246ZpgC59D+lcFFzDPkaA=;\n c=relaxed/relaxed; d=rsg.ci.i.u-tokyo.ac.jp;\n h=From:Message-ID:To:Subject:Date;\n s=rs20250326; t=1775904256; v=1;\n b=JI96ssUVMVzy2mGQRBE51ul045qlfWmEZcdCBeQhVevmrm9Fj6kr9E/fwPDOv9Mv\n vOcYxnkxxx9Hji1F4ll8+qjI8/+qhsx76VzuEtDMYRXHMldfKqJCFa9dFSUd7e2v\n k7LjYL4M92zjYn/QofXvahU3SPgM47o+5l0/8yy1X1NHf+SiKd30O7R+3ymhbXL0\n 7mp6POPEitFi3nltx6NZ5MoV2HMFEb9hfJZoTvl3jPD3mvKwqPjFV1BlGJzmgKb8\n R5GN8t9qxqlD10jW4OH+cFhOhxr24OrnefloNhU/vVa3qVVT9wbMuyuSPWFglAol\n 0VJH4tQWuu6NZam4pcGpLg==","Message-ID":"<a3c93b9f-0bf5-4379-9486-8100aa399168@rsg.ci.i.u-tokyo.ac.jp>","Date":"Sat, 11 Apr 2026 19:44:15 +0900","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","To":"=?utf-8?q?Benno_F=C3=BCnst=C3=BCck?= <benno.fuenfstueck@neodyme.io>,\n qemu-devel@nongnu.org","Cc":"\"Michael S. Tsirkin\" <mst@redhat.com>,\n =?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n Dmitry Osipenko <dmitry.osipenko@collabora.com>","References":"<20260409144639.3610-1-benno.fuenfstueck@neodyme.io>","Content-Language":"en-US","From":"Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>","In-Reply-To":"<20260409144639.3610-1-benno.fuenfstueck@neodyme.io>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=49.212.243.89;\n envelope-from=odaki@rsg.ci.i.u-tokyo.ac.jp; helo=www3579.sakura.ne.jp","X-Spam_score_int":"-16","X-Spam_score":"-1.7","X-Spam_bar":"-","X-Spam_report":"(-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1,\n DKIM_SIGNED=0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=no autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3676746,"web_url":"http://patchwork.ozlabs.org/comment/3676746/","msgid":"<CAJ+F1CKYu4UfJyFJxPYLe9gjQhOD9QA7BrTmBXSCPuCDFgPf1A@mail.gmail.com>","list_archive_url":null,"date":"2026-04-13T13:23:34","subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","submitter":{"id":6442,"url":"http://patchwork.ozlabs.org/api/people/6442/","name":"Marc-André Lureau","email":"marcandre.lureau@gmail.com"},"content":"Hi Benno\n\nOn Thu, Apr 9, 2026 at 9:27 PM Benno Fünstück\n<benno.fuenfstueck@neodyme.io> wrote:\n>\n> From: Benno Fünfstück <benno.fuenfstueck@neodyme.io>\n>\n> When using virtio-gpu-gl, if the guest uses hardware mouse cursor acceleration then the mouse cursor can end up being a resource with the flag Y_0_TOP set. In this case, we need to make sure to flip the cursor data such that display clients render it correctly.\n>\n> For example, this fixes mouse cursor rendering for wlroots-based window managers (like Sway) in Linux guests.\n>\n> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/2315\n> Signed-off-by: Benno Fünfstück <benno.fuenfstueck@neodyme.io>\n\nArguably, this is a bug in virgl vrend_renderer_get_cursor_content(),\nsince the function doesn't return y0_top it should always return the\ndata in the correct orientation.\n\nWe may have a temporary workaround in qemu though for older virgl, but\nI think it should be solved there too.\n\nthanks\n\n> ---\n>  hw/display/virtio-gpu-gl.c | 20 +++++++++++++++++++-\n>  1 file changed, 19 insertions(+), 1 deletion(-)\n>\n> diff --git a/hw/display/virtio-gpu-gl.c b/hw/display/virtio-gpu-gl.c\n> index 2b7a41c466..4562d3405e 100644\n> --- a/hw/display/virtio-gpu-gl.c\n> +++ b/hw/display/virtio-gpu-gl.c\n> @@ -33,6 +33,9 @@ static void virtio_gpu_gl_update_cursor_data(VirtIOGPU *g,\n>      VirtIOGPUGL *gl = VIRTIO_GPU_GL(g);\n>      uint32_t width, height;\n>      uint32_t pixels, *data;\n> +    bool y_0_top = true;\n> +    int ret;\n> +    struct virgl_renderer_resource_info info;\n>\n>      if (gl->renderer_state != RS_INITED) {\n>          return;\n> @@ -49,8 +52,23 @@ static void virtio_gpu_gl_update_cursor_data(VirtIOGPU *g,\n>          return;\n>      }\n>\n> +    memset(&info, 0, sizeof(info));\n> +    ret = virgl_renderer_resource_get_info(resource_id, &info);\n> +    if (ret == 0) {\n> +        y_0_top = info.flags & VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP;\n> +    }\n> +\n>      pixels = s->current_cursor->width * s->current_cursor->height;\n> -    memcpy(s->current_cursor->data, data, pixels * sizeof(uint32_t));\n> +    if (y_0_top) {\n> +        memcpy(s->current_cursor->data, data, pixels * sizeof(uint32_t));\n> +    } else {\n> +        uint32_t *dst = s->current_cursor->data;\n> +        for (uint32_t y = 0; y < height; y++) {\n> +            memcpy(dst + y * width,\n> +                   data + (height - 1 - y) * width,\n> +                   width * sizeof(uint32_t));\n> +        }\n> +    }\n>      free(data);\n>  }\n>\n> --\n> 2.50.1 (Apple Git-155)\n>\n>\n> --\n> Neodyme AG\n> Sitz der Gesellschaft / Address: Dirnismaning 55 | Halle 13 |\n> 85748 Garching b.München\n> Postanschrift: Rosenthaler Straße 72a | 10119\n> Berlin\n>\n> Registergericht / Registry court: München, HRB 269168\n> Vorstand /\n> Management Board: Thomas Lambertz | Tobias Madl\n> Aufsichtsratsvorsitzender /\n> Chairman of the Supervisory Board: Hendrik Hofstadt\n>\n>\n>\n>\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=URSG/MAw;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fvSms5Rkgz1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 23:24:29 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCHGd-0008Pc-4q; Mon, 13 Apr 2026 09:23:55 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@gmail.com>)\n id 1wCHGZ-0008Nq-Sd\n for qemu-devel@nongnu.org; Mon, 13 Apr 2026 09:23:51 -0400","from mail-dl1-x122e.google.com ([2607:f8b0:4864:20::122e])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@gmail.com>)\n id 1wCHGY-0006yq-6I\n for qemu-devel@nongnu.org; Mon, 13 Apr 2026 09:23:51 -0400","by mail-dl1-x122e.google.com with SMTP id\n a92af1059eb24-1279eced0b9so5985995c88.0\n for <qemu-devel@nongnu.org>; Mon, 13 Apr 2026 06:23:48 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1776086627; cv=none;\n d=google.com; s=arc-20240605;\n b=H6ykLhc5rfNV/dBhvg4Bqts0lCPsXjVwrt1TMcIJ7VDk5A+MTb3GPC9ws3Ae2FA+L9\n LkGnDP6f1RotL/SN/npbADN5uIHTt42/tMPm6VZcDKiFHxZTiFL6F791id1m8HPx9673\n W9LjgCRaO7J8opx4fwwX3gG2VKgmu06JYyAo1ry07lZ3BWoV1MBE0IAdJNZmbfecUvEi\n MHEibdPvjoW0yhXfiw7+xkwMfwdi+pEe+9SthEEEg8n8ts2++ELBgnc5agZ1VQtoAp5Z\n PADiPPK1XwpzKF9o79qixOv+asi6CFBezBcg3ThJTmnRsRZktlnJvw3cHL/5u+kUb51i\n wbGA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=O2Mzf9zqVgF2e6DK87pOL11yPS6FLBmMBDRqYSvZSIE=;\n fh=h2lKAM/Y0SRwRZDK+PZXbiU5EMSVJW1NvKTr6JQuA2U=;\n b=GZOSm240I7kFCUSCXTxsCzFbvOr8vrvY2oao4uguxJO2ShFJNktZP6IdmLQTbJGOns\n sevduOxfIBmXMm783WTHPPBWh4xlj7J9mTJApLqU5uztO0RfC6YVv5RHJzNTFlDwKUZh\n HoTpYo2EBJdzJEk2dekeowYJDI+0iFmy53mvF9mAWQ8YFiOo8ingM0AsseVs4cW73Fvu\n WVW16oxb0nLWhlLUsQfQHXpKK+AWdt+1NF1EkK4KXdxjdE5TqJHD0CpbAp7SnH7xQ0d0\n dr+a/RVDf5A1TiNA4/2+C7QarQ1yEctd5yyXa1Ya1zZMa6aM7984CFHx05U9mP3zPiJh\n 2LmA==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776086627; x=1776691427; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=O2Mzf9zqVgF2e6DK87pOL11yPS6FLBmMBDRqYSvZSIE=;\n b=URSG/MAwDB7M7eDhD4qTDq2sc+mHCXDw/Pt5aqmoQjqe1AxTlixXKCZBTQQej1lHdX\n dhgt1ku5k4i/pdY7cG3cAnZcPEgML2tkMwtRjrcJdvq4OR2bYUAr5WMqxmgsy2vHQ0up\n mCJwLz00qXRyBvB7/uIO/sMsfXiPuXvvezi4P3O2tpAuAftOvKJOfGneiKGsDLE9KghL\n baIDB0is95V37gtb0WaPvuxhf5ItgIUx495oR1U5cH0B6IwDTZ7BPM3cegL3FabHzPYG\n xh3cZY0spXCWeE2rSTuo7ELbuaqiU0/MVajeBTpHAF9ENMAo00BeVJrxKQs/qfd2D02C\n tqFA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776086627; x=1776691427;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=O2Mzf9zqVgF2e6DK87pOL11yPS6FLBmMBDRqYSvZSIE=;\n b=HJh1DNgnwwoc62FsU1cj0GVqOxgLLsotqaE/kf2ALuSbyTQhBekPph0x64KyT41lgE\n g/pFfJA0tuMHsfW7GcwYQBIkE/9zAOatsWhpPooXO2l7R+hoOv6Q1U80i0lf8ZvjaMDM\n R0BxyiKvisypHaicGt6q+QkTYj2waoMhOih9gOiaUTPDrMK+iDOdMJlgZK3ai+NMneo8\n gR7yWsavl5yBQ9X7VSFEv3fx0jiKeaFZGIT/ZSwnIg2HUy/3Toz5+HGcKtFowdkZTs9d\n ++ls89CuODzEs12sCGlrLLg8TkvbBC8dBxSlJPwnowD3INQc1BQ4IX/MoxYrc9eqhv0b\n rWMg==","X-Gm-Message-State":"AOJu0Yzw040fG23cyk+lez7lNigwL3gfKFF4LpwVG/aCD8BV+mdY7xaA\n ZxT1v+zWyHq7VuzKVeHNfB7oQqtXMJw+FcMK6VPIob7C7dsdZ5iI+gFBVQ4CEguTFucJlZFizvv\n BsjDvN7ULERfveD2URAZ3dlN9AgC+wVM=","X-Gm-Gg":"AeBDieuxXEuqeriUrd6gzNMW9+YYirc8k3awBBSrmh2IsGJddqdKKXbZSFrdrPcFKVl\n O5Zvwovqdm055eTV7NcN5rkPDNqOKo8K0gaFhUzgoHVf7aA3eBX5JRlYEX4ZLz2nA4kZhBxqTvW\n jLfgeZ6iGNUmNIlFugBihzrMjVX8EGhHbfvKmvNBLpRmcU4azGYSx2PiVpWGzH3S00ZO1y2HJNl\n DkW1jmGnOPgWwMcps0DfFnVrcjWmO4UGGyOAzFc8jiofs+INrtqdiTb5cSjANBWCE67XMtUerHq\n VAcfBH3sxz0lMFpKnwwLiN4o1By2KgFF0KjNWGhP","X-Received":"by 2002:a05:7022:eac7:b0:11a:fb3c:568b with SMTP id\n a92af1059eb24-12c34edefddmr7846538c88.17.1776086627050; Mon, 13 Apr 2026\n 06:23:47 -0700 (PDT)","MIME-Version":"1.0","References":"<20260409144639.3610-1-benno.fuenfstueck@neodyme.io>","In-Reply-To":"<20260409144639.3610-1-benno.fuenfstueck@neodyme.io>","From":"=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>","Date":"Mon, 13 Apr 2026 17:23:34 +0400","X-Gm-Features":"AQROBzBVnq8BbLZrmntZdrHyqczneBgXZSmfvsQBmg4kqXDpy-a9uc62n-Fj-QQ","Message-ID":"\n <CAJ+F1CKYu4UfJyFJxPYLe9gjQhOD9QA7BrTmBXSCPuCDFgPf1A@mail.gmail.com>","Subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","To":"=?utf-8?q?Benno_F=C3=BCnst=C3=BCck?= <benno.fuenfstueck@neodyme.io>","Cc":"qemu-devel@nongnu.org, \"Michael S. Tsirkin\" <mst@redhat.com>,\n\t=?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n  Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>,\n  Dmitry Osipenko <dmitry.osipenko@collabora.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2607:f8b0:4864:20::122e;\n envelope-from=marcandre.lureau@gmail.com; helo=mail-dl1-x122e.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677646,"web_url":"http://patchwork.ozlabs.org/comment/3677646/","msgid":"<CAP-XHHCuVyP=21LyME1KmNB0heRDXAdq7QdCsoVomAK38ZRi7A@mail.gmail.com>","list_archive_url":null,"date":"2026-04-15T13:01:20","subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","submitter":{"id":93105,"url":"http://patchwork.ozlabs.org/api/people/93105/","name":"Benno Fünfstück","email":"benno.fuenfstueck@neodyme.io"},"content":"Hi Marc-André,\n\nOn Mon, 13 Apr 2026 at 15:23, Marc-André Lureau <marcandre.lureau@gmail.com>\nwrote:\n\n> Arguably, this is a bug in virgl vrend_renderer_get_cursor_content(),\n> since the function doesn't return y0_top it should always return the\n> data in the correct orientation.\n>\n> We may have a temporary workaround in qemu though for older virgl, but\n> I think it should be solved there too.\n>\n\nThanks, I didn't know about this. I submitted a MR to virglrenderer now as\nwell to fix it there:\nhttps://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1611\n\nHow should I change the patch to make it a temporary fix? Some kind of\nversion gate (but not sure yet in which version of virglrenderer the fix\nwill end up being release)?\n\n\n>\n> > ---\n> >  hw/display/virtio-gpu-gl.c | 20 +++++++++++++++++++-\n> >  1 file changed, 19 insertions(+), 1 deletion(-)\n> >\n> > diff --git a/hw/display/virtio-gpu-gl.c b/hw/display/virtio-gpu-gl.c\n> > index 2b7a41c466..4562d3405e 100644\n> > --- a/hw/display/virtio-gpu-gl.c\n> > +++ b/hw/display/virtio-gpu-gl.c\n> > @@ -33,6 +33,9 @@ static void virtio_gpu_gl_update_cursor_data(VirtIOGPU\n> *g,\n> >      VirtIOGPUGL *gl = VIRTIO_GPU_GL(g);\n> >      uint32_t width, height;\n> >      uint32_t pixels, *data;\n> > +    bool y_0_top = true;\n> > +    int ret;\n> > +    struct virgl_renderer_resource_info info;\n> >\n> >      if (gl->renderer_state != RS_INITED) {\n> >          return;\n> > @@ -49,8 +52,23 @@ static void\n> virtio_gpu_gl_update_cursor_data(VirtIOGPU *g,\n> >          return;\n> >      }\n> >\n> > +    memset(&info, 0, sizeof(info));\n> > +    ret = virgl_renderer_resource_get_info(resource_id, &info);\n> > +    if (ret == 0) {\n> > +        y_0_top = info.flags & VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP;\n> > +    }\n> > +\n> >      pixels = s->current_cursor->width * s->current_cursor->height;\n> > -    memcpy(s->current_cursor->data, data, pixels * sizeof(uint32_t));\n> > +    if (y_0_top) {\n> > +        memcpy(s->current_cursor->data, data, pixels *\n> sizeof(uint32_t));\n> > +    } else {\n> > +        uint32_t *dst = s->current_cursor->data;\n> > +        for (uint32_t y = 0; y < height; y++) {\n> > +            memcpy(dst + y * width,\n> > +                   data + (height - 1 - y) * width,\n> > +                   width * sizeof(uint32_t));\n> > +        }\n> > +    }\n> >      free(data);\n> >  }\n> >\n> > --\n> > 2.50.1 (Apple Git-155)\n> >\n> >\n> > --\n> > Neodyme AG\n> > Sitz der Gesellschaft / Address: Dirnismaning 55 | Halle 13 |\n> > 85748 Garching b.München\n> > Postanschrift: Rosenthaler Straße 72a | 10119\n> > Berlin\n> >\n> > Registergericht / Registry court: München, HRB 269168\n> > Vorstand /\n> > Management Board: Thomas Lambertz | Tobias Madl\n> > Aufsichtsratsvorsitzender /\n> > Chairman of the Supervisory Board: Hendrik Hofstadt\n> >\n> >\n> >\n> >\n> >\n>\n>\n> --\n> Marc-André Lureau\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=neodyme.io header.i=@neodyme.io header.a=rsa-sha256\n header.s=google header.b=kVX9Tl25;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fwhBg2Yz7z1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 23:02:33 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wCzsH-0000Ke-00; Wed, 15 Apr 2026 09:01:45 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <benno.fuenfstueck@neodyme.io>)\n id 1wCzsA-0000KN-O1\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 09:01:38 -0400","from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <benno.fuenfstueck@neodyme.io>)\n id 1wCzs8-0006pz-2I\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 09:01:38 -0400","by mail-ej1-x62d.google.com with SMTP id\n a640c23a62f3a-b980785a0bfso895512166b.3\n for <qemu-devel@nongnu.org>; Wed, 15 Apr 2026 06:01:33 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1776258092; cv=none;\n d=google.com; s=arc-20240605;\n b=dSi3gndIvT933Eq+H1WJ0Q/PO6nYm48nG/Zb+KKFxJmrZsblRZMJEJFKB7EVQZN/Zk\n ssHyDbytwIPBa5NtfDpmpR/899Sc1jE6ZNF1Tu5Kie/pw2P1g5euwVeR3qYtPi5XN5C4\n NJeRSEAStMgFiEm1JTACkT8/LDZSjQ92WEEOG6BpL4O7NqmieOb4oS9MJdxDB2U9Dx1k\n JOtze4iy6LYXk+52KjOktmxXLN9qgg+DbxPmhzvlJHzVCCKWTcdE6X9DCVhWI30oMFYv\n lINwp8kPG8wDRC+LQY5DUoELZMqRfA1YkZlPV1OnHT9plgMsbZFNqmT4JfQn53EaFGNq\n pp7w==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:dkim-signature;\n bh=9mvKZz9T7ZTKnjmqUudVYht/iKfNOKfvU2iWhDo9o6k=;\n fh=5DtwW8VDym1e0k1+6VgeguCLLQmQuHFGrQGNU3lyEOY=;\n b=OeWIysPIsO7+x0qrqBYi4aApbOk1sjaCvvbnwFpvEzvjYH4toKAETB7QnGB6AgEn71\n OjTRewqqL7So6MidGjywVandqAhVBBLs96EmXiichP+Wy+CCtd+zA0QE3HXXCw8r7Ws1\n RJgq+CUE6oBm05h0YqzTkWeqwi/4mDVRA/MrYRlGsfuv/8F89EeJxg+g1iDwYBtO9rqR\n nBMYLIIHUs6/mb1MasTBNNRn4CgUk+W70ARXsPbHKjo7vcWlgKIRM6pT6CzrdropyXed\n +j5uE7w57+W0ZIFlv2kyLVgukhnscWE7kqnwKVc8JH+t1HoTlgxO+QGpRYnvK8h0uT1D\n U/Tw==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=neodyme.io; s=google; t=1776258092; x=1776862892; darn=nongnu.org;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:from:to:cc:subject:date:message-id:reply-to;\n bh=9mvKZz9T7ZTKnjmqUudVYht/iKfNOKfvU2iWhDo9o6k=;\n b=kVX9Tl25xZrYt/8u/R9Wrm+WHMdEn+1oQjM+bIlPvkMCaWaxoXECoC4IcA7EaWjojE\n C0uPyec+jhOIGiITJNDC4bh4SAcbMkAoK6Z/FO8URrfEmg7cHH541oGQOK2iBwiuoyUo\n hezK7dAWnqsPjSnDNo8emxwieOUAlJZQY4cpPzm6JsCWTyMCu2Xx2+6YJe3sdmDbSj+o\n 3fK+RkPObvziILrGY9r6+LnDvOKOiNJjGzu9kGjDWce5XxR2rvjikf24vMepvq/K2P7v\n o7MSlNicaB7bv0qcy2q4c9S8qeVoVTeuL+StKkFyWhHKAEO9KjtzZzyqFQh7+p24n8+X\n Kn9w==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776258092; x=1776862892;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=9mvKZz9T7ZTKnjmqUudVYht/iKfNOKfvU2iWhDo9o6k=;\n b=oGVtVAU4xVXs9POwxnvMNqHpf78ra2lO0JrAdQiHzaSYVwZPS5Z8u5pUYjTYmgoOqn\n 8BB1sjUKcbOTozbF1uZOaAYujTPi+SlnGCJnBVlw8oSNDIvmtw8wpYHGqTnSpoWrQwHS\n MZT6VR3Y60wJmh1HbTrAemMgEl0f+YIzqSNemGOueXGqeVQkcNSjybmXjbb0KdalzjYG\n SESpdvmbq7vRIeLttAqcjzKRMgGyeqPnhGao60uzJtm2pvncAIOX7yA5Xjez0i5mN0Tw\n g039RzlaU2yar+PvllxQzTVI4a/bE0oFKHSgvEBJI4zGoPLzcxKJpg6GMTmdtVfNbICY\n lEMA==","X-Gm-Message-State":"AOJu0Yzso/9Ucn9JGUIttQCA8HM8eNgkDUWv235lR0wy4RovTC+I1Kly\n jv27QKAMSaceZ29mZBsT7SlQCogA7Z+nOh4cIGFN8WDXC7mhs1Jn8dKNJWA5jxANbVKMUQhdoFo\n OCQLhS3+2QmOu6Hlnw7c+8lgYckk9rCMNRE835MQYl9AOyd5GjLoDRx1ZQksvjU4OGg4zGB9Zmm\n Mde3ZPwoy6KjQFGpPZu3x2Wm9cqw==","X-Gm-Gg":"AeBDieslk9C92q6wM1RF+31O0DB2c66cEvYdUrnstRBzSGsHNTrB0dJ6bjIe8kYbzpX\n xE9fSWZMhr2/jTluyj9YGl/uoq/daPKwg0dAUsMorSxl1ziHFY5vpllK7z7I382fVb7UqnD8O53\n E2brxTWInVz4s1EqfrtKKH//bddYa/be/pzYTQmi2GHXYgY4Jig5vmiiqKzohZhZ86IsjgLUhmI\n 3xgJMla4lRKNEh95baAZ/ueT59moAFXE6g2Lf+VzqON1t9g7wbk+rUJBcS0Sh+GdmwNEwZEOhyN\n K/fHZvqGxCtLYc4BscXPeXmVon/zUqRhe2yaVYgPTSIyKKrWeA==","X-Received":"by 2002:a17:907:7b87:b0:b9d:c34f:2a2b with SMTP id\n a640c23a62f3a-b9dc34f39e6mr778052966b.40.1776258091966; Wed, 15 Apr 2026\n 06:01:31 -0700 (PDT)","MIME-Version":"1.0","References":"<20260409144639.3610-1-benno.fuenfstueck@neodyme.io>\n <CAJ+F1CKYu4UfJyFJxPYLe9gjQhOD9QA7BrTmBXSCPuCDFgPf1A@mail.gmail.com>","In-Reply-To":"\n <CAJ+F1CKYu4UfJyFJxPYLe9gjQhOD9QA7BrTmBXSCPuCDFgPf1A@mail.gmail.com>","From":"=?utf-8?b?QmVubm8gRsO8bmZzdMO8Y2s=?= <benno.fuenfstueck@neodyme.io>","Date":"Wed, 15 Apr 2026 15:01:20 +0200","X-Gm-Features":"AQROBzB0WO42TBaCVWjR6R9Y89Bp2bDPxPWZNapABDhfM4QmDExxEc1tmG6ZUI8","Message-ID":"\n <CAP-XHHCuVyP=21LyME1KmNB0heRDXAdq7QdCsoVomAK38ZRi7A@mail.gmail.com>","Subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","To":"=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>","Cc":"qemu-devel@nongnu.org, \"Michael S. Tsirkin\" <mst@redhat.com>,\n\t=?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n  Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>,\n  Dmitry Osipenko <dmitry.osipenko@collabora.com>","Content-Type":"multipart/alternative; boundary=\"00000000000099f587064f7f50d4\"","Received-SPF":"pass client-ip=2a00:1450:4864:20::62d;\n envelope-from=benno.fuenfstueck@neodyme.io; helo=mail-ej1-x62d.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677656,"web_url":"http://patchwork.ozlabs.org/comment/3677656/","msgid":"<CAJ+F1CJPiXH2Sf2Tqz4QoHeP23bUpMdfi=cPsYYnGoGwWeKJ8w@mail.gmail.com>","list_archive_url":null,"date":"2026-04-15T13:10:12","subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","submitter":{"id":6442,"url":"http://patchwork.ozlabs.org/api/people/6442/","name":"Marc-André Lureau","email":"marcandre.lureau@gmail.com"},"content":"Hi\n\nOn Wed, Apr 15, 2026 at 5:01 PM Benno Fünfstück\n<benno.fuenfstueck@neodyme.io> wrote:\n>\n> Hi Marc-André,\n>\n> On Mon, 13 Apr 2026 at 15:23, Marc-André Lureau <marcandre.lureau@gmail.com> wrote:\n>>\n>> Arguably, this is a bug in virgl vrend_renderer_get_cursor_content(),\n>> since the function doesn't return y0_top it should always return the\n>> data in the correct orientation.\n>>\n>> We may have a temporary workaround in qemu though for older virgl, but\n>> I think it should be solved there too.\n>\n>\n> Thanks, I didn't know about this. I submitted a MR to virglrenderer now as well to fix it there: https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1611\n>\n\ngreat\n\n> How should I change the patch to make it a temporary fix? Some kind of version gate (but not sure yet in which version of virglrenderer the fix will end up being release)?\n\nSince it is not released yet, it's acceptable to not have a\nVIRGL_CHECK_VERSION yet. Just leave TODO comment so we can later add\nit when virgl has the fix.\n\nthanks\n\n>\n>>\n>>\n>> > ---\n>> >  hw/display/virtio-gpu-gl.c | 20 +++++++++++++++++++-\n>> >  1 file changed, 19 insertions(+), 1 deletion(-)\n>> >\n>> > diff --git a/hw/display/virtio-gpu-gl.c b/hw/display/virtio-gpu-gl.c\n>> > index 2b7a41c466..4562d3405e 100644\n>> > --- a/hw/display/virtio-gpu-gl.c\n>> > +++ b/hw/display/virtio-gpu-gl.c\n>> > @@ -33,6 +33,9 @@ static void virtio_gpu_gl_update_cursor_data(VirtIOGPU *g,\n>> >      VirtIOGPUGL *gl = VIRTIO_GPU_GL(g);\n>> >      uint32_t width, height;\n>> >      uint32_t pixels, *data;\n>> > +    bool y_0_top = true;\n>> > +    int ret;\n>> > +    struct virgl_renderer_resource_info info;\n>> >\n>> >      if (gl->renderer_state != RS_INITED) {\n>> >          return;\n>> > @@ -49,8 +52,23 @@ static void virtio_gpu_gl_update_cursor_data(VirtIOGPU *g,\n>> >          return;\n>> >      }\n>> >\n>> > +    memset(&info, 0, sizeof(info));\n>> > +    ret = virgl_renderer_resource_get_info(resource_id, &info);\n>> > +    if (ret == 0) {\n>> > +        y_0_top = info.flags & VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP;\n>> > +    }\n>> > +\n>> >      pixels = s->current_cursor->width * s->current_cursor->height;\n>> > -    memcpy(s->current_cursor->data, data, pixels * sizeof(uint32_t));\n>> > +    if (y_0_top) {\n>> > +        memcpy(s->current_cursor->data, data, pixels * sizeof(uint32_t));\n>> > +    } else {\n>> > +        uint32_t *dst = s->current_cursor->data;\n>> > +        for (uint32_t y = 0; y < height; y++) {\n>> > +            memcpy(dst + y * width,\n>> > +                   data + (height - 1 - y) * width,\n>> > +                   width * sizeof(uint32_t));\n>> > +        }\n>> > +    }\n>> >      free(data);\n>> >  }\n>> >\n>> > --\n>> > 2.50.1 (Apple Git-155)\n>> >\n>> >\n>> > --\n>> > Neodyme AG\n>> > Sitz der Gesellschaft / Address: Dirnismaning 55 | Halle 13 |\n>> > 85748 Garching b.München\n>> > Postanschrift: Rosenthaler Straße 72a | 10119\n>> > Berlin\n>> >\n>> > Registergericht / Registry court: München, HRB 269168\n>> > Vorstand /\n>> > Management Board: Thomas Lambertz | Tobias Madl\n>> > Aufsichtsratsvorsitzender /\n>> > Chairman of the Supervisory Board: Hendrik Hofstadt\n>> >\n>> >\n>> >\n>> >\n>> >\n>>\n>>\n>> --\n>> Marc-André Lureau\n>\n>\n> Neodyme AG\n>\n> Sitz der Gesellschaft / Address: Dirnismaning 55 | Halle 13 | 85748 Garching b.München\n> Postanschrift: Rosenthaler Straße 72a | 10119 Berlin\n> Registergericht / Registry court: München, HRB 269168\n> Vorstand / Management Board: Thomas Lambertz | Tobias Madl\n> Aufsichtsratsvorsitzender / Chairman of the Supervisory Board: Hendrik Hofstadt","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=eYy7e3j3;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fwhNf54Brz1yHM\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 23:11:13 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wD00l-0002hM-64; Wed, 15 Apr 2026 09:10:31 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@gmail.com>)\n id 1wD00i-0002g2-IR\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 09:10:28 -0400","from mail-dy1-x132d.google.com ([2607:f8b0:4864:20::132d])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@gmail.com>)\n id 1wD00g-0000Ne-NA\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 09:10:28 -0400","by mail-dy1-x132d.google.com with SMTP id\n 5a478bee46e88-2d52c7f92b1so5985244eec.0\n for <qemu-devel@nongnu.org>; Wed, 15 Apr 2026 06:10:26 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1776258625; cv=none;\n d=google.com; s=arc-20240605;\n b=RuXGcOgMfPpMjpRPYYp6LKxkXzxyELGHS/w9kx6FsWTQj0gRTD9Lo5hE+WBPpsmrUN\n qXiBy+h6ZsEwFDYRKSqyIgXn/Wmz4Ms3XsoyWQUiM16mIVsnF5xJPuCAAoTmSvmV1g1D\n 4eKiAS3lW/206sZ1A6wbtox21jTwmMnpwVnKsrwK7Lc5J9pmE1RegA5VNVDT7b/cPFcC\n 6hATabRPu1M/8UvTZpOcA5r/EPq5uxXdjjJTJt1W0MmbiRzwK25xViKdIpDlqOaoH7Lm\n 6cRaUQB+2BTlBlFusfgsHGGq3uPfd1KS1NJM/kEeUKjF/sYLrezFXLW7+aqVRZ74sghf\n fqpg==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=BZIuC+Ka19PenuknxSmp6m/LwXW1y/APu3C1ALcXZaM=;\n fh=Rq361VBSSCpVwgpDpWmtmoS1gCbjr/aepb+Zsf4+S80=;\n b=Q3X0luOf4ZCt+9EgqmELk1GBKSC0hv6G8htJSLp/PbfBQGVjYzJ1h5tYDSEcR4/pEQ\n 9cm/I3/VjLAWpPvsUJL7T+JQ+01OYUOL8mFTpfbdmrEY6IrptsoRnlI9w6doTLZjJJ+g\n YOV1UP11QoI1uvaWYSWlrVUvmbk21fNNZUCAuh1gERtTvoZz1KxG93ClEMLF/u1W20mA\n wQx3gbU2Z8AZeEUwF5I+yvpBaG7J/ALKSx+dJecN6l4RqZvfNF4jOAhm7DNxKy0xf1lp\n akiGQ6V0V9JliITJaSG7QqmANr+NTvcCfSg9s1UMziBaH5RORRQlHhlW4F6KB44JCX6O\n jOpw==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776258625; x=1776863425; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=BZIuC+Ka19PenuknxSmp6m/LwXW1y/APu3C1ALcXZaM=;\n b=eYy7e3j3uoeVGcnmufUceDxh/HWaa0+B5N0qAXl2E+YBYZmTmDT+P2dFG/tRv3Z21I\n ZS1Ij/PNX5+D60O+Tj3QgPuN2TA/57H/8L8K3bjorXEqq5Ky0cbofA73rpasHLlJzdRo\n kebpXbsRskDVKN5CCQ/6y8h4uB6w6vtHQJ+Pm87sLt+cr6QRVa2hFdXuQzf7Dr+p44uN\n Tjbf+iifq2KqrSr32176R7MtRFTKmD3+jkl1QglmZk7frMF7qLEr5v8B8RPRR7HQc0uE\n znZISbdlVHgA2tnmSHqh4wXW8I0cG6gw7frige8JfRoK2Om9u/kb+KyYtsVIrEUeiEat\n VKBg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776258625; x=1776863425;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=BZIuC+Ka19PenuknxSmp6m/LwXW1y/APu3C1ALcXZaM=;\n b=hqdx1gKoSXC9ltg+AQRHWZvgHbOug7/ltllrvrTRL1E2BBCZD18OzmURD95OMWZD2K\n s+XS1vnc7eRIpTGcyqgB/havxT6/yi5RQpVTmwXMyrpRlFLSwpVZehRKu1pIy953CYo7\n eZpc/gkcjkT51IeFRyKhUzLFh/fQyKxP0Yie+4qeM3kodWnRjfyiEtjHpSni5YiOFNFj\n lUS9j1FAp9zmMNwItcfykNSZ3n00fWfOkr+sw4jutXKjte4hikrGS0g6fIrZtyc3fZeb\n YZCifUzAfw0lmFaVmGbn5y3FMP3jt4L7FiuTmFlZ9gE2kZV5tCxQ8BsARBZ1gKDhLCYa\n V6Xw==","X-Gm-Message-State":"AOJu0YxGJr9/Z41nWthGWC1PiLYsTJSzms6xLOrSSgK6ZStugvB/9CVm\n jEnBpa4GN0CTVt+ysnbC58/KyS5Z6Gh7vTAaYISNlnZk4fGGY9V3Jp69Oq1+d3IANUZa08+OACp\n KJ9R+qb216KhdfnuhnOlpGnAXxhoPxJk=","X-Gm-Gg":"AeBDietZLL8dJVJvV1YblhbWxrEc60qX+JhEzvKk0YeS1BppFr77ef5t84AyoMCXg2x\n J0VZJLyLf+wFT0DcHm9sithP0o6I1EOb31QjFIDcPEFC06yCePZZQhkKU9d+ibajhFwgHITKJ9s\n Qna5ipRx0iXw5cXe5CU07Y0jJ0OL3SVgnY2oEpfmCqnmGXnLSxHP0OBLHSljAB5/uG60Wloh/q0\n NxbT8d7LAFzFfnVBsAFnfH57zeaOQIid9sx1QuOz/FsuAjl7/1NP8DW0u4Re84PTeNYKVFLe010\n MXPU1MkLnty86QLaxACnNfIthI9QJDfVWgguAIJy","X-Received":"by 2002:a05:7301:6788:b0:2c1:67e1:61c7 with SMTP id\n 5a478bee46e88-2d587b83f71mr11081333eec.11.1776258624814; Wed, 15 Apr 2026\n 06:10:24 -0700 (PDT)","MIME-Version":"1.0","References":"<20260409144639.3610-1-benno.fuenfstueck@neodyme.io>\n <CAJ+F1CKYu4UfJyFJxPYLe9gjQhOD9QA7BrTmBXSCPuCDFgPf1A@mail.gmail.com>\n <CAP-XHHCuVyP=21LyME1KmNB0heRDXAdq7QdCsoVomAK38ZRi7A@mail.gmail.com>","In-Reply-To":"\n <CAP-XHHCuVyP=21LyME1KmNB0heRDXAdq7QdCsoVomAK38ZRi7A@mail.gmail.com>","From":"=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>","Date":"Wed, 15 Apr 2026 17:10:12 +0400","X-Gm-Features":"AQROBzCnlqbLYQOQZW_jbtprnu39zJzjZpszUBENPZWrr1TvhztjU2P6KLK-XUg","Message-ID":"\n <CAJ+F1CJPiXH2Sf2Tqz4QoHeP23bUpMdfi=cPsYYnGoGwWeKJ8w@mail.gmail.com>","Subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","To":"=?utf-8?b?QmVubm8gRsO8bmZzdMO8Y2s=?= <benno.fuenfstueck@neodyme.io>","Cc":"qemu-devel@nongnu.org, \"Michael S. Tsirkin\" <mst@redhat.com>,\n\t=?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n  Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>,\n  Dmitry Osipenko <dmitry.osipenko@collabora.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2607:f8b0:4864:20::132d;\n envelope-from=marcandre.lureau@gmail.com; helo=mail-dy1-x132d.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677704,"web_url":"http://patchwork.ozlabs.org/comment/3677704/","msgid":"<40fb4df5-20a7-49ce-a087-d9c048255d05@rsg.ci.i.u-tokyo.ac.jp>","list_archive_url":null,"date":"2026-04-15T14:30:33","subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","submitter":{"id":90980,"url":"http://patchwork.ozlabs.org/api/people/90980/","name":"Akihiko Odaki","email":"odaki@rsg.ci.i.u-tokyo.ac.jp"},"content":"On 2026/04/15 22:10, Marc-André Lureau wrote:\n> Hi\n> \n> On Wed, Apr 15, 2026 at 5:01 PM Benno Fünfstück\n> <benno.fuenfstueck@neodyme.io> wrote:\n>>\n>> Hi Marc-André,\n>>\n>> On Mon, 13 Apr 2026 at 15:23, Marc-André Lureau <marcandre.lureau@gmail.com> wrote:\n>>>\n>>> Arguably, this is a bug in virgl vrend_renderer_get_cursor_content(),\n>>> since the function doesn't return y0_top it should always return the\n>>> data in the correct orientation.\n>>>\n>>> We may have a temporary workaround in qemu though for older virgl, but\n>>> I think it should be solved there too.\n>>\n>>\n>> Thanks, I didn't know about this. I submitted a MR to virglrenderer now as well to fix it there: https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1611\n>>\n> \n> great\n> \n>> How should I change the patch to make it a temporary fix? Some kind of version gate (but not sure yet in which version of virglrenderer the fix will end up being release)?\n> \n> Since it is not released yet, it's acceptable to not have a\n> VIRGL_CHECK_VERSION yet. Just leave TODO comment so we can later add\n> it when virgl has the fix.\n> \n> thanks\n\nI'm worried that updating virgl silently breaks the fix. I don't think \nthere is an easy way to prevent that.\n\nPerhaps a temporary fix may not be necessary. I don't have a reason to \nbelieve that deploying the virglrenderer-side fix takes longer than \ndeploying the QEMU-side fix.\n\nRegards,\nAkihiko Odaki\n\n> \n>>\n>>>\n>>>\n>>>> ---\n>>>>   hw/display/virtio-gpu-gl.c | 20 +++++++++++++++++++-\n>>>>   1 file changed, 19 insertions(+), 1 deletion(-)\n>>>>\n>>>> diff --git a/hw/display/virtio-gpu-gl.c b/hw/display/virtio-gpu-gl.c\n>>>> index 2b7a41c466..4562d3405e 100644\n>>>> --- a/hw/display/virtio-gpu-gl.c\n>>>> +++ b/hw/display/virtio-gpu-gl.c\n>>>> @@ -33,6 +33,9 @@ static void virtio_gpu_gl_update_cursor_data(VirtIOGPU *g,\n>>>>       VirtIOGPUGL *gl = VIRTIO_GPU_GL(g);\n>>>>       uint32_t width, height;\n>>>>       uint32_t pixels, *data;\n>>>> +    bool y_0_top = true;\n>>>> +    int ret;\n>>>> +    struct virgl_renderer_resource_info info;\n>>>>\n>>>>       if (gl->renderer_state != RS_INITED) {\n>>>>           return;\n>>>> @@ -49,8 +52,23 @@ static void virtio_gpu_gl_update_cursor_data(VirtIOGPU *g,\n>>>>           return;\n>>>>       }\n>>>>\n>>>> +    memset(&info, 0, sizeof(info));\n>>>> +    ret = virgl_renderer_resource_get_info(resource_id, &info);\n>>>> +    if (ret == 0) {\n>>>> +        y_0_top = info.flags & VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP;\n>>>> +    }\n>>>> +\n>>>>       pixels = s->current_cursor->width * s->current_cursor->height;\n>>>> -    memcpy(s->current_cursor->data, data, pixels * sizeof(uint32_t));\n>>>> +    if (y_0_top) {\n>>>> +        memcpy(s->current_cursor->data, data, pixels * sizeof(uint32_t));\n>>>> +    } else {\n>>>> +        uint32_t *dst = s->current_cursor->data;\n>>>> +        for (uint32_t y = 0; y < height; y++) {\n>>>> +            memcpy(dst + y * width,\n>>>> +                   data + (height - 1 - y) * width,\n>>>> +                   width * sizeof(uint32_t));\n>>>> +        }\n>>>> +    }\n>>>>       free(data);\n>>>>   }\n>>>>\n>>>> --\n>>>> 2.50.1 (Apple Git-155)\n>>>>\n>>>>\n>>>> --\n>>>> Neodyme AG\n>>>> Sitz der Gesellschaft / Address: Dirnismaning 55 | Halle 13 |\n>>>> 85748 Garching b.München\n>>>> Postanschrift: Rosenthaler Straße 72a | 10119\n>>>> Berlin\n>>>>\n>>>> Registergericht / Registry court: München, HRB 269168\n>>>> Vorstand /\n>>>> Management Board: Thomas Lambertz | Tobias Madl\n>>>> Aufsichtsratsvorsitzender /\n>>>> Chairman of the Supervisory Board: Hendrik Hofstadt\n>>>>\n>>>>\n>>>>\n>>>>\n>>>>\n>>>\n>>>\n>>> --\n>>> Marc-André Lureau\n>>\n>>\n>> Neodyme AG\n>>\n>> Sitz der Gesellschaft / Address: Dirnismaning 55 | Halle 13 | 85748 Garching b.München\n>> Postanschrift: Rosenthaler Straße 72a | 10119 Berlin\n>> Registergericht / Registry court: München, HRB 269168\n>> Vorstand / Management Board: Thomas Lambertz | Tobias Madl\n>> Aufsichtsratsvorsitzender / Chairman of the Supervisory Board: Hendrik Hofstadt\n> \n> \n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=fail reason=\"key not found in DNS\" header.d=rsg.ci.i.u-tokyo.ac.jp\n header.i=@rsg.ci.i.u-tokyo.ac.jp header.a=rsa-sha256 header.s=rs20250326\n header.b=LnQL3HXd;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fwk9G61BPz1yHM\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 00:31:29 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wD1GY-0000lh-OT; Wed, 15 Apr 2026 10:30:55 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <odaki@rsg.ci.i.u-tokyo.ac.jp>)\n id 1wD1GW-0000lW-O3\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 10:30:52 -0400","from www3579.sakura.ne.jp ([49.212.243.89])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <odaki@rsg.ci.i.u-tokyo.ac.jp>)\n id 1wD1GS-0006ba-6s\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 10:30:52 -0400","from [133.11.54.205] (h205.csg.ci.i.u-tokyo.ac.jp [133.11.54.205])\n (authenticated bits=0)\n by www3579.sakura.ne.jp (8.16.1/8.16.1) with ESMTPSA id 63FEUXl6006163\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO);\n Wed, 15 Apr 2026 23:30:34 +0900 (JST)\n (envelope-from odaki@rsg.ci.i.u-tokyo.ac.jp)"],"DKIM-Signature":"a=rsa-sha256; bh=eNOKKw0SnlBp1MELFohMtMB456mn5aK9rF1MLaI5VJY=;\n c=relaxed/relaxed; d=rsg.ci.i.u-tokyo.ac.jp;\n h=From:Message-ID:To:Subject:Date;\n s=rs20250326; t=1776263434; v=1;\n b=LnQL3HXdqfk6meO7dlAzcsq2RaHSReT64/57AGLteQ7QAuHDy01KdEQNmrIARS9t\n KiWyCuLalSVk7DNqkln84JX2Hlk/R5IqlNtG0lr7bcGLXEFfV9IKOxFTESMgbuxf\n hHmMp5h2AganK6Xdhl7MeNTJZCGRTG5f/WPLBb12JwYF3feyQUYr39NzsgfI9ejs\n 1feToqKxvjZFV0KHVHb2hlYNd67tbdGKBNGjBjpX+DlfbC/7T/XzLg1K4lBxZtmw\n 9p+RuinTmxbiiZEStYJlHI1UzbY33fgrUdqnaD9gDG5AhejZOQdJhCyFyMmBhO9k\n KwmXNqKmyZlpGkSeTd6M0g==","Message-ID":"<40fb4df5-20a7-49ce-a087-d9c048255d05@rsg.ci.i.u-tokyo.ac.jp>","Date":"Wed, 15 Apr 2026 23:30:33 +0900","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] virtio-gpu: fix inverted mouse cursor","To":"=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>,\n\t=?utf-8?b?QmVubm8gRsO8bmZzdMO8Y2s=?= <benno.fuenfstueck@neodyme.io>","Cc":"qemu-devel@nongnu.org, \"Michael S. Tsirkin\" <mst@redhat.com>,\n\t=?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n Dmitry Osipenko <dmitry.osipenko@collabora.com>","References":"<20260409144639.3610-1-benno.fuenfstueck@neodyme.io>\n <CAJ+F1CKYu4UfJyFJxPYLe9gjQhOD9QA7BrTmBXSCPuCDFgPf1A@mail.gmail.com>\n <CAP-XHHCuVyP=21LyME1KmNB0heRDXAdq7QdCsoVomAK38ZRi7A@mail.gmail.com>\n <CAJ+F1CJPiXH2Sf2Tqz4QoHeP23bUpMdfi=cPsYYnGoGwWeKJ8w@mail.gmail.com>","Content-Language":"en-US","From":"Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>","In-Reply-To":"\n <CAJ+F1CJPiXH2Sf2Tqz4QoHeP23bUpMdfi=cPsYYnGoGwWeKJ8w@mail.gmail.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=49.212.243.89;\n envelope-from=odaki@rsg.ci.i.u-tokyo.ac.jp; helo=www3579.sakura.ne.jp","X-Spam_score_int":"-16","X-Spam_score":"-1.7","X-Spam_bar":"-","X-Spam_report":"(-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1,\n DKIM_SIGNED=0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=no autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]