From nobody Mon Apr 6 21:34:19 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1773771723; cv=none; d=zohomail.com; s=zohoarc; b=VREpSHPAhRui3kq6W6lWSDklfOymWqhexr23UR9QaYHjIj5bZpOf58YuAiYboIdGXyNo1mfcphx4gluuWj/DPwCSukU4A3YJVfAu32n5B/Soq6B9HmXlkhec+AhVfMkoMH1jxuCotTfZQRfpl+4aZxSuicCbZupBLInip8ggAqE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773771723; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=530Uj1XxFv4n0VaFgxJ0F6ngR3XyAeVR0aKHfSOSPFg=; b=h9euDClcfl671e1G6uTrR4C3LMAisih6M8E4dO7CY7irXGKLTLQLNFdyjz1lZ9WIGB0o5Rgfq2vLuTqEwwtQVNmpBLxSwLgSXybW7HiU0zEvSw4DpXd18TBY4iOf7d2ZOHl4fmoedYaXkmtLa8glABN8BcOCAG5fVVg6hP6K4so= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1773771723567108.36395402635821; Tue, 17 Mar 2026 11:22:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w2Z2O-000125-H2; Tue, 17 Mar 2026 14:21:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w2Z2M-00011U-5F for qemu-devel@nongnu.org; Tue, 17 Mar 2026 14:21:03 -0400 Received: from mail-dy1-x132b.google.com ([2607:f8b0:4864:20::132b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w2Z2K-0002rs-OZ for qemu-devel@nongnu.org; Tue, 17 Mar 2026 14:21:01 -0400 Received: by mail-dy1-x132b.google.com with SMTP id 5a478bee46e88-2c0e3a2605fso718443eec.0 for ; Tue, 17 Mar 2026 11:21:00 -0700 (PDT) Received: from localhost.localdomain ([143.54.78.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c0e55a53fcsm457367eec.24.2026.03.17.11.20.56 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 17 Mar 2026 11:20:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773771659; x=1774376459; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=530Uj1XxFv4n0VaFgxJ0F6ngR3XyAeVR0aKHfSOSPFg=; b=FQyL3MBqNoalH2fAD5oCrNYYkKc4L0XheWxeKepoq/fJ+vyHagBe/8cXbymqA37zcQ OJRUdufwG6MPZTvSX46Seq/YeKoMhAKeOiyShrSQKr6qUqXM8jSDMMLd14xfMFOHl4yq QHjGm6XpvB6ocTRmNNVRss50moVuKWHqpBnr9liQe1yWB7pm6VvfQEwY5Hwsira406hF UyNW1OHmwUHmMigfxDqdZjdXful/1rKco7b5+HqM83HVw8hww1yty0W3ZNKv6b7vpmTP L5rv8/3VsWlhUSvIjXGzW6MshU5JdAX0aQ8cerw1eqPFUv4HjG4jJIFmUgXBTOcJkFoS gi0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773771659; x=1774376459; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=530Uj1XxFv4n0VaFgxJ0F6ngR3XyAeVR0aKHfSOSPFg=; b=LgIDe0yxN70b5k4GGxKlK3mlj18Qzh1yzQWDbGlFxo0v6welWRrpvnFVDpdoF2w3R9 RaVjDtTMoQB98X4Aetmj0udXVab01JuKLiiHh8YI2sz1UatBGJk1b7KWNcPfnszMOt2/ wtT7zDUfeydRw/3eITLGOEORFhVEnKLbP1AcC+8cGsDPhE0Uk4VO2lRmCBGPNbR8fYXq zm+9RLu0lFO8TJDvTvmYJDrJ0R8CMT8oCIRn2zJe04GqEru8BQBb+0ZPF9i5bAp28nC9 P1oi6DWPFrfJElhQc659RjHn7s5pa3T/5/PdJBjl6RRveXFTZM/kOTdVjNuoNeCtCX+r ZLhg== X-Gm-Message-State: AOJu0YwNxlyEGbFM2GsBHoXLfgV3Nszg4be6TR76rBOJ9nV96ViJ/25K BWeIJPYWhlFpWyMEJNb9FC+zVtRSuftUJCYP2efPjARWZ4lEEMIXcDS3BHrRo3Pu X-Gm-Gg: ATEYQzxKD9eBXYdlaH543xI97MMI1xtEIMI+9itJrk2daotA1BkBihhBVmuK0Qu82J6 T/ykkqRKcPctHWHP3JpbHxRLBn+9j4+8dJJbO0aX5YnUvUmKXItwUiALpimbEEBrUAFOR/acvnI RuAFeIXRTBoYv0o/sqj/I74pyT+Q12SBefsNtbwDMBw5MKq7bG90H31luRGmUpmO/B7HgJWOGar r77W01YY3IceO3PmqpihOURuyUKXR72NCrFm2OqyFlCb/1TmmFlGAdNaHyDVBTOcLQXso+OLoZJ O7ombCy4WXnGI+cQvF5Wc+4rIsLbD6TmUAneJqmwpy7xBG53245kZh7U3veadT0oAsMdAhXGVWa CROsTNY3mXxfwnugVYQFVz5fJ53GaB4dppgptJjTfNw/aq2g7aiAF7BhwBZVJB8AuD9+oyYWgak sE36bm34ODD9qZE9F/FkGN2ptds9/ZeEZ5M9qQvpZ8wPCYQixbI8EGUM0dYmuFIpU= X-Received: by 2002:a05:7301:1699:b0:2b8:30b8:58cf with SMTP id 5a478bee46e88-2c0e5010124mr237601eec.8.1773771659097; Tue, 17 Mar 2026 11:20:59 -0700 (PDT) From: Lucas Amaral To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, alex.bennee@linaro.org, dmitry.osipenko@collabora.com, marcandre.lureau@redhat.com, visitorckw@gmail.com, Lucas Amaral Subject: [PATCH v5 1/4] ui: introduce GRAPHIC_FLAGS_VK for Vulkan scanout Date: Tue, 17 Mar 2026 15:20:46 -0300 Message-ID: <20260317182049.33848-2-lucaaamaral@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260317182049.33848-1-lucaaamaral@gmail.com> References: <20260317182049.33848-1-lucaaamaral@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::132b; envelope-from=lucaaamaral@gmail.com; helo=mail-dy1-x132b.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773771726848154100 Content-Type: text/plain; charset="utf-8" Define GRAPHIC_FLAGS_VK (bit 2) in the console flags for future Vulkan scanout support. The compatibility check currently returns an error indicating the feature is not yet implemented. This prepares the display framework for direct Vulkan scanout alongside the existing GL and DMABUF paths. Signed-off-by: Lucas Amaral --- include/ui/console.h | 2 ++ ui/console.c | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/include/ui/console.h b/include/ui/console.h index 3677a9d3..19ac06e0 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -361,6 +361,8 @@ enum { GRAPHIC_FLAGS_GL =3D 1 << 0, /* require a console/display with DMABUF import */ GRAPHIC_FLAGS_DMABUF =3D 1 << 1, + /* TODO: require a console/display with Vulkan scanout */ + GRAPHIC_FLAGS_VK =3D 1 << 2, }; =20 typedef struct GraphicHwOps { diff --git a/ui/console.c b/ui/console.c index f445db11..424ee195 100644 --- a/ui/console.c +++ b/ui/console.c @@ -594,6 +594,13 @@ static bool console_compatible_with(QemuConsole *con, return false; } =20 + if (flags & GRAPHIC_FLAGS_VK) { + /* TODO: check for Vulkan scanout support in display backend */ + error_setg(errp, + "Vulkan scanout not yet implemented"); + return false; + } + return true; } =20 --=20 2.52.0 From nobody Mon Apr 6 21:34:19 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1773771699; cv=none; d=zohomail.com; s=zohoarc; b=DyZDnIzcuVw6TtaLR4BjH3k2WlHkYdmP543CtGNFouwi0u3BOliw+8s3dwdsD70Ykau+UEsXApdEjPdthkSXFEsHmIYPMTQZ4W5nTOB5bspqERYNy35boK4kO5Y4hCs0EJ4eWtDqVO9FzJlFKmCg+4k5H0/d0VZnl8wX7jJgt9g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773771699; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GQQWpfCkfhdY6LwJcgzOBI0ARhYIsLB8CNzLDt0g+Qg=; b=P2oJXri3MGGrFrx7zr5CiTDN6SjYGVNzreasichjqSrShZHXtn4ZuWOArdbJLfCw2sfQuoEy0OT6ZamfFBSKiXyfg+SpzVwoUHI1pefboxHEWJyaSofo6O8GOJwrsHwGV8geC6v5O+BkL9A8yCiJqeAwHw8MQUE7OSwbKsXujB0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1773771699434879.8406151377063; Tue, 17 Mar 2026 11:21:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w2Z2U-00013o-3y; Tue, 17 Mar 2026 14:21:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w2Z2R-00012p-FC for qemu-devel@nongnu.org; Tue, 17 Mar 2026 14:21:07 -0400 Received: from mail-dy1-x1330.google.com ([2607:f8b0:4864:20::1330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w2Z2P-0002sT-2d for qemu-devel@nongnu.org; Tue, 17 Mar 2026 14:21:06 -0400 Received: by mail-dy1-x1330.google.com with SMTP id 5a478bee46e88-2bdd40d3c61so5479869eec.1 for ; Tue, 17 Mar 2026 11:21:04 -0700 (PDT) Received: from localhost.localdomain ([143.54.78.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c0e55a53fcsm457367eec.24.2026.03.17.11.20.59 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 17 Mar 2026 11:21:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773771662; x=1774376462; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GQQWpfCkfhdY6LwJcgzOBI0ARhYIsLB8CNzLDt0g+Qg=; b=hTnvDrt7W2yilqo7pHolCWe7iUkgobSNgHpJ1Qb0VJjd3COGH/pxJMyx8hIRhUM7Hg ueOO5ksklyF4kHYyr02uRFhhKoRCWFIeWALdXB4a72bAY5Djapi+0rW/NItKTKBvooFc kVXSVmgXYDCuLLq2b4PzDkZkVWqqGHOhXNzkQKfLPG3uyGqJg3OYpeNni+dXI978Oy1j ar0ChjACt0G8/BXC1290pf3zawPsrp1vxUDzITpuT0Ln0f7yMwaIsZ1MCoVgTZ0cPC2z Td0wy0m7lGzpYmcv8v7tP96pntGepJE84PtW+t5JVgNTAqjA4Buzxo8Rc1ZBtvmaioww 9KPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773771662; x=1774376462; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=GQQWpfCkfhdY6LwJcgzOBI0ARhYIsLB8CNzLDt0g+Qg=; b=pXGI8oTYXDVMZEtswFTm29MBClhvf1NZizcLfvHVOo3oI6a4fJUAQQZmF+Lx4IUUL7 lANJkJQTF+JWJVPxGXTwWcZsyJJZkNY0fmpqOptIFZ4KdZHSicRjVSPYwSxUa5a8qcQP L2Ub2MRjdWymZOxA4OopidT+2vv1/EfxCjnEQhZvhecc/YV2bwiqlUzIR8UB9vzhrEUW ZzXrIWuit+XlpJVawKZJb8lxsszp95Om3adtZqL3R0Gb2iLLd2ZIPtXow/TjcIZGgGvc p30sALvr7I1p6GqK3vTuoFAHDmcrv0yC8DUvWR3tGl3WFYFJWIDzC75PbfdAOFMUXuOD DCAA== X-Gm-Message-State: AOJu0YyveRPV4yiSxsjVsDjPmaWjRAvTqLivTeG5bVQo6+JhXjVCbMzf 1iL1vpSl0/STl0YaQZ6LnUoQaLCjtR+FyhRUKfSLVAOQk6BBSajPpxOLt1hDt08V X-Gm-Gg: ATEYQzxskr0fpd7EyZAdfJbBv8SQayYjX51kajpM9oQ+et0QqxtGkHhTGMn14TI1DPC Z/yN3rjvgg/TLLEDYkzHlwefhO7chrgz5hvluiJPHDUK5tzP0hhsZSs6u7Zn3TQW+ybRAeWXl7a DFHVXgBaqDVWanRwiC+x0A9thAsCy4QOYnxj7eiwZj8/k2wsIMzQXJU+Oi+XRTEVTSW66Gt6ndG 6+XviFpEAwjJ5V0rFx9E/z7Mg8W2a1adwH1BTn3crppGNca6lHWsqqSgS0iSh5c5jMcZgq5kahi /9vhcDBJf+q4OPKlz2VS6mCyCJtpgRrFU8TxPbzVE4mahAhWQDkBYiV63jikjX8TFkXjdQGxe+a 7DzASyBcGueBgP7E6o/nFlbqNRYWrWCaaMk6LpE4cLgSLvcowtUa+rLpCDDIA6FPH1Rjq6ea8kA J2no3pkH3BAbAac6+vpcXEbINPv/aK8GtRUMHx1VV/3B2pzM7GaIUI+7vtNgk5mXE= X-Received: by 2002:a05:693c:2801:b0:2be:1f56:ed21 with SMTP id 5a478bee46e88-2c0e4f9a462mr112365eec.7.1773771662491; Tue, 17 Mar 2026 11:21:02 -0700 (PDT) From: Lucas Amaral To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, alex.bennee@linaro.org, dmitry.osipenko@collabora.com, marcandre.lureau@redhat.com, visitorckw@gmail.com, Lucas Amaral Subject: [PATCH v5 2/4] virtio-gpu: add VIRTIO_GPU_F_BLOB_ALIGNMENT header definitions Date: Tue, 17 Mar 2026 15:20:47 -0300 Message-ID: <20260317182049.33848-3-lucaaamaral@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260317182049.33848-1-lucaaamaral@gmail.com> References: <20260317182049.33848-1-lucaaamaral@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1330; envelope-from=lucaaamaral@gmail.com; helo=mail-dy1-x1330.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773771701848158500 Content-Type: text/plain; charset="utf-8" Define VIRTIO_GPU_F_BLOB_ALIGNMENT (feature bit 5) and the blob_alignment field in virtio_gpu_config per the OASIS virtio specification. Signed-off-by: Lucas Amaral --- include/standard-headers/linux/virtio_gpu.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/standard-headers/linux/virtio_gpu.h b/include/standard= -headers/linux/virtio_gpu.h index 00cd3f04..252704e7 100644 --- a/include/standard-headers/linux/virtio_gpu.h +++ b/include/standard-headers/linux/virtio_gpu.h @@ -64,6 +64,11 @@ * context_init and multiple timelines */ #define VIRTIO_GPU_F_CONTEXT_INIT 4 +/* + * VIRTIO_GPU_F_BLOB_ALIGNMENT: device advertises blob_alignment + * in virtio_gpu_config (OASIS virtio-spec feature bit 5) + */ +#define VIRTIO_GPU_F_BLOB_ALIGNMENT 5 =20 enum virtio_gpu_ctrl_type { VIRTIO_GPU_UNDEFINED =3D 0, @@ -365,6 +370,7 @@ struct virtio_gpu_config { uint32_t events_clear; uint32_t num_scanouts; uint32_t num_capsets; + uint32_t blob_alignment; }; =20 /* simple formats for fbcon/X use */ --=20 2.52.0 From nobody Mon Apr 6 21:34:19 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1773771716; cv=none; d=zohomail.com; s=zohoarc; b=AZZRBOrSPpSd3xDun1fzuxXUPgkOuoJ7X+vkEkGzZpDTJholrPgcMEc3E2YHgJvduwp8DMT3mkLeQCVCf44QIFaXJh2uJ7eaJQ6RJRoCO/ukSG1EIHTGVuxuQVXXLkvGRQSd7rwunlug/NPsoDzmh9O/tRbG66KwpiDi8iK8riw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773771716; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZI53HZkSc7DNY29qJq30SopvLPnb6dODYs8Z/mK2TEw=; b=VITq5QIngOHupVzTzcLE1bpjhNO6AeaNi9GJuwRPkeMHhV+Ps1p6E9mnZF7bw7YQpMfAJMNEjbUPSZP1/FZrrh/fkCj9FRANhBnjwbbbPGDECMyRH/t2BvTWPcK+yFiYeVKAIbAJjKf0PPgnakP00hMgh8v2veZcxiQ6AI4oZB8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1773771716270733.7898041632939; Tue, 17 Mar 2026 11:21:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w2Z2X-000191-3G; Tue, 17 Mar 2026 14:21:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w2Z2V-00017G-C4 for qemu-devel@nongnu.org; Tue, 17 Mar 2026 14:21:11 -0400 Received: from mail-dy1-x132c.google.com ([2607:f8b0:4864:20::132c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w2Z2R-0002ss-GB for qemu-devel@nongnu.org; Tue, 17 Mar 2026 14:21:10 -0400 Received: by mail-dy1-x132c.google.com with SMTP id 5a478bee46e88-2c0bb213b16so3481621eec.0 for ; Tue, 17 Mar 2026 11:21:07 -0700 (PDT) Received: from localhost.localdomain ([143.54.78.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c0e55a53fcsm457367eec.24.2026.03.17.11.21.02 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 17 Mar 2026 11:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773771666; x=1774376466; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZI53HZkSc7DNY29qJq30SopvLPnb6dODYs8Z/mK2TEw=; b=IOeZsM4RbY77aGPaccgcfycsnmNISXzS29e6yoLVv0IQzEgS0o+R9TNm0bRK24pkHI 4h0r8GPIuYyzAWeP67JvdYDKkXzrMdelaRhdJumWbk2B523CXvNy+bCb1Ap71qhrlbXC 9MOPrS04ag3bS/kPBu1xZz34knj5k3eVGetMGeg04s78S/T+M+URyXXKy5sws3/8H/5l KoI5Z8BjsijJfatjFBJ7xtseukq4WQydLWveLKry/dymCQGpOHgPJddxK74BXjq00Uhd UGdHXSygO2zwLU32AAS2CaNGTb0YzFxnf0IkKQv4mdrwbgBUbJiDkitGIQlaBP9u8RoY c4/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773771666; x=1774376466; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZI53HZkSc7DNY29qJq30SopvLPnb6dODYs8Z/mK2TEw=; b=eU2AyM1LelrrleAnhUfY5SQTeYxzEFrUXUc5ZWLCRfRjtHRoGzVYiOPA+TeK4HtsZz /FjeLog3/fkzJzo8vGzgqxoC7wy/Ey10rntpfXzc/HoeGUdfNB6jnMR9sZRYmZ3EgXzA uDaRNELfhziIF5tuUCe2mdl9cE1mQa+fejXmxdhpzOSu2Qb4CZVn+1HMQLGuHMTmteOi N6raY88isHy1ZYolRqQGbkMcLXT3DeGcpjYkey7n130xQrZf3LoKBbQXNB/YkA1ErmpT SuPx/awLSxcWboIRmtAEf1owUoUu58J15DErozNqkmO5sj8g5fuEcpR4OsoKyueruE1X Dzhw== X-Gm-Message-State: AOJu0YwDZbbbzGBPVFUMVGWbgAJSfI7FRvirp/+U+qxqGqVzrTQPKKrU EEWQQetyVnJBXMwVjl81kRUcQsIM/UERGtyiJhURzHyRWdtaBWxntt6jeXUuS3Rq X-Gm-Gg: ATEYQzw3jgDHxPflR53p6SfZf5Ycqqh8bmJ7WXPOHKlAvlRI3NSOSd1wt9NXN4sMBYb +tYFEvXIr+wDp8WsuLje5dYxFKigQY+B4qL3BxtxZo9o/uuto5xidHAsFoHH+gtr7rIewVNYali dP9TwIskuxWojKZxsZRouvWH53fJEl42uEaYm8QYIiNGJv6TK7vczORaDRJlgSniQ7qTiLVJ06I PNJvGskQ4Tf1yTPc4vXYfFwU+C78QyR3g5biizaLLKtNNbLH9XbtETRZ+ZsyxmVmJeu+04b/f+G jEMQKEeoYFD403lOBKYRaeqynvkS3sTkWax3Iq3yVBORjKXHY+cPTi2sFgl22ChJhKRDyL6r8CH xXF9XXifo6/KUDT2ot0/cQO7oD2COH2lZwmGUXp0L3BkutpCNke8hTDaTyKHBJHSkNSJlK7XX2b L+RjY8UM8LO/OSeMitjzcWJRTkmPIrFKnsZfY7fXj8QwcXoFiGalpx X-Received: by 2002:a05:7301:6790:b0:2be:6f30:f2f9 with SMTP id 5a478bee46e88-2c0e5061098mr208253eec.26.1773771665585; Tue, 17 Mar 2026 11:21:05 -0700 (PDT) From: Lucas Amaral To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, alex.bennee@linaro.org, dmitry.osipenko@collabora.com, marcandre.lureau@redhat.com, visitorckw@gmail.com, Lucas Amaral Subject: [PATCH v5 3/4] virtio-gpu: decouple Venus from CONFIG_OPENGL Date: Tue, 17 Mar 2026 15:20:48 -0300 Message-ID: <20260317182049.33848-4-lucaaamaral@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260317182049.33848-1-lucaaamaral@gmail.com> References: <20260317182049.33848-1-lucaaamaral@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::132c; envelope-from=lucaaamaral@gmail.com; helo=mail-dy1-x132c.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773771717690158501 Venus (virtio-gpu Vulkan context) currently requires an OpenGL display backend due to build-time and runtime coupling. On macOS, no OpenGL display backend exists. Remove the opengl.found() build requirement for the virtio-gpu-gl module; virglrenderer provides Venus independently of OpenGL. Gate GL-specific code paths behind CONFIG_OPENGL and display_opengl: - Only advertise VIRGL/VIRGL2 capsets when display_opengl is set - Only pass VIRGL_RENDERER_NO_VIRGL when !display_opengl with Venus - Null out GL context callbacks when no GL display is available - Route 2D display commands to the software renderer (pixman) when Venus runs without GL (venus no-GL mode) - Allow Venus to bypass the OpenGL display check at device realize Signed-off-by: Lucas Amaral --- hw/display/meson.build | 8 ++-- hw/display/virtio-gpu-base.c | 15 ++++++- hw/display/virtio-gpu-gl.c | 6 ++- hw/display/virtio-gpu-virgl.c | 85 ++++++++++++++++++++++++++++++----- 4 files changed, 98 insertions(+), 16 deletions(-) diff --git a/hw/display/meson.build b/hw/display/meson.build index 90e6c041..509479e7 100644 --- a/hw/display/meson.build +++ b/hw/display/meson.build @@ -76,9 +76,9 @@ if config_all_devices.has_key('CONFIG_VIRTIO_GPU') virtio_gpu_ss.add(when: 'CONFIG_VHOST_USER_GPU', if_true: files('vhost-u= ser-gpu.c')) hw_display_modules +=3D {'virtio-gpu': virtio_gpu_ss} =20 - if virgl.found() and opengl.found() + if virgl.found() virtio_gpu_gl_ss =3D ss.source_set() - virtio_gpu_gl_ss.add(when: ['CONFIG_VIRTIO_GPU', virgl, opengl], + virtio_gpu_gl_ss.add(when: ['CONFIG_VIRTIO_GPU', virgl], if_true: [files('virtio-gpu-gl.c', 'virtio-gpu-vi= rgl.c'), pixman, virgl]) hw_display_modules +=3D {'virtio-gpu-gl': virtio_gpu_gl_ss} endif @@ -99,9 +99,9 @@ if config_all_devices.has_key('CONFIG_VIRTIO_PCI') if_true: files('vhost-user-gpu-pci.c')) hw_display_modules +=3D {'virtio-gpu-pci': virtio_gpu_pci_ss} =20 - if virgl.found() and opengl.found() + if virgl.found() virtio_gpu_pci_gl_ss =3D ss.source_set() - virtio_gpu_pci_gl_ss.add(when: ['CONFIG_VIRTIO_GPU', 'CONFIG_VIRTIO_PC= I', virgl, opengl], + virtio_gpu_pci_gl_ss.add(when: ['CONFIG_VIRTIO_GPU', 'CONFIG_VIRTIO_PC= I', virgl], if_true: [files('virtio-gpu-pci-gl.c'), pixma= n]) hw_display_modules +=3D {'virtio-gpu-pci-gl': virtio_gpu_pci_gl_ss} endif diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c index cb76302e..cc9704cd 100644 --- a/hw/display/virtio-gpu-base.c +++ b/hw/display/virtio-gpu-base.c @@ -18,6 +18,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/display/edid.h" +#include "system/system.h" #include "trace.h" #include "qapi/qapi-types-virtio.h" =20 @@ -157,7 +158,18 @@ virtio_gpu_get_flags(void *opaque) VirtIOGPUBase *g =3D opaque; int flags =3D GRAPHIC_FLAGS_NONE; =20 - if (virtio_gpu_virgl_enabled(g->conf)) { + if (virtio_gpu_venus_enabled(g->conf)) { + /* TODO: set GRAPHIC_FLAGS_VK for direct Vulkan scanout */ + } + + /* + * TODO: virtio_gpu_virgl_enabled() checks VIRTIO_GPU_FLAG_VIRGL_ENABL= ED + * which is set for both OpenGL (VIRGL) and Vulkan (Venus) backends. + * This condition should ideally use a dedicated OpenGL-only flag. For + * now, display_opengl correctly gates GL scanout since Venus leaves it + * at 0. + */ + if (virtio_gpu_virgl_enabled(g->conf) && display_opengl) { flags |=3D GRAPHIC_FLAGS_GL; } =20 @@ -273,6 +285,7 @@ virtio_gpu_base_get_features(VirtIODevice *vdev, uint64= _t features, } if (virtio_gpu_blob_enabled(g->conf)) { features |=3D (1 << VIRTIO_GPU_F_RESOURCE_BLOB); + features |=3D (1 << VIRTIO_GPU_F_BLOB_ALIGNMENT); } if (virtio_gpu_context_init_enabled(g->conf)) { features |=3D (1 << VIRTIO_GPU_F_CONTEXT_INIT); diff --git a/hw/display/virtio-gpu-gl.c b/hw/display/virtio-gpu-gl.c index 2b7a41c4..1a95e6a7 100644 --- a/hw/display/virtio-gpu-gl.c +++ b/hw/display/virtio-gpu-gl.c @@ -124,7 +124,9 @@ static void virtio_gpu_gl_device_realize(DeviceState *q= dev, Error **errp) return; } =20 - if (!display_opengl) { + if (virtio_gpu_venus_enabled(g->parent_obj.conf)) { + /* Venus uses Vulkan in the render server, no GL needed */ + } else if (!display_opengl) { error_setg(errp, "The display backend does not have OpenGL support enabl= ed"); error_append_hint(errp, @@ -245,4 +247,6 @@ static void virtio_register_types(void) type_init(virtio_register_types) =20 module_dep("hw-display-virtio-gpu"); +#ifdef CONFIG_OPENGL module_dep("ui-opengl"); +#endif diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c index b7a2d160..2f9700e0 100644 --- a/hw/display/virtio-gpu-virgl.c +++ b/hw/display/virtio-gpu-virgl.c @@ -19,8 +19,10 @@ #include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-gpu-bswap.h" #include "hw/virtio/virtio-gpu-pixman.h" - +#include "system/system.h" +#ifdef CONFIG_OPENGL #include "ui/egl-helpers.h" +#endif =20 #include =20 @@ -50,6 +52,16 @@ struct virtio_gpu_virgl_resource { void *map_fixed; }; =20 +/* + * Venus no-GL mode: Venus is enabled but no OpenGL display is available. + * Display commands use software (pixman) rendering; Venus/3D commands + * go through the virglrenderer render server. + */ +static bool virtio_gpu_venus_nogl(VirtIOGPU *g) +{ + return virtio_gpu_venus_enabled(g->parent_obj.conf) && !display_opengl; +} + static struct virtio_gpu_virgl_resource * virtio_gpu_virgl_find_resource(VirtIOGPU *g, uint32_t resource_id) { @@ -63,7 +75,7 @@ virtio_gpu_virgl_find_resource(VirtIOGPU *g, uint32_t res= ource_id) return container_of(res, struct virtio_gpu_virgl_resource, base); } =20 -#if VIRGL_RENDERER_CALLBACKS_VERSION >=3D 4 +#if VIRGL_RENDERER_CALLBACKS_VERSION >=3D 4 && defined(CONFIG_OPENGL) static void * virgl_get_egl_display(G_GNUC_UNUSED void *cookie) { @@ -1032,6 +1044,45 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g, =20 VIRTIO_GPU_FILL_CMD(cmd->cmd_hdr); =20 + /* + * Venus no-GL mode: route 2D display commands to the base software + * renderer (pixman). The guest kernel always uses 2D commands for + * display framebuffers even with VIRGL enabled; Venus/3D commands + * go through the virglrenderer render server as usual. + */ + if (virtio_gpu_venus_nogl(g)) { + switch (cmd->cmd_hdr.type) { + case VIRTIO_GPU_CMD_RESOURCE_CREATE_2D: + case VIRTIO_GPU_CMD_SET_SCANOUT: + case VIRTIO_GPU_CMD_RESOURCE_FLUSH: + case VIRTIO_GPU_CMD_TRANSFER_TO_HOST_2D: + case VIRTIO_GPU_CMD_GET_DISPLAY_INFO: + case VIRTIO_GPU_CMD_GET_EDID: + virtio_gpu_simple_process_cmd(g, cmd); + return; + case VIRTIO_GPU_CMD_RESOURCE_UNREF: + case VIRTIO_GPU_CMD_RESOURCE_ATTACH_BACKING: + case VIRTIO_GPU_CMD_RESOURCE_DETACH_BACKING: { + /* + * Both 2D (simple) and blob (virgl) resources share g->reslis= t. + * Check if virglrenderer owns the resource to pick + * the right handler. + */ + struct virtio_gpu_resource_unref hdr; + struct virgl_renderer_resource_info info; + VIRTIO_GPU_FILL_CMD(hdr); + if (virgl_renderer_resource_get_info(hdr.resource_id, &info)) { + /* Not in virglrenderer =E2=80=94 it's a 2D software resou= rce */ + virtio_gpu_simple_process_cmd(g, cmd); + return; + } + break; /* virglrenderer owns it =E2=80=94 fall through */ + } + default: + break; + } + } + virgl_renderer_force_ctx_0(); switch (cmd->cmd_hdr.type) { case VIRTIO_GPU_CMD_CTX_CREATE: @@ -1433,6 +1484,7 @@ static int virtio_gpu_virgl_init(VirtIOGPU *g) uint32_t flags =3D 0; VirtIOGPUGL *gl =3D VIRTIO_GPU_GL(g); =20 +#ifdef CONFIG_OPENGL #if VIRGL_RENDERER_CALLBACKS_VERSION >=3D 4 if (qemu_egl_display) { virtio_gpu_3d_cbs.version =3D 4; @@ -1450,9 +1502,14 @@ static int virtio_gpu_virgl_init(VirtIOGPU *g) flags |=3D VIRGL_RENDERER_D3D11_SHARE_TEXTURE; } #endif +#endif /* CONFIG_OPENGL */ #if VIRGL_VERSION_MAJOR >=3D 1 if (virtio_gpu_venus_enabled(g->parent_obj.conf)) { - flags |=3D VIRGL_RENDERER_VENUS | VIRGL_RENDERER_RENDER_SERVER; + flags |=3D VIRGL_RENDERER_VENUS + | VIRGL_RENDERER_RENDER_SERVER; + if (!display_opengl) { + flags |=3D VIRGL_RENDERER_NO_VIRGL; + } } if (virtio_gpu_drm_enabled(g->parent_obj.conf)) { flags |=3D VIRGL_RENDERER_DRM; @@ -1475,6 +1532,12 @@ static int virtio_gpu_virgl_init(VirtIOGPU *g) } #endif =20 + if (!display_opengl) { + virtio_gpu_3d_cbs.create_gl_context =3D NULL; + virtio_gpu_3d_cbs.destroy_gl_context =3D NULL; + virtio_gpu_3d_cbs.make_current =3D NULL; + } + ret =3D virgl_renderer_init(g, flags, &virtio_gpu_3d_cbs); if (ret !=3D 0) { error_report("virgl could not be initialized: %d", ret); @@ -1546,14 +1609,16 @@ GArray *virtio_gpu_virgl_get_capsets(VirtIOGPU *g) =20 capset_ids =3D g_array_new(false, false, sizeof(uint32_t)); =20 - /* VIRGL is always supported. */ - virtio_gpu_virgl_add_capset(capset_ids, VIRTIO_GPU_CAPSET_VIRGL); + /* OpenGL: VIRGL/VIRGL2 require a GL display backend */ + if (display_opengl) { + virtio_gpu_virgl_add_capset(capset_ids, VIRTIO_GPU_CAPSET_VIRGL); =20 - virgl_renderer_get_cap_set(VIRTIO_GPU_CAPSET_VIRGL2, - &capset_max_ver, - &capset_max_size); - if (capset_max_ver) { - virtio_gpu_virgl_add_capset(capset_ids, VIRTIO_GPU_CAPSET_VIRGL2); + virgl_renderer_get_cap_set(VIRTIO_GPU_CAPSET_VIRGL2, + &capset_max_ver, + &capset_max_size); + if (capset_max_ver) { + virtio_gpu_virgl_add_capset(capset_ids, VIRTIO_GPU_CAPSET_VIRG= L2); + } } =20 if (virtio_gpu_venus_enabled(g->parent_obj.conf)) { --=20 2.52.0 From nobody Mon Apr 6 21:34:19 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1773771699; cv=none; d=zohomail.com; s=zohoarc; b=X+0ijMWMBc1XaKBMe4CwAUjnq7j4z9DjtxiBpCqWxAkmIrAhvFsJrJZZ7vLHIxtJAvZ42CLA2+u2PqjRAzSmG9htsY0vhk++rybFBmMW24sf/5XcaJPP5Y1oHhDyIEW3ZnnO9r0Br/x4vcqD9CQQRfdS+va5J+qLnvEj6Pq4Lp4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773771699; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5MzRVprj61Gyv11VqdvdVphNrBFaUcy37KCZX6QpUas=; b=H/VKVWw9+GIgYeB1uo4pEKDj0+FM7eLDHrRYHs84qLyRLTBP7QTpWIvh1Bwgt2sCzs5QTpDT+c+JZmU10+hBcKgXZ23fliGJRcWQ+R98flbZA6O9kM53J2DxVQUjm/s97tadp5vufbuh2Krl1FnHAUP9ELiCA6PRMWQNBm1sT58= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1773771699611914.1655300376275; Tue, 17 Mar 2026 11:21:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w2Z2Y-0001BA-LX; Tue, 17 Mar 2026 14:21:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w2Z2W-000198-Fz for qemu-devel@nongnu.org; Tue, 17 Mar 2026 14:21:13 -0400 Received: from mail-dy1-x132f.google.com ([2607:f8b0:4864:20::132f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w2Z2V-0002tB-5G for qemu-devel@nongnu.org; Tue, 17 Mar 2026 14:21:12 -0400 Received: by mail-dy1-x132f.google.com with SMTP id 5a478bee46e88-2bd9a485bd6so595105eec.1 for ; Tue, 17 Mar 2026 11:21:10 -0700 (PDT) Received: from localhost.localdomain ([143.54.78.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c0e55a53fcsm457367eec.24.2026.03.17.11.21.05 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 17 Mar 2026 11:21:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773771669; x=1774376469; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5MzRVprj61Gyv11VqdvdVphNrBFaUcy37KCZX6QpUas=; b=hq+XcBb2uLGD8fOVHzmgy1ly4FD1TwlBaf2WA7Z7WE8F/NUYyWv4LqHfpJR4SNwkuA bFmD7jbmoEiHsyHwrgZNr5NApohTEC3Pd0s10vEAtkNmTvLiuHTTwFgEvxLTHcBQ/45Z 1O6mTOsgDhcl7FfSHTUHj1fOzqP5ZrDz3CRbn2d+UdKyM3OkK/e4375++9oeyJWIu7bN I38WaUmL1jEOvhHqIcEqsVYFRzg7dWjuFnZKdYHCedznvlH8OIF9jZFcC5xpA26DylPF evaS0t29kCr4Ma1a4yqEo+SlY81I2K34flnfBmkwq2PTFnsXxqh5qUMf6+HkwBOiUHIx 6E2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773771669; x=1774376469; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5MzRVprj61Gyv11VqdvdVphNrBFaUcy37KCZX6QpUas=; b=IefCCkoWvm5u2tT/nZAZqxlMUfPIoi0EucL1ewV8oHe2TT+lfBrpVC2qvSpucwpEM5 IOF77Zma6Mj9fYyP97iIH3jga1283ZyWmmillDn3Db3WfwjhBgrDzAJ3Nmxerrc3NV6U rT7zorurAQxfxpm6G0xe5xH6Qz1N8Dtswcs7cxgXiwiwVuW1IuORV9LvfpDlcDVkqxOh yEDWRgrsAe5k2UJ0ofIq7TM1iYc8svADMJREBqWpXaG9wz1Y+ymy1fG0+HYCN7HyP8IM LR1nQWVuP9hImV1YJqXwVPWMSiqtYrabx0BIOCDUYjczN+4r/1WyK5gMVWtMQXOblhoY r6nw== X-Gm-Message-State: AOJu0Yy5ERzCW2d5essNGgawRmqbDucZ4IZhvxVq3ZaAQA+87brupXwn OahBTHhjTpnTCyvYgDZws7liY9P9yua8Z5iFZEHrnpzIExboe9jk6IDC8ZEJoL+S X-Gm-Gg: ATEYQzw9i+jDzfXxAUmoiFFz1A0pp7N3ZM6n7nUAx5Fu9tEJXzPSXGQqX0b0R0tzOrz U35PZMdiieRKKeo0igTWNSX2zhDr3tOlGXI0sl/Az130B4MAtgnj6HZQPTwguymzcL0bdC9t2+1 bM2nGTrGONSetOzbsvc2Yn1usGb6uRp3Ln3Eguv980ruYaiYtGsT1z1Xzk2Ard0X/9wdoPYtx+6 htuZ12+ZhsZ9kC7CGgSqnOoIpRC/ajFHyumHPGsZyJEmy+xIxA743AvNLS0ahyHGaZ+xaflsF32 pAs49NtsydTPq38Ey244R5mjxUZSDO54Otlwc5balsG63iqYR3EZF+q/6FBP3idQMMroDQkU8L8 wl/oxHI7E9JhBNgugs6YEg7ZKKrtFQg6V2O1zBgTaAnH6hBg4lBMkeo8yr926QgHBXiOMt8r4aE 7w5zL0EwDAq/bstwSWRAVhBSzYJbXw0DkCkM2NwRT9yRi3kOQD5pmf X-Received: by 2002:a05:7300:1496:b0:2be:142f:d499 with SMTP id 5a478bee46e88-2c0e50206damr253935eec.16.1773771668840; Tue, 17 Mar 2026 11:21:08 -0700 (PDT) From: Lucas Amaral To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, alex.bennee@linaro.org, dmitry.osipenko@collabora.com, marcandre.lureau@redhat.com, visitorckw@gmail.com, Lucas Amaral Subject: [PATCH v5 4/4] virtio-gpu: advertise VIRTIO_GPU_F_BLOB_ALIGNMENT Date: Tue, 17 Mar 2026 15:20:49 -0300 Message-ID: <20260317182049.33848-5-lucaaamaral@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260317182049.33848-1-lucaaamaral@gmail.com> References: <20260317182049.33848-1-lucaaamaral@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::132f; envelope-from=lucaaamaral@gmail.com; helo=mail-dy1-x132f.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1773771701679158500 Content-Type: text/plain; charset="utf-8" Set blob_alignment to the host page size so the guest kernel can align blob BAR offsets accordingly, avoiding alignment mismatches with the VMM's memory mapping API (e.g., hv_vm_map on macOS). Guest-side kernel support (drm_mm alignment) is pending upstream Linux merge. Signed-off-by: Lucas Amaral --- hw/display/virtio-gpu.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index de7a86a7..44ae5034 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1532,6 +1532,14 @@ void virtio_gpu_device_realize(DeviceState *qdev, Er= ror **errp) #endif } =20 + /* + * TODO: guest-side F_BLOB_ALIGNMENT support pending upstream Linux me= rge + * (Sergio Lopez's patches, Nov 2025). Until merged, the guest won't + * negotiate this feature. The host advertises it per OASIS virtio spe= c. + */ + g->parent_obj.virtio_config.blob_alignment =3D + cpu_to_le32(qemu_real_host_page_size()); + if (!virtio_gpu_base_device_realize(qdev, virtio_gpu_handle_ctrl_cb, virtio_gpu_handle_cursor_cb, --=20 2.52.0