From patchwork Wed Jun 11 15:33:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Quentin Schulz X-Patchwork-Id: 64805 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 289D5C71133 for ; Wed, 11 Jun 2025 15:33:21 +0000 (UTC) Received: from DB3PR0202CU003.outbound.protection.outlook.com (DB3PR0202CU003.outbound.protection.outlook.com [52.101.84.45]) by mx.groups.io with SMTP id smtpd.web10.1437.1749655994815541795 for ; Wed, 11 Jun 2025 08:33:15 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@cherry.de header.s=selector1 header.b=lTh1V+x7; spf=pass (domain: cherry.de, ip: 52.101.84.45, mailfrom: quentin.schulz@cherry.de) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Axv2RU2+Q9Z1Vwu/d8E973hK78rqxOkw9q5jNFiQSFkZBuB9x/ZEHbWrBJJ0uUzV5UcNpZhlneY/Wz2xsurZg2XYra79f+FpBSx4jV519RF5ZGHVhuWQ1cJFUl8WRGfr4+T/9Tq5wZM1iVAqSORtOp2ydUzVv78wigHLfm+Sjomg7V6ryIvhD1FQuu/YfK7v8RvshcmQIqriOs7jZeyaOCwXfKEBxnPcDvkHD36IcvzDwNQbvXYPKPF2rP2QCqlWi0g7Echs/FBr4ogj3P6Pvle+0HA9Z2EPFjYDyWU2uLQgrlKDs/jw2G7rmmJOeP8bdHXbx022G9DpnoZam6BKow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=j6hvd+PPHbfk8TmLYvGUNljOOGgDWI9RFONSr4GhGx8=; b=WfOU+w0yEwSAnmRuRAWyP/qXPhtA2SamXxWtwi7jQSbrlLrxLq1g2IsaAkHxJwjdunK7lE/qHNnMlcG27/nDDwQiUoSg6BXgWYLGkroaiNIUF6EaT6eWJiTnyNiRb3wsUZkKV1fVkNpnPWZpCxoSHrtOoVseJex9YeLZFrF7YyDBptvDRbuaIibZTPJGj+Hcze/qWKRYi9W66IP/KZI4VT+joDJzp5axCbaKwY4PfKGC1QFVsFyAHTSjcuVtqTMHUQEFwItCH6JV345jpSLbCTPZwIJhKRjwNgZ5Xl2aHgtjjt5MUa+zu6nORGhDVQ0Q8OLoXMCa70TP/xSwzKunWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cherry.de; dmarc=pass action=none header.from=cherry.de; dkim=pass header.d=cherry.de; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cherry.de; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j6hvd+PPHbfk8TmLYvGUNljOOGgDWI9RFONSr4GhGx8=; b=lTh1V+x7Yc0cvilo1gmsGSm2u3DRBDgGS4nqCg8Mb0QOg3zy4gbAcq9se1aHOhX5gj6DYecalgxKZshrFur85ZAT8ZSMc/C6v16YwWLjAb4DnmS0vtp3KpQFrBLLLtGTjS4WMNXGp1t29tO25FEbn56UnPs6GAHg6mjzlnarvsI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cherry.de; Received: from AS8PR04MB8897.eurprd04.prod.outlook.com (2603:10a6:20b:42c::20) by PA4PR04MB7839.eurprd04.prod.outlook.com (2603:10a6:102:c9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.18; Wed, 11 Jun 2025 15:33:11 +0000 Received: from AS8PR04MB8897.eurprd04.prod.outlook.com ([fe80::35f6:bc7d:633:369a]) by AS8PR04MB8897.eurprd04.prod.outlook.com ([fe80::35f6:bc7d:633:369a%5]) with mapi id 15.20.8835.018; Wed, 11 Jun 2025 15:33:10 +0000 Message-ID: Date: Wed, 11 Jun 2025 17:33:10 +0200 User-Agent: Mozilla Thunderbird Content-Language: en-US To: "openembedded-core@lists.openembedded.org" Cc: Dmitry Baryshkov , Markus Volk , Trevor Woerner From: Quentin Schulz Subject: How to fix Panfrost support in mesa? X-ClientProxiedBy: FR4P281CA0384.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f7::18) To AS8PR04MB8897.eurprd04.prod.outlook.com (2603:10a6:20b:42c::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8897:EE_|PA4PR04MB7839:EE_ X-MS-Office365-Filtering-Correlation-Id: c42b79dc-add3-47fd-4438-08dda8fd45c7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?q?RiuQ41PUyjVlY9gESZd1Gvg5ajPzrDV?= =?utf-8?q?fZTP1RWx1NBvngBjGyoPLno5zVhKq3nMVmSpKlNCX9yamapLIYBOg0ygKiI2Z4gXI?= =?utf-8?q?o8e1iMtq/KxDlHLwPSF7wvKwxWPZbhZqQf2QQdfGssGwYHDmr7ZwzkjHtb8CryoF6?= =?utf-8?q?hMd+E3C9PpJam30ZbmxgGIRfhqnMUVmGu6sDARtgBmbp01OPRAHd7k9OwUPGe3jFG?= =?utf-8?q?HOE/c9KXhTGnLr6H7QN7EsDsAa9zLyKeAA6B+QrVu0+xP1NW0LBk1uzClZ8mQXZwF?= =?utf-8?q?rqpR6U7eQjaRrjHTWjC84BisYPLw+JeJ2miK/iDiWBiHXf+yq5zwLtF7dR3wt+Chb?= =?utf-8?q?WDHDgtORJEpoGJ3HOfDA8LuuiCf+TILCnOxJpa3web7703CFizMnSRl6K18h6iytY?= =?utf-8?q?SQ233Qu1YlljefOjbChSzxatwzMBVvB0mO3sPoc5qLkRbNeqBC+znFW8yG+e2TfQc?= =?utf-8?q?5DkcmZaVMUWktZXCCA9qKeKRVIDEDkO7FNeYBP4NNQUqq+SiTYZZkoZTsvxP7mX9k?= =?utf-8?q?fnclAE8/FVOXwiZp3cY3KC8/E5fwe+aYdpgDDZJ33AovMErpJbb/vseDq0YbK/SxC?= =?utf-8?q?/XSJy4n/1ecQhHHzmTljb6LSltMDFOQ5lRSZJ3zUIwh2bwvAN/6XNOWRo6T8OCcfL?= =?utf-8?q?qgP83ENyDR8bxX9MX4TMD13aAVOAXwKUVeWBIcIl5k6eDhKQN+aSmmR3e/WutkyTI?= =?utf-8?q?gOJ5xrH7OF40W174nsNXoMfm++7FITdYjn+ma/W8+WE99TunjVOGkSgU2veN8US49?= =?utf-8?q?bv8WHtn0uwkPhOXDubfyoW9kbWK8pUhcKMJVTpYvDZQMhzeOtdlomKGCW/udtl2GA?= =?utf-8?q?DxR3lftQ2aQsuGY27rojBL8gue5K1YbTRtdTc3NZgywOQYjgnXHWPMuq1fnCZTXgK?= =?utf-8?q?T3Bi8Tn5xJI5ZRGQ50E9Vc4sY7H3WZsQuU1UpDcaZPIsL6Oa4/Xb7Bxcam3hCpiNq?= =?utf-8?q?wEiS8Vk4bbjAvs+4W0AyasqX67jKNEWwBn3vApVsLX8fM6WiQcK0RtBQ+iTA29fng?= =?utf-8?q?h8vx9n6l0PYXpj2QFLx+Ev4Bx4wFC+im4WO1df0ez7+j2ycErPSXMhtn5qP/U22bb?= =?utf-8?q?Tt3pX88Ywz1n2pQ/68y5YGy40jJ4pybo5rsZlWcfoC+f+uR8cJbV0NmH+nZYedt13?= =?utf-8?q?5Jd6hharIVwgJh7xnthSMTgOgtDiLNbS1S15vskgM+KMoSpYhoFMRm6uyfKbNuZsO?= =?utf-8?q?6nh2OkPiQeW9h4m0nTWu66klfHza/eIAJu4sISuZWfMR3Hlqlmo91RGQ3ux2NiXmZ?= =?utf-8?q?1m1jCbBJ1dw0sYT+iO3BVQO7ILLWYCBpUrVIC6QuxoOwDb+wlvzTPJ8WxuDaHOw1m?= =?utf-8?q?AvvatcHirTZzWpaph/FdKizmPuMH6NiuvEuYK0Mx4/8GjO+ANCC0QOc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB8897.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?j/MZwur+KI77RFBG+0HSY7ndTcxb?= =?utf-8?q?fzmkicoLMCBWbDqbVTs5dj4fYhszwi0C9IorTXMYbDebb6Sj1swjrgr2TgdYk5mIp?= =?utf-8?q?8LrhQZUsSIEcGDHJv0j60ql9K7lebk72So4zfONL5chT6OQAFF3Wlwi48s6qJVLaa?= =?utf-8?q?OWF4kVW1KfYGedO/3wuqoO4mioYUzwBe8xR+31uAw+VV08cx+cTXlUuOIw4CN/EIF?= =?utf-8?q?FGo0fztrU5vcp83oAmfVwy71aMofPujtjiSVZ4m8AeeuEzzlWllSoxmckg5qR2RQv?= =?utf-8?q?9FJroAmDaoqFl0mVGhx3dLl5TgJLRKZ/ZWNwBzy15M/+k+0fU31bADL1KYE+yuFzJ?= =?utf-8?q?lr4AZL5xR6d4V/59VV8PuRWpG9ZWjzDLL1sMNfK4NH3rt64n706mnJTOPbqtwxJYd?= =?utf-8?q?Qfj7FAeKaAJcXhzjakwTLKa4p5BCGzVPcfO0oMLEeaTC2k6fo5+HxRlJQL/TaNeu7?= =?utf-8?q?CqmP0nl+04WI9gN/uAocDKsLtTIo/4cUWxQr2BQDNCo3HdRwTyzdbLd1h8rh69B24?= =?utf-8?q?1CLc4PbAYC1zEcVyu2CeLXyJ+azBf5/9qUZjUBmph6BtTk7KGRQzqPW/t8UIrPbmq?= =?utf-8?q?kz6jQ7y+UV3crH7Qqya+KeWT5XKCm4z3GxBWkwNzUO5YXdbhyZkYqY4r9RANB9zKr?= =?utf-8?q?Nm5DmJCkndrxt78IZKpDaEDq8z4DQSzVTMuR9jmUqnPvcpgTuIZqJhakFLXbMUX4F?= =?utf-8?q?vmHxVP8qsg26wfRQ178jRbzvMyMR0olvirt8HoyXPmCJAFeD3Az2PHUgfxJQLyrAO?= =?utf-8?q?6bWzg8xIg1chvgUXjiQLgXUkvLvCtRtJJHJlvtSGoGMJZ4AKG8LCFRfbHKoAhzGfb?= =?utf-8?q?0/udCIC6pPai7UTIWTVk971ydJJt9kXlLfkP724ZNM7zKbgxfO5FJPeICEc9Bfa6i?= =?utf-8?q?BWDAw1Ul9cGP6b6xXNMjzEJUAkOVouhdL2cZg4C8KH6IOCAeu6+Xek+GrPthJUI9L?= =?utf-8?q?wAr9qZLDBuB/das9zkmqketF9PH8Pq6nZt7PR50MTcndzehWaTbpE0OYCB0lVtxwH?= =?utf-8?q?CDvuBCzdtxfcNdYSmU/26v+GAZgSmF5CaOc8aWKwm4sKBbWYbdgjBrWRLlogm9JV+?= =?utf-8?q?55oullxcqDsjCT2daoA++fX4bjjy9UgmZhC5t5ExE8Lz/Zai6AeP+Q+9ruJ9tLdG0?= =?utf-8?q?NZpk/6XmmrosARrwZouKJ0j/ID4GuutQWd7op3GopS9d3WwuhRY9VxDsl8O114xj8?= =?utf-8?q?MtAt/6U3su6Pc7fYkesV+EaKkxVNtMd5qwqJzjlkRbOpVoyP8Ngsd0hRkM+K6N9k7?= =?utf-8?q?340VAT292bs060wY0DdP0M+Y94M5weha5zkfm5ieb4FaXUlA4/OTDbip8/3QyBK22?= =?utf-8?q?6BQ34evRqLIn+DcVjtAE/BtYtmrf+msOggT/8Vw/AIbDGwQt1+B3xRrGzlC/YLZT3?= =?utf-8?q?rN2WUow3RFQqnr0wcpy4E/OkZrr4IErn+aIwpY3v9f9B2vV+OubJrDKZmS+IiHdFP?= =?utf-8?q?4I/FZ+TkbWPZgA23fCejtHPqrxVmxTVbH7StaXIARqqKMfLKZHC7FtbMJP54q7sDY?= =?utf-8?q?93LGtNnNrkLxSx7kY/3jE569/iDhs93U/Q=3D=3D?= X-OriginatorOrg: cherry.de X-MS-Exchange-CrossTenant-Network-Message-Id: c42b79dc-add3-47fd-4438-08dda8fd45c7 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8897.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2025 15:33:10.8771 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5e0e1b52-21b5-4e7b-83bb-514ec460677e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: u2m51Mc9FPAta7I7XMUsy6HiKyLducbApdwSdg9dPqtmMLMUqfh7R/E3DbwMqS7vuP8pPV4CRwcnyWfjssemSSPPpngxEtbogSaqOmezknY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7839 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 11 Jun 2025 15:33:21 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218457 Hi all, I've been trying to add support for Panthor (Panfrost for Mali Valhall and later as far as I understood) to meta-rockchip a few months ago already and attempting again. I had managed to do something for an old mesa release but it doesn't work anymore. Worse, it seems that the current Panfrost support is broken :) For starters, the build doesn't succeed unless we have both panfrost and libclc PACKAGECONFIG enabled. I believe this is due to 20970bcd9652 ("panfrost: Add base of OpenCL C infrastructure") merged in 25.1.0. So there are some changes required in mesa recipe to force libclc PACKAGECONFIG *in addition* to the panfrost PACKAGECONFIG for the whole thing to build. This shouldn't be too difficult though. However, reading the aforementioned commit revealed something else (or maybe I misunderstood :) ). It appears that LLVM is now required at build time for the Gallium driver, so that would make panfrost part of GALLIUMDRIVERS_LLVM now. The issue is that it builds with and without gallium-llvm PACKAGECONFIG, and it seems to be running glmark2-es2-drm just fine on RK3588 (G610; Valhall). So I'm not sure what to do here? Making it part of gallium-llvm drivers brings in clang{,-native} among other things which is horrifyingly long to compile. Additionally, according to the same previously mentioned commit, there's *some* OpenCL support now through rusticl for Panfrost. I wasn't able to compile it though (seems like Zoltan is trying to fix it already but the patches didn't work for me though I am testing on top of poky master 5b006dbc3d8669e0530ec3d633982617923ae215 due to meta-rockchip not having migrated to the new kernel-fit-image mechanism just yet). I see that we recently forced the opencl dependency on Asahi Vulkan and Gallium drivers, though I couldn't decipher from mesa git repo whether that is actually required or if it's just to bring in OpenCL always. I assume we could be doing something similar to Panfrost but I'm not sure it is worth it (especially considering that the commit listed above says they are only planning to support Bifrost and Valhall versions, which doesn't cover the Txxx (Midgard) Mali generation. So.. what to do with this panthor/panfrost driver for mesa in OE-Core? My attempt at making panthor a gallium-llvm driver: """ 'freedreno', ',freedreno', '', d)}" VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '${VULKAN_DRIVERS_LLVM}', '', d)}" VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}" -VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}" PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers" # mesa development and testing tools support, per driver @@ -173,12 +173,13 @@ GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', GALLIUMDRIVERS_ASAHI = "${@bb.utils.contains('PACKAGECONFIG', 'asahi libclc opencl', ',asahi', '', d)}" GALLIUMDRIVERS_IRIS = "${@bb.utils.contains('PACKAGECONFIG', 'intel libclc', ',iris', '', d)}" +GALLIUMDRIVERS_PANFROST = "${@bb.utils.contains('PACKAGECONFIG', 'libclc panfrost', ',panfrost', '', d)}" GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'amd', ',radeonsi', '', d)}" GALLIUMDRIVERS_LLVMPIPE = ",llvmpipe" # llvmpipe crashes on x32 GALLIUMDRIVERS_LLVMPIPE:x86-x32 = "" GALLIUMDRIVERS_SVGA = "${@bb.utils.contains('PACKAGECONFIG', 'svga', ',svga', '', d)}" -GALLIUMDRIVERS_LLVM = ",r300,nouveau${GALLIUMDRIVERS_LLVMPIPE}${GALLIUMDRIVERS_ASAHI}${GALLIUMDRIVERS_IRIS}${GALLIUMDRIVERS_RADEONSI}${GALLIUMDRIVERS_SVGA}" +GALLIUMDRIVERS_LLVM = ",r300,nouveau${GALLIUMDRIVERS_LLVMPIPE}${GALLIUMDRIVERS_ASAHI}${GALLIUMDRIVERS_IRIS}${GALLIUMDRIVERS_PANFROST}${GALLIUMDRIVERS_RADEONSI}${GALLIUMDRIVERS_SVGA}" PACKAGECONFIG[amd] = "" PACKAGECONFIG[svga] = "" @@ -212,7 +213,6 @@ PACKAGECONFIG[lima] = "" GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}" PACKAGECONFIG[panfrost] = "" -GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}" PACKAGECONFIG[tegra] = "" GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'tegra', ',tegra,nouveau', '', d)}" """ On a side note, I'm also not entirely sure why we need softpipe,llvmpipe,r300,nouveau always enabled? Can't we make softpipe the default only when llvmpipe isn't enabled? Do we really need r300 and nouveau always compiled? Can't we have a PACKAGECONFIG for those too? I see there's an amd PACKAGECONFIG already, maybe we can use that for r300 as well? For nouveau, a new nvidia PACKAGECONFIG maybe? Thanks! Quentin diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc index 4b1e427ad5..8880330c9c 100644 --- a/meta/recipes-graphics/mesa/mesa.inc +++ b/meta/recipes-graphics/mesa/mesa.inc @@ -110,17 +110,17 @@ PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols" VULKAN_DRIVERS_AMD = "${@bb.utils.contains('PACKAGECONFIG', 'amd', ',amd', '', d)}" VULKAN_DRIVERS_ASAHI = "${@bb.utils.contains('PACKAGECONFIG', 'asahi libclc opencl', ',asahi', '', d)}" VULKAN_DRIVERS_INTEL = "${@bb.utils.contains('PACKAGECONFIG', 'intel libclc', ',intel', '', d)}" +VULKAN_DRIVERS_PANFROST = "${@bb.utils.contains('PACKAGECONFIG', 'libclc panfrost', ',panfrost', '', d)}" VULKAN_DRIVERS_SWRAST = ",swrast" # Crashes on x32 VULKAN_DRIVERS_SWRAST:x86-x32 = "" -VULKAN_DRIVERS_LLVM = "${VULKAN_DRIVERS_SWRAST}${VULKAN_DRIVERS_AMD}${VULKAN_DRIVERS_ASAHI}${VULKAN_DRIVERS_INTEL}" +VULKAN_DRIVERS_LLVM = "${VULKAN_DRIVERS_SWRAST}${VULKAN_DRIVERS_AMD}${VULKAN_DRIVERS_ASAHI}${VULKAN_DRIVERS_INTEL}${VULKAN_DRIVERS_PANFROST}" VULKAN_DRIVERS = "" VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG',