From nobody Mon Apr 6 21:35:22 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=1773769841; cv=none; d=zohomail.com; s=zohoarc; b=gQiAUWw91kn9OeR91qm/hzGxZq6cQQMtXdK/JTk1m4YgiXlRiQ9E4Z+EReLOcc7CBz0fQ/nxyzF3hsmLM3YkKRj7+ot9z4TDP6Od5+0z9r/GsrFeaQN20IJf5TVtYHAEcT3e6AJR6LItRP3mH+CaMH0pfxUGyrrxFtZAED8acLU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773769841; 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=IlrPrW5jZT1OutRLmDKbGhRJ3qZBb6rplHVCx+i4RjdQYmci7f9DKqLnKRGWJd+Dk1a2iU0yEos+ea9MqjtLsTRQOJqfJI0pzzW6+QToi/5/20kPQos/e8SAHTDXBO59VufEv6b3vtJdyCX3bJzrgoFclnjzZegDL0Pqd1qZzxc= 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 1773769841531582.8776832534977; Tue, 17 Mar 2026 10:50:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w2YXp-0004oo-C8; Tue, 17 Mar 2026 13:49:29 -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 1w2YXn-0004lr-55 for qemu-devel@nongnu.org; Tue, 17 Mar 2026 13:49:27 -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 1w2YXl-00078d-LT for qemu-devel@nongnu.org; Tue, 17 Mar 2026 13:49:26 -0400 Received: by mail-dy1-x132f.google.com with SMTP id 5a478bee46e88-2c0bcd8f194so4131818eec.1 for ; Tue, 17 Mar 2026 10:49:25 -0700 (PDT) Received: from localhost.localdomain ([143.54.78.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c0e536896csm282115eec.3.2026.03.17.10.49.21 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 17 Mar 2026 10:49:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773769764; x=1774374564; 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=A6gath4Kc9Ecd1NYiYwsYR87R3HJAxSWAUfn3LM6Pc10y2zR53oSaEr4JNWuEif24i K5vYCGBftdKdfkigJxepznml37MhBolLdoSz65uqHAZUVx9iWLxkwAQsPiBq/Fuzp7g+ xlDImdeT+hkZpT/ECKT59zMLJkWxruc9gNYlPD7GoY+kl4bFJzuwpZEmTibiQp+Mrc0z CRNhcK81e2Hhcoi9YewRyoCEvrQ5G8OWUDrsPBJYO3hG6c0wqoFSj9lbvb+tQgVk49pP xfw8N4SgNeDItnC11eIZgGaczvzGwI7WthvFYBby3poV7dJFdrELmEGy0vcx4fYhFKye ZKzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773769764; x=1774374564; 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=FOJcWK0otfrex3qOdR4hHo3fdFNgw4LYW55q3ryA4Mn3aPPsoqs2agfBr8UmcKCPj4 2gaA1y2fgFDP67mz8X9dqv4DpFFcLYvPnwZ8FKFj+3RZn14dGPL33neVLG4JsDZcGrgU 32twRflWy3iTIqNvbeI6HkTLCdePqFlq77djI3unKMP3vHnSD/pPG3mItblR3A4YmtcU 6UPcLpN7wis1XNrQJA6Naz/EU1TZ3QjOq1xUFX9ZcuDv0tIuVWH8nmmI3/My2X1EjRWe uEntha8DeWPwvZUsTUx9nc4Y85D4+hTxRH8oWZfUJeANxDFtYoX5jGHOnJkNRTrVbSHX vT2w== X-Gm-Message-State: AOJu0YzyhTYiTaIiARoFBOaHdxX2oLAW2Ru+7vx1NozOKWGWQMdTWpXy LhvXIBgNGLQPsSa6cJ4vgeJfMOIPKk2OXLshxVaRoCscMVBxjbR7KzYwsvch4Y4z X-Gm-Gg: ATEYQzye/tUqwDcVBWY52lBxyETr6ITRlOGodfdX4ceFap/LVt4q0udVQyRlvdboYHL UBvlwbpLCcqHnAYY4unyEyk1ATQane9CNNVf/SWPHEQJ4JUdjvui5IktkaWLuUNzuhgacEyGZeA zF6fbwTw/J47w+H8cjtXCt2L7EHB0SyaWKTmKyBopoy0vhR2uYcnXuMFy+bp/eSZ9DJFCtbqilR 4VXU80dWTK0Fy4IXrIrN9sTdbDtr2gbxGg+AQg+Im1KzKir/lMiofh0VMKERPI4wcBXo/USrxM+ JF/VQ1DbS+unQkj09r2mI50cg03CeTTS/VtmgNOvuhdSm4fUtyMzgX6j0gquUfmN1TWDAvD2Z9Y 7BMYX37D4njYkm/Q+xH82Q3yDqH+0FqCmrF23Bs4UpCjdiqMLvmyhE4by6I7hUCHinutZ2O1s8H gRBmnlDJM1nhJqerpkGAxsKZizq7j4iFAFh1AUI2TDifhYsU5lvZNr7Zkaeane0Gc= X-Received: by 2002:a05:7301:168b:b0:2be:ca4:e13f with SMTP id 5a478bee46e88-2c0e5085f7fmr121739eec.23.1773769763843; Tue, 17 Mar 2026 10:49:23 -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, Lucas Amaral Subject: [PATCH v4 1/4] ui: introduce GRAPHIC_FLAGS_VK for Vulkan scanout Date: Tue, 17 Mar 2026 14:49:12 -0300 Message-ID: <20260317174915.31829-2-lucaaamaral@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260317174915.31829-1-lucaaamaral@gmail.com> References: <20260317174915.31829-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: 1773769843230154100 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:35:22 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=1773769800; cv=none; d=zohomail.com; s=zohoarc; b=L9vJFJ2NWzJlJw89oUyVvZhdwzOsMtrUAEvImwODfODoSxMbwknYgByPO6WoSHxzZro+Cstgrp2J69+hGLUgAzb6haU1vApftzkGGgXYL/R9U4SIsuYXESIaBW0HRnwOT6BKA8p6sOxg+YAAhrv9WqtrXDiHlCEUpUO+MrkbOvI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773769800; 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=kDGxJtXKfLvjR9H1IY8uxpHThssKivH2c9U5isX8TqQQTq51IQJBO5Q8fZMovYBcnVbGScdmgWOB99CDmrTJJlr4TSChLoVqkwRALVt7K+jbTXcKEXNPRpwFJlc3Jf+947mot1FQpInGN63ApIphaFLCA2odujZtt3UqKIIAqKs= 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 1773769800380547.8787067459273; Tue, 17 Mar 2026 10:50:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w2YXw-0004zS-GS; Tue, 17 Mar 2026 13:49:38 -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 1w2YXr-0004ts-FS for qemu-devel@nongnu.org; Tue, 17 Mar 2026 13:49:32 -0400 Received: from mail-dy1-x1334.google.com ([2607:f8b0:4864:20::1334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w2YXp-00078x-2q for qemu-devel@nongnu.org; Tue, 17 Mar 2026 13:49:30 -0400 Received: by mail-dy1-x1334.google.com with SMTP id 5a478bee46e88-2c0e3a2605fso643800eec.0 for ; Tue, 17 Mar 2026 10:49:28 -0700 (PDT) Received: from localhost.localdomain ([143.54.78.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c0e536896csm282115eec.3.2026.03.17.10.49.24 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 17 Mar 2026 10:49:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773769767; x=1774374567; 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=ja94keE27aX6eBqZD5TOu7Mj8/Z7BBh+Qtc5YA0yCSrhWq6J9iAlljU8pxLu6MTgxr wHlYIk19R51KPsISjJWNqhPyxfsvLkCX9hpMjmFgvA0MhJowB8G22qO1th13wIAtMLO8 o4XWmBTd8XlV02bEXOVJoX3wHUA9eDkvdtrpKTB8hYAi65Nb4u1q+okg6RQt9Dhl2nYr xhFZMUl7GXQmFmgmJ+W82/7MvKZ9TmI3QYSAack6A2I+ganUczWcKQNwSUuNf15oxTVW eaXd8fViHmUci6ExtGsXZbZ+d+0AXWVU+8bC3tYl2JpQrBYdpPULTsfCEkWPHw1KxuHR o1xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773769767; x=1774374567; 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=aB7cDQwtNi5ZaSmv/ov3R4Eex/QL1kD6jCkudkF+ew1gS7FtLwX4nBo4vAGwUT8y8k N1TSFl95vfZ16QUv0wxSbPT7Te+Vkc1fjSs7/f/4Mv8smZEeXIXfygvTDjIh/fJuPEDN U5NBryvWNY+MKNOqJrwKdrbrNNBYFWSiMO+3u3lWNl+2uJsrF4Y4JvjpUQ2sOafHvoMg Uu8ltf0eoJwcLN54Gg6MDNpDk1vgL6OM6LET4j4bM8KNrALhIkb39H63AsB+E3Xtfmvv TPtTBA81Yp03S/rL00Yb+ZmzxEg3TyDCfk/iwEImS9GdhcMEmRHal1+8i/W/HxIyqNYa 0J+A== X-Gm-Message-State: AOJu0Yzfv61rwiuogXFAhtoV45JsOb5542VETGyDb8FxAzS+nxI7u9uo M4JBRibWaFlGZLWnXh6tC605QzOmQym5EzLRX9Y4D3AFldg0dzRvut5aGV1H6dhf X-Gm-Gg: ATEYQzysBBEd4qlLVn4ig3Qf4FITavkhGcPj0Tt2Nhwtclp0ebPK1ypseaQcVUI4BWs sey3ivlvmDAmy/psHDoGbWRBIALLqfiKWeaJ2gsDoW1uAtrPJzFjT0TbjwIgmJ5AESGyE5P0u9f 4cTkD6cjpa+20Pu8c1dENwyJccSnvbTXVZFEzgmRePfP4dUiwXnJJXguLRKOXLO7F7Q5qNjEWUR vWSxBizK7I0fmqOkCfjf/DHKR36wrQg/rS67BZZFp1/bKDQMzIQohQHpXbsZJmoSi6HJUvFXAei pV1SKlpz5oijJE2kqmHmhhsObTGsEW0mtYjahUoiyJkTrPLdUfXcrArHC27f4N2IHLEIc8/WgIB U3YpU+/i2tBoT/6dKFf3GF1GmQTvWwRz+Fse79Z2hjNYtF7zjHZYZKasgCIvCyDszjApO8tEauX seJEUnuxKg4AdfLJbc/dcVfJpSmOxeCC+VgaEtJ9/V46bLx5Yfk1J/ X-Received: by 2002:a05:7301:4b03:b0:2c0:c903:4be1 with SMTP id 5a478bee46e88-2c0e4e4fe47mr206289eec.0.1773769767240; Tue, 17 Mar 2026 10:49:27 -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, Lucas Amaral Subject: [PATCH v4 2/4] virtio-gpu: decouple Venus from CONFIG_OPENGL Date: Tue, 17 Mar 2026 14:49:13 -0300 Message-ID: <20260317174915.31829-3-lucaaamaral@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260317174915.31829-1-lucaaamaral@gmail.com> References: <20260317174915.31829-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::1334; envelope-from=lucaaamaral@gmail.com; helo=mail-dy1-x1334.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: 1773769802755158500 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:35:22 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=1773769958; cv=none; d=zohomail.com; s=zohoarc; b=X9EVzoi2Qcb8pAph/a7mq593mCE2bLVXPlxOECyVF58IYnGD8tqJcGaniFVVAbraNmZJZlswxi3ERrM1ClJO/TpI5/OfzuPm25+G6YhsEkzRcYlysa3haxN42211kA8PBtZP8sWj/SOKWw8CvkKkDdFyi4LbrQTv+U8aUD+oZKk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773769958; 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=NhY0fM5K9vptWgPTWo0BbGCcuqyT/7ZDa64LlVBXuMSGU+w3zvXH0c/mcydI7gnSx9V7GMmmqF5hJ3iRIGvbRhsko81p5rNx2E8L35Osm4EocwV4HEoFXE/F0ReLNArg7P1j2bWwaOeNN/OG5aFafMO273xxeCMAFTKyJQoNkyo= 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 1773769958209551.9109870077305; Tue, 17 Mar 2026 10:52:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w2YZ6-00064w-N1; Tue, 17 Mar 2026 13:50:49 -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 1w2YXt-0004yv-P3 for qemu-devel@nongnu.org; Tue, 17 Mar 2026 13:49:33 -0400 Received: from mail-dl1-x1230.google.com ([2607:f8b0:4864:20::1230]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w2YXs-00079b-9N for qemu-devel@nongnu.org; Tue, 17 Mar 2026 13:49:33 -0400 Received: by mail-dl1-x1230.google.com with SMTP id a92af1059eb24-1271195d2a7so1196498c88.0 for ; Tue, 17 Mar 2026 10:49:31 -0700 (PDT) Received: from localhost.localdomain ([143.54.78.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c0e536896csm282115eec.3.2026.03.17.10.49.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 17 Mar 2026 10:49:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773769771; x=1774374571; 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=Xf/hqRvfyGQU15sCBNIZMp9Aln9uYj4cYLUMpbuFQmOMxk2DltGrpaxygAZhxghMUR eNQ5TLuq+VHXOt0idS4BWN2M8yQycU4qA0vZQxFs3v2tg7pXZIXMowj0bXYk+zHD7roC Xc3J8Abylpyh3L0MvXLdRrAQaEiE2U0bcGQmhbVxVwel+wkWiaMaECsk7zcv+J3r77bf 97Cd/gpBYWgZjpphL8rJjUmoqRLdsXwIaovE5iCyB0EZlto7aegc/GFVJDG8cRaF+NES CZg1Uvh15bl9B4VYm1diYBA8qvqm380LeL4Ed5cHI+oZR71XIR4pMWKZmMHiCa27sP+3 3UtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773769771; x=1774374571; 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=GHZXzFiia5hHXB+zku8zHnn830N5H2kdRsTjOoWc5DJAq0GkI0KJWHb8FriHNuURGQ u2M82/fDpXpvThzdCYkH5nOWDPBZKZxNVvTGI5zHV4uGPTN/Hk8EBw92M3NNvgUqd35Q u1kL3Kr5eJea1SQZxoP6njtmhAcdUshSPabWgq10JsQY0ALDDiKDzZiLZg0zPsjjG52e TqxIAGrQ29p/IhvopuDG5lupwSO2qsdb0A/Q7HWFMg6JD+M+vqV5VKiHpDxIAMLXgNw2 /YsDO1Vb2ho/HYx4pEYmK1aM440nHppHsM3ty6V7gS7lWhNTSkWQP9R0K3ikwlk29HZd BKJw== X-Gm-Message-State: AOJu0YxZ7baYRPUraq94Eb3podvuDsPyBnJkCsRu3NDAZgFqU+yqBUUZ iBShdqHUz6fE/hlhgX4FGCen1yyQ8K7XbiHFalUAvTfMZLNYdoM92u7vePN/fHdy X-Gm-Gg: ATEYQzzIZ89Jjqx72FlISaTQbjZKXPwqH5l5mc86hyKcod0IR/Mt4aT+r9kThr/Xt0u bK2MvCsUEKVl8nVJy76Y/d5GrolGE4/ipkcjnNrvixpqQytLB9V6XPEFeGMJUHirvH9CTcag6QT etpR3e6IUcRQvjqahkTMexkYm41iDfMk0UZQoxjuIPdM+IkbXLIOn9PH+0eHnvanlyVRFI1YITg 8mRUPrzcwCsYFnH2BXghXtn4SARF+p4w5OJbp5Dsow8tlddKLTEPMgYMEcMPDOI7hiEamoYJs/h DFJPMBwyfm0UziHlBjiDBCITs5KOD74Cg7Hi0CfJbW1d9bwFfO6eEKDlPN8lKM4mzJoejc0VqVW iWwaYqqdTTZ3LN/bpzjMo4Rif/I3t4Bz5HdTHw++npzLcvBcGi9zQSwwzaFOhxu5EJEyIVuhW3j 1Kk6ShWsK/ysvB8LacbnzAeo0DFGCYK7cfD0dLDjepe5l7NU72qQBu X-Received: by 2002:a05:7022:394:b0:11d:c91e:3b58 with SMTP id a92af1059eb24-129a71b0413mr185894c88.39.1773769770357; Tue, 17 Mar 2026 10:49:30 -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, Lucas Amaral Subject: [PATCH v4 3/4] virtio-gpu: add VIRTIO_GPU_F_BLOB_ALIGNMENT header definitions Date: Tue, 17 Mar 2026 14:49:14 -0300 Message-ID: <20260317174915.31829-4-lucaaamaral@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260317174915.31829-1-lucaaamaral@gmail.com> References: <20260317174915.31829-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::1230; envelope-from=lucaaamaral@gmail.com; helo=mail-dl1-x1230.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: 1773769959426154100 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:35:22 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=1773769922; cv=none; d=zohomail.com; s=zohoarc; b=FfyIC4hJ7xTiNKVpBrxPH0M3PeDBJvEgcnkmS8lSjRFSHCLOxiL4AB13aYgpHAyJqsVDEIMSeqBUnyg+JWHS/PRgOq7WC9JhH5jIr2eAwDdTTeTU0Oyb/oCAl9TTgomKEfRWaqYr+8K8eDtM8eBUTkMpEwIbGESpkBa6RGYcymQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773769922; 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=Ws0ZQFYY3HodEbvG1Vps79hEVFt3V5cFKoh9On4bwInA2jSThDW7X4l5MHedjZppPu4mTBQlSPFAwQMfKfqNvTxdY2nqWb20XmCngeJ7inPNH4qAeAsMJDWvBUjw8tvBnqhECu824OfE7rAi7qJaUqbPEvbQjDECxW7Jgn/TYT0= 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 1773769922984114.52200594163969; Tue, 17 Mar 2026 10:52:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w2YYi-0005jv-SA; Tue, 17 Mar 2026 13:50:25 -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 1w2YXw-00051K-FA for qemu-devel@nongnu.org; Tue, 17 Mar 2026 13:49:38 -0400 Received: from mail-dy1-x1335.google.com ([2607:f8b0:4864:20::1335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w2YXv-0007AA-66 for qemu-devel@nongnu.org; Tue, 17 Mar 2026 13:49:36 -0400 Received: by mail-dy1-x1335.google.com with SMTP id 5a478bee46e88-2bdcf5970cdso145363eec.0 for ; Tue, 17 Mar 2026 10:49:34 -0700 (PDT) Received: from localhost.localdomain ([143.54.78.51]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2c0e536896csm282115eec.3.2026.03.17.10.49.30 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 17 Mar 2026 10:49:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773769773; x=1774374573; 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=i7B5wQ3KU2T3Y3YFx/bvTaVtG6kjTHYgprJHTquQuynMis0JeRf9Hxg2plSrBVP0Mk U4bKmUdron1GUHE2EQ0RZ0SG7zPLkV4YIcgZhvESv/9oyr2LYhldBQljHjF5MUR4xxOI 4nfXMRS9N75rpE+DqcpQaZg9KEfOzCskq5lSCIj5hkMBtg4BYiKss/cDBerXrhgYVNxM 1RKle0qgxo86AoMOkgNOphA0KX2mpM5MTVlwMHRihUk2Rtnjg0lZZ7sndTXA2jpHjvIY QHjV/4J5S8VHfWvgMpzCkOl6hMFC6F0ERugjiE8ELjD8+VzlYmEPeGEB93VYeN20LnU5 yOwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773769773; x=1774374573; 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=BvYkeaCQlxT19+ZbY8Rjv6HJpQfIq1G1QkDb/eVE7xoBgrARcfmHoeuTQFjUFIa6Px WMOz6W45qkwOOutcceTnV+ghiTG/UG5iwQixLhG796c19kWn4XUxuag/InZ/2wklX63J j++r+O7jdSpMLF805mjc27V3rtJx+o40ub0IEtRSHmwQuZ85lUxYx/qTujtOQUz1wxY9 uJI+EBwJ1hT44V1eneIU2y0SXax9CW8RMxpEcK1cMize5w0f0Pykp2EvMgkkG2Kc8Bc6 NT6GImtPwe7vumZNekviL6UJkX+RB4K6YeqN0rvGZVer01Vnk6Ul7PJpXgensth3bg6c OekQ== X-Gm-Message-State: AOJu0YwLxCWcCdp7cUYGUHZ+SP3kTnr+NziuD/FMHfjrX3ZfixypEQK4 TYwHSgrLppfS5vtx9eesK/t779Gz8VfO/mhYhMdo/IxnZoQUPdaUqHsiLnYHoeJv X-Gm-Gg: ATEYQzxJV1izAc137BCQii8GMYFlQjNn/SMRXvERyw3weS9U+VzNP9pimc3dQZrgTNn vSRp6Th0BNSmGDPBPqihqLwqaceqPfL+R2cqEZlA+JGDDU6wfgEx2LD2imMBTuGUsbnNNRmUWD9 W41QOuXPQBiQY1+EcPY+pMTeo7C0mhjk5/QuN0VHseMj0SBRjsWLyghJ8HxREfZKSxklnsgAKZv UHJGt5OWF1wxTF4ewzL2cn5jCqp+zdxd0IIwhnld2h6JI5pZTpe2wquwomxEaZgclWGOMsmwF1l m6DVetxsQg2vx4k0fRJJicF+6Cr/czVUvL5uWkb/VWvCaVlN6qgi3uyfCdj8hL3a63C2niPxkX1 a7KbKE4/ddaCRBJgH1KB3atw1J6Sgs9mHV8Kg50jFk7Zy286Gp648Nu+myQWp8+9foZwG/CmmIh LzkEBEYPq8AaJxGZ6BjMPXUtPVbI1a+oJGL2O/PFhvNNCwxep/YAzP X-Received: by 2002:a05:7300:7fa8:b0:2c0:ca48:3107 with SMTP id 5a478bee46e88-2c0d5248965mr1601952eec.15.1773769773222; Tue, 17 Mar 2026 10:49:33 -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, Lucas Amaral Subject: [PATCH v4 4/4] virtio-gpu: advertise VIRTIO_GPU_F_BLOB_ALIGNMENT Date: Tue, 17 Mar 2026 14:49:15 -0300 Message-ID: <20260317174915.31829-5-lucaaamaral@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260317174915.31829-1-lucaaamaral@gmail.com> References: <20260317174915.31829-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::1335; envelope-from=lucaaamaral@gmail.com; helo=mail-dy1-x1335.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: 1773769925139158500 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