From patchwork Wed Jun 10 22:40:41 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antonios Christidis X-Patchwork-Id: 89702 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 B897DCD98C5 for ; Wed, 10 Jun 2026 22:40:58 +0000 (UTC) Received: from SN4PR2101CU001.outbound.protection.outlook.com (SN4PR2101CU001.outbound.protection.outlook.com [40.93.195.42]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.33210.1781131248880480329 for ; Wed, 10 Jun 2026 15:40:49 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@ti.com header.s=selector1 header.b=vTU0pRZK; spf=pass (domain: ti.com, ip: 40.93.195.42, mailfrom: a-christidis@ti.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gZZWxCGYBTmWGeEQOlUTRU44yhW4Yn37ZtszURIKwWV9rQ61kP2ID+DbBNChLaE9G5dkhuu5xDBdTDb2BMI8Gju+VlumSprCuxSPlB7eNZrkvceWaMrCI7vaL0VE+1u5mz6IxJxWcR3p+B4JZbPu2pHKsUNBhGZj8dPC/4LHZ+Wi2MAchSiBUUj8RQrU+sYNOY7+6lFRNklfRVahhB1Wzv+qm99cJLaBY7DKF+ZXoEBq2OjNpXCqx83GzjmPeZ4T7tCJLAyVSp445VtclrCEo1jgYYhJ6GAu7b563WLkNvs/AAAIzh2b+1mPyqr7juY977KaAJ0svf0ckv5zdrSyzg== 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=re4jRn55OMRsIywYAPKz/pP7Pp4PZz2Ohu3Iqcb3JfA=; b=hq5GylBXSg+yk5Cqtsn6E69SB7/Mo827QqdyzS1LvcwVxpL3LZlLxycHWoI656w8KTbi/09oiJ8QYk7Nc1cXy+1goF6p7McP7lyTncAegtveP0gs43X3xlo/h1j0r4GvG1lXkTRoN1jQIlQNq4s676+S16nBmJMLH24SpXU1OJKn1FTX3TsnFeXD+eTySXHlMUazvVkectnX677UEtHF6hTzKN3RTjZL8IB9dY0puICAuK3naNJSvaCW0T+Jfl9e7wghoPSZfEXY+DyUU9H6iauLsS+2RvntiqMhstAVEga8aPGYVtNG2PJdbLriASen8HkZIeVTDx9vN9lCQRK/qg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 198.47.23.194) smtp.rcpttodomain=lists.yoctoproject.org smtp.mailfrom=ti.com; dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=ti.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=re4jRn55OMRsIywYAPKz/pP7Pp4PZz2Ohu3Iqcb3JfA=; b=vTU0pRZKssVjEyqBd8Mhk0r2jNLIzUAnmzlMeZSfb5syRAa/SioEOBWCBumVkUfQURAB9A79rVswcRg3ghjU33Uk1XPVzugrhYODiygJT85pbZo9QAFQILjT3AmHFc0Ve3+Ar6Rbf09L6mZq0lYN74WaU3ZMExxkCiT7h31v8m8= Received: from PH5P220CA0005.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:34a::15) by IA3PR10MB8249.namprd10.prod.outlook.com (2603:10b6:208:571::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Wed, 10 Jun 2026 22:40:43 +0000 Received: from CY4PEPF0000EDD5.namprd03.prod.outlook.com (2603:10b6:510:34a:cafe::36) by PH5P220CA0005.outlook.office365.com (2603:10b6:510:34a::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.113.13 via Frontend Transport; Wed, 10 Jun 2026 22:40:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 198.47.23.194) smtp.mailfrom=ti.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=ti.com; Received-SPF: Pass (protection.outlook.com: domain of ti.com designates 198.47.23.194 as permitted sender) receiver=protection.outlook.com; client-ip=198.47.23.194; helo=lewvzet200.ext.ti.com; pr=C Received: from lewvzet200.ext.ti.com (198.47.23.194) by CY4PEPF0000EDD5.mail.protection.outlook.com (10.167.241.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.7 via Frontend Transport; Wed, 10 Jun 2026 22:40:42 +0000 Received: from DLEE211.ent.ti.com (157.170.170.113) by lewvzet200.ext.ti.com (10.4.14.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Wed, 10 Jun 2026 17:40:41 -0500 Received: from DLEE215.ent.ti.com (157.170.170.118) by DLEE211.ent.ti.com (157.170.170.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Wed, 10 Jun 2026 17:40:41 -0500 Received: from lelvem-mr05.itg.ti.com (10.180.75.9) by DLEE215.ent.ti.com (157.170.170.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Wed, 10 Jun 2026 17:40:41 -0500 Received: from antonios-ThinkStation-P3-Tower.dhcp.ti.com (antonios-thinkstation-p3-tower.dhcp.ti.com [128.247.81.216]) by lelvem-mr05.itg.ti.com (8.18.1/8.18.1) with ESMTP id 65AMefQK609035; Wed, 10 Jun 2026 17:40:41 -0500 From: To: , CC: Subject: [meta-ti][wrynose][PATCH] mesa-pvr: Migration from v24.0.1 -> v25.2.8 Date: Wed, 10 Jun 2026 17:40:41 -0500 Message-ID: <20260610224041.153148-1-a-christidis@ti.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD5:EE_|IA3PR10MB8249:EE_ X-MS-Office365-Filtering-Correlation-Id: 9959c7af-1b24-41a3-2431-08dec7414dab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|36860700016|1800799024|376014|82310400026|56012099006|6133799003|3023799007|12006099003|18002099003|20052099010; X-Microsoft-Antispam-Message-Info: q5PTHSBwQMiWEIsyVIJJfnuyilwc4AKBVgEH9rtfggeHZRvPVAoqjg/K9CotOKL55E+Fanxrcn+TdAEUXMUplvL7sfuT1faLnhF7w+CETFuS/4YijhNQAV7w7gu700bzafYw5pmus4ril5c0BT5zIu677GyPyJ3wPjApPA9LrkJ1QTQRiLzktijhOpM04WpF4Zi3C8vTtVTRo06057F+TZFxGIw9xxnMMK+bxOD5ZNP58UkHXNbYRT+lsCqjtbYQ3ppfXGWbtZV/bQynnTm98NYLBJGx+23LZVm+zr4Mv5ExKhJLirrUGKwIqdFS5O7HufXSeAwBMS4w37cbIbk7oukr0MmpJU8FKud+O5iOEEknQXIbpdioW2OM3ZgJfgZrZnd0AQbtVQLwTnn8KMr2oEFxOc7FJKZnygaywPzwkWjA6s+TSR/rvUK/nXrP3eoLtHsHRAfrbiUCs8f6JQEbZqYOSDFAEjqUKZPrfplzyJdAn8eCItwHh1AnuNGtZsHOmc39B9phvDEXuw0H9jz775vbGz08Pq6eeD/XPFQXJcL0b2aYnX6qzmim8S2R1pQDjPcnZhlBmk7uab8OmbyZRYqS4u935ldnRd/APXdh7omjtlAC3Bagln4KAE/KtK4k9IfHq9dvNFAjkaRw4khY7q7Rq7QSJqzZ0QKUIgcotTM= X-Forefront-Antispam-Report: CIP:198.47.23.194;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:lewvzet200.ext.ti.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(36860700016)(1800799024)(376014)(82310400026)(56012099006)(6133799003)(3023799007)(12006099003)(18002099003)(20052099010);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rUydTlYFTx14A/sNfPbmsNp5TAhlS/Lmx83pvRgiMTdcciORrVipYjmvw2CIKvMwlGHbkA5ajLJtU5NGaNB/K5EH8qrNBX3EXUFxL+W6OjY6gkBXtjsTZ3ZiKcnAyU7KV9DMqZ+OTyK11RsYr8DdGLE7i5T9K95A5S+BtTxdspzd1yUlQoUeol1k30+3SnjmdxD53C5PazDW775jushMMOxRMzwLqbdIyUkqp0cXsu1N24I/x98AZsJgnuCogncsOL4ymRAWU8rjBW/uGG5NeBqUbi6qDPO2wUrbm/LYMcagJ9gkRnjxWMvfo5tM2BRSJIJmzXNvzqsfldPwcOTqt2iCGc4lOYQxdzMlUrGAAIvUwKZG0RU/Wf9d2rSikFLNRwnIfU/zXlBzAlqr72cv1Nom1Tv+4Tos1j0YTw/E8COucwxjI0fIo7yxHpqz3r4s X-OriginatorOrg: ti.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2026 22:40:42.1963 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9959c7af-1b24-41a3-2431-08dec7414dab X-MS-Exchange-CrossTenant-Id: e5b49634-450b-4709-8abb-1e2b19b982b7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5b49634-450b-4709-8abb-1e2b19b982b7;Ip=[198.47.23.194];Helo=[lewvzet200.ext.ti.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EDD5.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR10MB8249 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 10 Jun 2026 22:40:58 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-ti/message/20009 From: Antonios Christidis Migrate to a new version of Mesa (v25.2.8) for only Rogue GPU devices. The interface for SGX devices is not ready in the v25 fork. Due to this, still keep all of the v24 recipes. The right version of mesa will be picked up with the help of BSP_MESA_PVR_VERSION and COMPATIBLE_MACHINE (set on a per recipe basis). Copy over the main inc (also version 25.2.8) file from oe-core to be included in mesa-pvr v25.2.8 builds. This is the general flow that was done for mesa-pvr v24.0.1. Due to the way oe-core's v25.2.8 mesa.inc recipe works, expects the recipe that inherits it to setup all the PACKAGECONFIG variable append logic. This is different from the v24.0.1 flow, which has all of that logic as part of the inc file. So for mesa-pvr set that logic within the main recipe file. In regards to patches, there are 3 points/sources: 1) oe-core v24 recipe patches 2) oe-core v25 recipe patches 3) TI exclusive ones that are added on top of oe-core v24 Point 1 is already handled by the oe-core process. Regarding point 2 patches, one is already present within the src and the other is being carried by the new recipe. The patches from point 3 are already included in this version of mesa. Signed-off-by: Antonios Christidis --- meta-ti-bsp/conf/machine/include/ti-bsp.inc | 5 +- .../mesa/{mesa-pvr.inc => mesa-pvr-24.inc} | 0 ...sdetects-64bit-atomics-on-mips-clang.patch | 24 ++ .../recipes-graphics/mesa/mesa-pvr-25.inc | 356 ++++++++++++++++++ .../recipes-graphics/mesa/mesa-pvr_24.0.1.bb | 4 +- .../recipes-graphics/mesa/mesa-pvr_25.2.8.bb | 60 +++ 6 files changed, 447 insertions(+), 2 deletions(-) rename meta-ti-bsp/recipes-graphics/mesa/{mesa-pvr.inc => mesa-pvr-24.inc} (100%) create mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-25.2.8/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch create mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-25.inc create mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_25.2.8.bb diff --git a/meta-ti-bsp/conf/machine/include/ti-bsp.inc b/meta-ti-bsp/conf/machine/include/ti-bsp.inc index f7e2710c..38375ada 100644 --- a/meta-ti-bsp/conf/machine/include/ti-bsp.inc +++ b/meta-ti-bsp/conf/machine/include/ti-bsp.inc @@ -44,7 +44,10 @@ BSP_BOOTLOADER_VERSION:bsp-ti-6_18 = "2026.01%" BSP_ROGUE_DRIVER_PROVIDER:bsp-ti-6_18 = "ti-img-rogue-driver" BSP_ROGUE_DRIVER_VERSION:bsp-ti-6_18 = "25%" -BSP_MESA_PVR_VERSION:bsp-ti-6_18 = "24%" + +#Only two valid versions are 24.0.1 & 25.2.8. +#V24 is meant for SGX cores, V25 is meant for Rogue +BSP_MESA_PVR_VERSION:bsp-ti-6_18: = "2%" # ========== # ti-6_12 diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr.inc b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-24.inc similarity index 100% rename from meta-ti-bsp/recipes-graphics/mesa/mesa-pvr.inc rename to meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-24.inc diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-25.2.8/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-25.2.8/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch new file mode 100644 index 00000000..baa98a0d --- /dev/null +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-25.2.8/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch @@ -0,0 +1,24 @@ +From 02cc21800fe29f566add525e63f619c0536d6e7b Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 13 Jan 2020 15:23:47 -0800 +Subject: [PATCH] meson misdetects 64bit atomics on mips/clang + +Upstream-Status: Pending +Signed-off-by: Khem Raj +--- + src/util/u_atomic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/util/u_atomic.c b/src/util/u_atomic.c +index 5a5eab4..e499516 100644 +--- a/src/util/u_atomic.c ++++ b/src/util/u_atomic.c +@@ -21,7 +21,7 @@ + * IN THE SOFTWARE. + */ + +-#if defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD) ++#if !defined(__clang__) && defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD) + + #include + #include diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-25.inc b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-25.inc new file mode 100644 index 00000000..5c6beff1 --- /dev/null +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr-25.inc @@ -0,0 +1,356 @@ +# Copy from oe-core, commit sha:2c0c7c3e5b71, branch Whinlatter. +SUMMARY = "A free implementation of the OpenGL API" +DESCRIPTION = "Mesa is an open-source implementation of the OpenGL specification - \ +a system for rendering interactive 3D graphics. \ +A variety of device drivers allows Mesa to be used in many different environments \ +ranging from software emulation to complete hardware acceleration for modern GPUs. \ +Mesa is used as part of the overall Direct Rendering Infrastructure and X.org \ +environment." + +HOMEPAGE = "http://mesa3d.org" +BUGTRACKER = "https://bugs.freedesktop.org" +SECTION = "x11" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://docs/license.rst;md5=ffe678546d4337b732cfd12262e6af11" + +PE = "2" + +SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \ + file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \ + file://0001-freedreno-don-t-encode-build-path-into-binaries.patch \ +" + +SRC_URI[sha256sum] = "097842f3e49d996868b38688db87b006f7d4541e93ce86d2f341d8b3e7be7c93" +PV = "25.2.8" + +UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P\d+(\.\d+)+)" + +#Remove this, since it points to mesa and not mesa-pvr +#S = "${UNPACKDIR}/mesa-${PV}" + +#because we cannot rely on the fact that all apps will use pkgconfig, +#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER +do_install:append() { + # sed can't find EGL/eglplatform.h as it doesn't get installed when glvnd enabled. + # So, check if EGL/eglplatform.h exists before running sed. + if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)} && [ -f ${D}${includedir}/EGL/eglplatform.h ]; then + sed -i -e 's/^#elif defined(__unix__) && defined(EGL_NO_X11)$/#elif defined(__unix__) \&\& defined(EGL_NO_X11) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h + fi + # These are ICDs, apps are not supposed to link against them + if ${@bb.utils.contains('PACKAGECONFIG', 'glvnd', 'true', 'false', d)} ; then + rm -f ${D}${libdir}/libEGL_mesa.so ${D}${libdir}/libGLX_mesa.so + fi +} + +DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native python3-pyyaml-native" +EXTRANATIVEPATH += "chrpath-native" + +inherit meson pkgconfig python3native gettext features_check rust + +ANY_OF_DISTRO_FEATURES = "opencl opengl vulkan" + +PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)}" + +# set the MESA_BUILD_TYPE to either 'release' (default) or 'debug' +# by default the upstream mesa sources build a debug release +# here we assume the user will want a release build by default +MESA_BUILD_TYPE ?= "release" +def check_buildtype(d): + _buildtype = d.getVar('MESA_BUILD_TYPE') + if _buildtype not in ['release', 'debug']: + bb.fatal("unknown build type (%s), please set MESA_BUILD_TYPE to either 'release' or 'debug'" % _buildtype) + if _buildtype == 'debug': + return 'debugoptimized' + return 'plain' +MESON_BUILDTYPE = "${@check_buildtype(d)}" + +EXTRA_OEMESON = " \ + -Dglx-read-only-text=true \ + -Dplatforms='${@",".join("${PLATFORMS}".split())}' \ +" + +def strip_comma(s): + return s.strip(',') + +# skip all Rust dependencies if we are not building OpenCL" +INHIBIT_DEFAULT_RUST_DEPS = "${@bb.utils.contains('PACKAGECONFIG', 'opencl', '', '1', d)}" + +# "egl" requires "opengl" +PACKAGECONFIG[egl] = "-Degl=enabled, -Degl=disabled" + +# "gbm" requires "opengl" +PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled" + +# "gles" requires "opengl" +PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2=disabled" + +PACKAGECONFIG[glvnd] = "-Dglvnd=enabled, -Dglvnd=disabled, libglvnd" + +PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false" + +# "opencl" also requires libclc and gallium-llvm to be present in PKGCONFIG! +# Be sure to enable them both for the target and for the native build. +PACKAGECONFIG[opencl] = "-Dgallium-rusticl=true -Dmesa-clc-bundle-headers=enabled, -Dgallium-rusticl=false, bindgen-cli-native clang" + +X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr xorgproto libxshmfence" +# "x11" requires "opengl" +PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}" +PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols" + +# Entries for GPU vendors. +# Some of the drivers might have extra dependencies (libclc, gallium-llvm). +# Check them in the individual driver settings in VULKAN_DRIVERS and +# GALLIUMDRIVERS. +PACKAGECONFIG[amd] = "" +PACKAGECONFIG[asahi] = "" +PACKAGECONFIG[broadcom] = "" +PACKAGECONFIG[etnaviv] = ",,python3-pycparser-native" +PACKAGECONFIG[freedreno] = "" +PACKAGECONFIG[imagination] = "-Dimagination-srv=true,-Dimagination-srv=false" +PACKAGECONFIG[intel] = "" +PACKAGECONFIG[lima] = "" +PACKAGECONFIG[nouveau] = "" +PACKAGECONFIG[panfrost] = "" +PACKAGECONFIG[svga] = "" +PACKAGECONFIG[tegra] = "" +PACKAGECONFIG[v3d] = "" +PACKAGECONFIG[vc4] = "" +PACKAGECONFIG[virgl] = "" +PACKAGECONFIG[zink] = "" + + +VULKAN_DRIVERS_SWRAST = ",swrast" +# Crashes on x32 +VULKAN_DRIVERS_SWRAST:x86-x32 = "" + +# keep sorted by the driver name (rather than PKGCONFIG) +VULKAN_DRIVERS = "" +VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'amd gallium-llvm', ',amd', '', d)}" +VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'asahi libclc gallium-llvm', ',asahi', '', d)}" +VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" +VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" +VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}" +VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'intel libclc gallium-llvm', ',intel', '', d)}" +VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '${VULKAN_DRIVERS_SWRAST}', '', d)}" +VULKAN_DRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'panfrost libclc', ',panfrost', '', d)}" + +PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers" +PACKAGECONFIG[vulkan-beta] = "-Dvulkan-beta=true,-Dvulkan-beta=false" + +# mesa development and testing tools support, per driver + +# keep sorted by the driver name (rather than PKGCONFIG) +TOOLS = "" +TOOLS .= "${@bb.utils.contains('PACKAGECONFIG', 'asahi', ',asahi', '', d)}" +TOOLS .= "${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}" +TOOLS .= "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" +TOOLS .= "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination', '', d)}" +TOOLS .= "${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}" +TOOLS .= "${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}" + +# dependencies for tools. +TOOLS_DEPS = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ' ncurses libxml2 ', '', d)}" + +# the fdperf tool requires libconfig (a part of meta-oe) so it needs special +# treatment in addition to the usual 'freedreno tools'. +PACKAGECONFIG[freedreno-fdperf] = ",,libconfig" + +PACKAGECONFIG[tools] = "-Dtools=${@strip_comma('${TOOLS}')}, -Dtools='', ${TOOLS_DEPS}" +PACKAGECONFIG[xmlconfig] = "-Dxmlconfig=enabled, -Dxmlconfig=disabled, expat" + +GALLIUMDRIVERS_LLVMPIPE = ",llvmpipe" +GALLIUMDRIVERS_SOFTPIPE = ",softpipe" +# gallium softpipe and llvmpipe was found to crash Xorg on startup in x32 qemu +GALLIUMDRIVERS_LLVMPIPE:x86-x32 = "" +GALLIUMDRIVERS_SOFTPIPE:x86-x32 = "" + +# keep sorted by the driver name (rather than PKGCONFIG) +GALLIUMDRIVERS = "" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'asahi libclc gallium-llvm', ',asahi', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'intel', ',crocus', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'intel', ',i915', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'intel libclc gallium-llvm', ',iris', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '${GALLIUMDRIVERS_LLVMPIPE}', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'nouveau gallium-llvm', ',nouveau', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'panfrost libclc', ',panfrost', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'amd gallium-llvm', ',r300', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'amd', ',r600', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'amd gallium-llvm', ',radeonsi', '', d)}" +GALLIUMDRIVERS .= "${GALLIUMDRIVERS_SOFTPIPE}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'svga gallium-llvm', ',svga', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'tegra', ',tegra', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'virgl', ',virgl', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'vc4', ',vc4', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '', d)}" +GALLIUMDRIVERS .= "${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', '', d)}" + +PACKAGECONFIG[gallium] = "-Dgallium-drivers=${@strip_comma('${GALLIUMDRIVERS}')}, -Dgallium-drivers='', libdrm" +PACKAGECONFIG[gallium-llvm] = "-Dllvm=enabled -Dshared-llvm=enabled, -Dllvm=disabled, llvm llvm-native elfutils" + +MESA_CLC = "system" +MESA_CLC:class-native = "enabled" +INSTALL_MESA_CLC = "false" +INSTALL_MESA_CLC:class-native = "true" +MESA_NATIVE = "mesa-native" +MESA_NATIVE:class-native = "" + +PACKAGECONFIG[libclc] = "-Dmesa-clc=${MESA_CLC} -Dinstall-mesa-clc=${INSTALL_MESA_CLC} -Dmesa-clc-bundle-headers=enabled,,libclc spirv-tools spirv-llvm-translator ${MESA_NATIVE}" +PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial" +PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=enabled,-Dgallium-vdpau=disabled,libvdpau" + +PACKAGECONFIG[perfetto] = "-Dperfetto=true,-Dperfetto=false,libperfetto" + +PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind" + +PACKAGECONFIG[lmsensors] = "-Dlmsensors=enabled,-Dlmsensors=disabled,lmsensors" + +VIDEO_CODECS ?= "${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'all', 'all_free', d)}" +PACKAGECONFIG[video-codecs] = "-Dvideo-codecs=${VIDEO_CODECS}, -Dvideo-codecs=''" + +PACKAGECONFIG[teflon] = "-Dteflon=true, -Dteflon=false" + +# llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2) +FULL_OPTIMIZATION:append = " -fno-omit-frame-pointer" + +CFLAGS:append:armv5 = " -DMISSING_64BIT_ATOMICS" +CFLAGS:append:armv6 = " -DMISSING_64BIT_ATOMICS" + +# Remove the mesa dependency on mesa-dev, as mesa is empty +DEV_PKG_DEPENDENCY = "" + +# Provide virtual names to allow selecting preferred rproviders +RPROVIDES:mesa-vulkan-drivers += "virtual-vulkan-icd" +RPROVIDES:libopencl-mesa += "virtual-opencl-icd" + +# GLES2 and GLES3 implementations are packaged in a single library in libgles2-mesa. +# Add a dependency so the GLES3 dev package is associated with its implementation. +RPROVIDES:libgles2-mesa += "libgles3-mesa" +RPROVIDES:libgles2-mesa-dev += "libgles3-mesa-dev" + +RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'libclc', '', d)}" + +PACKAGES =+ "libegl-mesa libegl-mesa-dev \ + libgallium \ + libgl-mesa libgl-mesa-dev \ + libglx-mesa libglx-mesa-dev \ + libglapi libglapi-dev \ + libgbm libgbm-dev \ + libgles1-mesa libgles1-mesa-dev \ + libgles2-mesa libgles2-mesa-dev \ + libopencl-mesa \ + libteflon \ + mesa-megadriver mesa-vulkan-drivers \ + mesa-vdpau-drivers mesa-tools \ + " + +# For the packages that make up the OpenGL interfaces, inject variables so that +# they don't get Debian-renamed (which would remove the -mesa suffix), and +# RPROVIDEs/RCONFLICTs on the generic libgl name. +python __anonymous() { + pkgconfig = (d.getVar('PACKAGECONFIG') or "").split() + mlprefix = d.getVar("MLPREFIX") + suffix = "" + if "-native" in d.getVar("PN"): + suffix = "-native" + + for p in ("libegl", "libgl", "libglx", "libgles1", "libgles2", "libgles3", "libopencl"): + fullp = mlprefix + p + "-mesa" + suffix + d.appendVar("RRECOMMENDS:" + fullp, " ${MLPREFIX}mesa-megadriver" + suffix) + + d.setVar("DEBIAN_NOAUTONAME:%slibopencl-mesa%s" % (mlprefix, suffix), "1") + + if 'glvnd' in pkgconfig: + for p in ("libegl", "libglx"): + fullp = mlprefix + p + "-mesa" + suffix + d.appendVar("RPROVIDES:" + fullp, ' virtual-%s-icd' % p) + else: + for p in (("egl", "libegl", "libegl1"), + ("opengl", "libgl", "libgl1"), + ("gles", "libgles1", "libglesv1-cm1"), + ("gles", "libgles2", "libglesv2-2", "libgles3")): + if not p[0] in pkgconfig: + continue + fullp = mlprefix + p[1] + "-mesa" + suffix + pkgs = " " + " ".join(mlprefix + x + suffix for x in p[1:]) + d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1") + d.appendVar("RREPLACES:" + fullp, pkgs) + d.appendVar("RPROVIDES:" + fullp, pkgs) + d.appendVar("RCONFLICTS:" + fullp, pkgs) + + # For -dev, the first element is both the Debian and original name + fullp = mlprefix + p[1] + "-mesa-dev" + suffix + pkgs = " " + mlprefix + p[1] + "-dev" + suffix + d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1") + d.appendVar("RREPLACES:" + fullp, pkgs) + d.appendVar("RPROVIDES:" + fullp, pkgs) + d.appendVar("RCONFLICTS:" + fullp, pkgs) +} + +python mesa_populate_packages() { + pkgs = ['mesa', 'mesa-dev', 'mesa-dbg'] + for pkg in pkgs: + d.setVar("RPROVIDES:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) + d.setVar("RCONFLICTS:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) + d.setVar("RREPLACES:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) + + import re + dri_drivers_root = oe.path.join(d.getVar('PKGD'), d.getVar('libdir'), "dri") + if os.path.isdir(dri_drivers_root): + dri_pkgs = sorted(os.listdir(dri_drivers_root)) + lib_name = d.expand("${MLPREFIX}mesa-megadriver") + for p in dri_pkgs: + m = re.match(r'^(.*)_dri\.so$', p) + if m: + pkg_name = " ${MLPREFIX}mesa-driver-%s" % legitimize_package_name(m.group(1)) + d.appendVar("RPROVIDES:%s" % lib_name, pkg_name) + d.appendVar("RCONFLICTS:%s" % lib_name, pkg_name) + d.appendVar("RREPLACES:%s" % lib_name, pkg_name) +} + +PACKAGESPLITFUNCS =+ "mesa_populate_packages" + +PACKAGES_DYNAMIC += "^mesa-driver-.*" +PACKAGES_DYNAMIC:class-native = "^mesa-driver-.*-native" + +FILES:mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d" +FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${libdir}/libpowervr_rogue.so ${datadir}/vulkan" +FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*" +FILES:libegl-mesa = "${libdir}/libEGL*.so.* ${datadir}/glvnd/egl_vendor.d" +FILES:libgbm = "${libdir}/libgbm.so.* ${libdir}/gbm/*_gbm.so" +FILES:libgallium = "${libdir}/libgallium-*.so" +FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*" +FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*" +FILES:libgl-mesa = "${libdir}/libGL.so.*" +FILES:libglx-mesa = "${libdir}/libGLX*.so.*" +FILES:libopencl-mesa = "${libdir}/lib*OpenCL.so* ${sysconfdir}/OpenCL/vendors/*.icd" +FILES:libglapi = "${libdir}/libglapi.so.*" + +FILES:${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/GL/internal/dri_interface.h ${includedir}/vulkan ${libdir}/vdpau/*.so" +FILES:libegl-mesa-dev = "${libdir}/libEGL*.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc" +FILES:libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h ${includedir}/gbm_backend_abi.h" +FILES:libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL/*.h ${libdir}/pkgconfig/gl.pc ${libdir}/pkgconfig/glx.pc" +FILES:libglapi-dev = "${libdir}/libglapi.*" +FILES:libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc" +FILES:libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${includedir}/GLES3 ${libdir}/pkgconfig/glesv2.pc" +FILES:libteflon = "${libdir}/libteflon.so" +# catch all to get all the tools and data +FILES:${PN}-tools = "${bindir} ${datadir}" +ALLOW_EMPTY:${PN}-tools = "1" + +# All DRI drivers are symlinks to libdril_dri.so +INSANE_SKIP:${PN}-megadriver += "dev-so" + +# OpenCL ICDs package also ship correspondig .so files, there is no -dev package +INSANE_SKIP:libopencl-mesa += "dev-so" + +# Fix upgrade path from mesa to mesa-megadriver +RREPLACES:mesa-megadriver = "mesa" +RCONFLICTS:mesa-megadriver = "mesa" +RPROVIDES:mesa-megadriver = "mesa" + +# As of May 2025 it is known that LTO breaks Mesa, for example: +# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34318 +LTO = "" diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_24.0.1.bb b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_24.0.1.bb index 8ec06800..3e81eef6 100644 --- a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_24.0.1.bb +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_24.0.1.bb @@ -2,10 +2,12 @@ # upstream yet. This allows us to build the shims we need without completely # clobbering mesa. -require recipes-graphics/mesa/mesa-pvr.inc +require recipes-graphics/mesa/mesa-pvr-24.inc SUMMARY += " (with PowerVR for TI parts)" +COMPATIBLE_MACHINE = "ti33x|ti43x|am57xx|am65xx" + LIC_FILES_CHKSUM = "file://docs/license.rst;md5=63779ec98d78d823a9dc533a0735ef10" BRANCH = "powervr/${PV}" diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_25.2.8.bb b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_25.2.8.bb new file mode 100644 index 00000000..49925e60 --- /dev/null +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_25.2.8.bb @@ -0,0 +1,60 @@ +# PowerVR Graphics require several patches that have not made their way +# upstream yet. This allows us to build the shims we need without completely +# clobbering mesa. + +require recipes-graphics/mesa/mesa-pvr-25.inc + +SUMMARY += " (with PowerVR for TI parts)" + +COMPATIBLE_MACHINE = "j721e|j721s2|j784s4|j742s2|am62xx|am62pxx|j722s" + +LIC_FILES_CHKSUM = "file://docs/license.rst;md5=ffe678546d4337b732cfd12262e6af11" + +BRANCH = "powervr/${PV}" + +SRC_URI = "git://github.com/TexasInstruments/mesa.git;protocol=https;branch=${BRANCH} \ + file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch" + +SRCREV = "ffdef450e1f954af21768371506e013c19f5fe49" +PV = "25.2.8" +PR = "r1" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +GALLIUMDRIVERS:append = "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver', ',pvr', '', d)}" +GALLIUMDRIVERS:append = "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-sgx-ddk-km', ',sgx', '', d)}" + +VULKAN_DRIVERS:append = "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver', ',pvr', '', d)}" + +PACKAGECONFIG = " \ + gallium \ + video-codecs \ + ${@bb.utils.filter('DISTRO_FEATURES', 'x11 vulkan wayland glvnd', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm virgl', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'opencl libclc gallium-llvm', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'zink', '', d)} \ + xmlconfig \ +" + +GLPROVIDES = " \ + ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2 virtual/libgles3', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \ +" +PROVIDES = " \ + ${@bb.utils.contains('PACKAGECONFIG', 'glvnd', '', d.getVar('GLPROVIDES'), d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \ + virtual/mesa \ +" + +BBCLASSEXTEND = "native nativesdk" + +do_install:append () { + # remove pvr custom pkgconfig + rm -rf ${D}${datadir}/pkgconfig +} + +FILES:${PN}-dev += "${datadir}/mesa/wayland-drm.xml" +FILES:mesa-vulkan-drivers += "${libdir}/libpvr_mesa_wsi.so" + +RRECOMMENDS:mesa-megadriver:append:class-target = " ${@d.getVar('PREFERRED_PROVIDER_virtual/gpudriver')}"