From 135b7041e879ed3ca06172204c110f5fa10c8889 Mon Sep 17 00:00:00 2001 From: Antonios Christidis Date: Wed, 18 Feb 2026 15:48:14 -0600 Subject: ti-img-rogue-*: Migrate GPU driver version 25.2 -> 25.3 New recipes for GPU DDK 25.3. Update BSP configuration file to package driver, which now supports kernel 6.18. Signed-off-by: Antonios Christidis Signed-off-by: Ryan Eatmon --- meta-ti-bsp/conf/machine/include/ti-bsp.inc | 4 + .../ti-img-rogue-driver_25.2.6850647.bb | 44 ------ .../ti-img-rogue-driver_25.3.6908880.bb | 44 ++++++ .../ti-img-rogue-umlibs_25.2.6850647.bb | 152 --------------------- .../ti-img-rogue-umlibs_25.3.6908880.bb | 152 +++++++++++++++++++++ 5 files changed, 200 insertions(+), 196 deletions(-) delete mode 100644 meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_25.2.6850647.bb create mode 100644 meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_25.3.6908880.bb delete mode 100644 meta-ti-bsp/recipes-graphics/powervr-umlibs/ti-img-rogue-umlibs_25.2.6850647.bb create mode 100644 meta-ti-bsp/recipes-graphics/powervr-umlibs/ti-img-rogue-umlibs_25.3.6908880.bb (limited to 'meta-ti-bsp') diff --git a/meta-ti-bsp/conf/machine/include/ti-bsp.inc b/meta-ti-bsp/conf/machine/include/ti-bsp.inc index 0ca2de64..2c0acf83 100644 --- a/meta-ti-bsp/conf/machine/include/ti-bsp.inc +++ b/meta-ti-bsp/conf/machine/include/ti-bsp.inc @@ -42,6 +42,10 @@ BSP_KERNEL_VERSION:bsp-ti-6_18 = "6.18%" BSP_BOOTLOADER_PROVIDER:bsp-ti-6_18 = "u-boot-ti-staging" 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%" + # ========== # ti-6_12 # TI staging kernel 6.12, u-boot 2025.01 diff --git a/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_25.2.6850647.bb b/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_25.2.6850647.bb deleted file mode 100644 index b2f5e4ea..00000000 --- a/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_25.2.6850647.bb +++ /dev/null @@ -1,44 +0,0 @@ -SUMMARY = "Kernel drivers for the PowerVR Rogue GPU found in the TI SoCs" -HOMEPAGE = "http://git.ti.com/graphics/ti-img-rogue-driver" -LICENSE = "MIT | GPL-2.0-only" -LIC_FILES_CHKSUM = "file://README;beginline=14;endline=19;md5=0403c7dea01a2b8232261e805325fac2" - -inherit module - -PROVIDES = "virtual/gpudriver" - -PACKAGE_ARCH = "${MACHINE_ARCH}" - -COMPATIBLE_MACHINE = "j721e|j721s2|j784s4|j742s2|am62xx|am62pxx|j722s" - -DEPENDS = "virtual/kernel" - -BRANCH = "linuxws/scarthgap/k6.12/${PV}" - -SRC_URI = "git://git.ti.com/git/graphics/ti-img-rogue-driver.git;protocol=https;branch=${BRANCH}" - -SRCREV = "72723eea0cab47c20e5734c1c7b9a441ed2d74c2" - - -TARGET_PRODUCT:j721e = "j721e_linux" -TARGET_PRODUCT:j721s2 = "j721s2_linux" -TARGET_PRODUCT:j784s4 = "j784s4_linux" -TARGET_PRODUCT:j742s2 = "j784s4_linux" -TARGET_PRODUCT:am62xx = "am62_linux" -TARGET_PRODUCT:am62pxx = "am62p_linux" -TARGET_PRODUCT:j722s = "j722s_linux" -PVR_BUILD = "release" -PVR_WS = "lws-generic" - -EXTRA_OEMAKE += 'KERNELDIR="${KBUILD_OUTPUT}" BUILD=${PVR_BUILD} PVR_BUILD_DIR=${TARGET_PRODUCT} WINDOW_SYSTEM=${PVR_WS}' - -do_compile(){ - unset CC - oe_runmake -} - -do_install() { - make -C ${STAGING_KERNEL_DIR} M=${B}/binary_${TARGET_PRODUCT}_${PVR_WS}_${PVR_BUILD}/target_aarch64/kbuild INSTALL_MOD_PATH=${D}${root_prefix} PREFIX=${STAGING_DIR_HOST} modules_install -} - -RRECOMMENDS:${PN} += "ti-img-rogue-umlibs" diff --git a/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_25.3.6908880.bb b/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_25.3.6908880.bb new file mode 100644 index 00000000..ea081651 --- /dev/null +++ b/meta-ti-bsp/recipes-bsp/powervr-drivers/ti-img-rogue-driver_25.3.6908880.bb @@ -0,0 +1,44 @@ +SUMMARY = "Kernel drivers for the PowerVR Rogue GPU found in the TI SoCs" +HOMEPAGE = "http://git.ti.com/graphics/ti-img-rogue-driver" +LICENSE = "MIT | GPL-2.0-only" +LIC_FILES_CHKSUM = "file://README;beginline=14;endline=19;md5=0403c7dea01a2b8232261e805325fac2" + +inherit module + +PROVIDES = "virtual/gpudriver" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +COMPATIBLE_MACHINE = "j721e|j721s2|j784s4|j742s2|am62xx|am62pxx|j722s" + +DEPENDS = "virtual/kernel" + +BRANCH = "linuxws/scarthgap/k6.18/${PV}" + +SRC_URI = "git://git.ti.com/git/graphics/ti-img-rogue-driver.git;protocol=https;branch=${BRANCH}" + +SRCREV = "4fa6d8f63363e4926a0a7e7ef4a317c3d9c0f5b7" + + +TARGET_PRODUCT:j721e = "j721e_linux" +TARGET_PRODUCT:j721s2 = "j721s2_linux" +TARGET_PRODUCT:j784s4 = "j784s4_linux" +TARGET_PRODUCT:j742s2 = "j784s4_linux" +TARGET_PRODUCT:am62xx = "am62_linux" +TARGET_PRODUCT:am62pxx = "am62p_linux" +TARGET_PRODUCT:j722s = "j722s_linux" +PVR_BUILD = "release" +PVR_WS = "lws-generic" + +EXTRA_OEMAKE += 'KERNELDIR="${KBUILD_OUTPUT}" BUILD=${PVR_BUILD} PVR_BUILD_DIR=${TARGET_PRODUCT} WINDOW_SYSTEM=${PVR_WS}' + +do_compile(){ + unset CC + oe_runmake +} + +do_install() { + make -C ${STAGING_KERNEL_DIR} M=${B}/binary_${TARGET_PRODUCT}_${PVR_WS}_${PVR_BUILD}/target_aarch64/kbuild INSTALL_MOD_PATH=${D}${root_prefix} PREFIX=${STAGING_DIR_HOST} modules_install +} + +RRECOMMENDS:${PN} += "ti-img-rogue-umlibs" diff --git a/meta-ti-bsp/recipes-graphics/powervr-umlibs/ti-img-rogue-umlibs_25.2.6850647.bb b/meta-ti-bsp/recipes-graphics/powervr-umlibs/ti-img-rogue-umlibs_25.2.6850647.bb deleted file mode 100644 index e4b95f8e..00000000 --- a/meta-ti-bsp/recipes-graphics/powervr-umlibs/ti-img-rogue-umlibs_25.2.6850647.bb +++ /dev/null @@ -1,152 +0,0 @@ -SUMMARY = "Userspace libraries for PowerVR Rogue GPU on TI SoCs" -HOMEPAGE = "http://git.ti.com/graphics/ti-img-rogue-umlibs" -LICENSE = "TI-TFL" -LIC_FILES_CHKSUM = "file://LICENSE;md5=7232b98c1c58f99e3baa03de5207e76f" - -PACKAGE_ARCH = "${MACHINE_ARCH}" -COMPATIBLE_MACHINE = "j721e|j721s2|j784s4|j742s2|am62xx|am62pxx|j722s" - -BRANCH = "linuxws/scarthgap/k6.12/${PV}" -SRC_URI = "git://git.ti.com/git/graphics/ti-img-rogue-umlibs.git;protocol=https;branch=${BRANCH}" -SRCREV = "adcbb5c620ff172da4152c02a2fee8f42dc4c472" - -TARGET_PRODUCT:j721e = "j721e_linux" -TARGET_PRODUCT:j721s2 = "j721s2_linux" -TARGET_PRODUCT:j784s4 = "j784s4_linux" -TARGET_PRODUCT:j742s2 = "j784s4_linux" -TARGET_PRODUCT:am62xx = "am62_linux" -TARGET_PRODUCT:am62pxx = "am62p_linux" -TARGET_PRODUCT:j722s = "j722s_linux" -PVR_BUILD = "release" -PVR_WS = "lws-generic" - -RDEPENDS:${PN} = " \ - libdrm \ - ti-img-rogue-driver \ - ${PN}-firmware \ -" - -PACKAGECONFIG ?= " \ - ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan wayland', 'vulkan', '', d)} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'opengl opencl', d)} \ -" - -PACKAGECONFIG[opengl] = ",,,,${GLES_PACKAGES}" -PACKAGECONFIG[vulkan] = ",,,,${VULKAN_PACKAGES}" -PACKAGECONFIG[opencl] = ",,,,${OPENCL_PACKAGES}" - -def get_file_list(package_list_var, d): - file_list = [] - package_list = d.getVar(package_list_var) - prefix = f"{d.getVar('D')}/" - if package_list: - for package in package_list.split(): - package_file_string = d.getVar(f"FILES:{package}") - if package_file_string: - for package_file in package_file_string.split(): - file_list.append(f"{prefix}{package_file}") - return " ".join(file_list) - -EXTRA_OEMAKE += 'BUILD=${PVR_BUILD} TARGET_PRODUCT=${TARGET_PRODUCT} WINDOW_SYSTEM=${PVR_WS}' - -do_configure[noexec] = "1" -do_compile[noexec] = "1" -do_install() { - oe_runmake 'DESTDIR=${D}' install - if ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'false', 'true', d)}; then - for file in ${@get_file_list('GLES_PACKAGES', d)}; do - rm -rf ${file} - done - fi - if ${@bb.utils.contains('PACKAGECONFIG', 'vulkan', 'false', 'true', d)}; then - for file in ${@get_file_list('VULKAN_PACKAGES', d)}; do - rm -rf ${file} - done - fi - if ${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'false', 'true', d)}; then - for file in ${@get_file_list('OPENCL_PACKAGES', d)}; do - rm -rf ${file} - done - fi - if ${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'true', 'false', d)}; then - if [ -e ${D}/lib/firmware ]; then - mv ${D}/lib/firmware ${D}${nonarch_base_libdir} - fi - fi - - # clean up any empty directories - find "${D}" -empty -type d -delete - - # fix permissions - chown -R root:root "${D}" -} - -GLES_PACKAGES = "libgles1-rogue libgles2-rogue libgles3-rogue" -VULKAN_PACKAGES = "libvk-rogue" -OPENCL_PACKAGES = "libopencl-rogue libopencl-rogue-tools" - -PACKAGES = " \ - ${@bb.utils.contains('PACKAGECONFIG', 'opengl', d.getVar('GLES_PACKAGES'), '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'vulkan', d.getVar('VULKAN_PACKAGES'), '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'opencl', d.getVar('OPENCL_PACKAGES'), '', d)} \ - ${PN}-tools \ - ${PN}-firmware \ - ${PN} \ -" - -# Inject variables so that packages don't get Debian-renamed (which would -# remove the -rogue suffix), but don't RPROVIDEs/RCONFLICTs on the generic -# libgl name to prevent colliding with swrast libs -python __anonymous() { - suffix = "" - if "-native" in d.getVar("PN"): - suffix = "-native" - for p in (("vulkan", "libvk",), - ("gles", "libgles1", "libglesv1-cm1"), - ("gles", "libgles2", "libglesv2-2"), - ("gles", "libgles3",), - ("opencl", "libopencl",)): - mlprefix = d.getVar("MLPREFIX") - fullp = mlprefix + p[1] + "-rogue" + suffix - mlprefix = d.getVar("MLPREFIX") - pkgs = " " + " ".join(mlprefix + x + suffix for x in p[1:]) - d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1") - d.setVar("INSANE_SKIP:" + fullp, "dev-so ldflags") - d.appendVar("RRECOMMENDS:" + fullp, " ${MLPREFIX}ti-img-rogue-umlibs" + suffix) -} - -# gles specific shared objects -FILES:libgles1-rogue = "${libdir}/libGLESv1*.so*" -FILES:libgles2-rogue = "${libdir}/libGLESv2*.so*" -RDEPENDS:libgles1-rogue += "mesa-megadriver" -RDEPENDS:libgles2-rogue += "mesa-megadriver" - -# vulkan specific shared objects and configs -FILES:libvk-rogue = "${libdir}/libVK_IMG.so* ${datadir}/vulkan" -RDEPENDS:libvk-rogue += "vulkan-loader wayland libdrm" - -# opencl specific shared objects and configs -FILES:libopencl-rogue = "${libdir}/libPVROCL.so* ${sysconfdir}/OpenCL" -RDEPENDS:libopencl-rogue += "opencl-icd-loader" -RRECOMMENDS:libopencl-rogue += "libopencl-rogue-tools" -FILES:libopencl-rogue-tools += "${bindir}/ocl*" -DEBIAN_NOAUTONAME:libopencl-rogue-tools = "1" -INSANE_SKIP:libopencl-rogue-tools = "ldflags" - -# optional tools and tests -FILES:${PN}-tools = "${bindir}/" -RDEPENDS:${PN}-tools = "python3-core libdrm ${PN}" -INSANE_SKIP:${PN}-tools = "ldflags" - -# required firmware -FILES:${PN}-firmware = "${base_libdir}/firmware/*" -INSANE_SKIP:${PN}-firmware += "arch" - -# common libraries -FILES:${PN} = "${libdir}" - -RRECOMMENDS:${PN} += " \ - ${PN}-tools \ -" - -INSANE_SKIP:${PN} += "already-stripped dev-so ldflags" diff --git a/meta-ti-bsp/recipes-graphics/powervr-umlibs/ti-img-rogue-umlibs_25.3.6908880.bb b/meta-ti-bsp/recipes-graphics/powervr-umlibs/ti-img-rogue-umlibs_25.3.6908880.bb new file mode 100644 index 00000000..5246f588 --- /dev/null +++ b/meta-ti-bsp/recipes-graphics/powervr-umlibs/ti-img-rogue-umlibs_25.3.6908880.bb @@ -0,0 +1,152 @@ +SUMMARY = "Userspace libraries for PowerVR Rogue GPU on TI SoCs" +HOMEPAGE = "http://git.ti.com/graphics/ti-img-rogue-umlibs" +LICENSE = "TI-TFL" +LIC_FILES_CHKSUM = "file://LICENSE;md5=7232b98c1c58f99e3baa03de5207e76f" + +PACKAGE_ARCH = "${MACHINE_ARCH}" +COMPATIBLE_MACHINE = "j721e|j721s2|j784s4|j742s2|am62xx|am62pxx|j722s" + +BRANCH = "linuxws/scarthgap/k6.18/${PV}" +SRC_URI = "git://git.ti.com/git/graphics/ti-img-rogue-umlibs.git;protocol=https;branch=${BRANCH}" +SRCREV = "2ecc98c61aedd931d8acf6fb4a1150ebf57fb178" + +TARGET_PRODUCT:j721e = "j721e_linux" +TARGET_PRODUCT:j721s2 = "j721s2_linux" +TARGET_PRODUCT:j784s4 = "j784s4_linux" +TARGET_PRODUCT:j742s2 = "j784s4_linux" +TARGET_PRODUCT:am62xx = "am62_linux" +TARGET_PRODUCT:am62pxx = "am62p_linux" +TARGET_PRODUCT:j722s = "j722s_linux" +PVR_BUILD = "release" +PVR_WS = "lws-generic" + +RDEPENDS:${PN} = " \ + libdrm \ + ti-img-rogue-driver \ + ${PN}-firmware \ +" + +PACKAGECONFIG ?= " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan wayland', 'vulkan', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'opengl opencl', d)} \ +" + +PACKAGECONFIG[opengl] = ",,,,${GLES_PACKAGES}" +PACKAGECONFIG[vulkan] = ",,,,${VULKAN_PACKAGES}" +PACKAGECONFIG[opencl] = ",,,,${OPENCL_PACKAGES}" + +def get_file_list(package_list_var, d): + file_list = [] + package_list = d.getVar(package_list_var) + prefix = f"{d.getVar('D')}/" + if package_list: + for package in package_list.split(): + package_file_string = d.getVar(f"FILES:{package}") + if package_file_string: + for package_file in package_file_string.split(): + file_list.append(f"{prefix}{package_file}") + return " ".join(file_list) + +EXTRA_OEMAKE += 'BUILD=${PVR_BUILD} TARGET_PRODUCT=${TARGET_PRODUCT} WINDOW_SYSTEM=${PVR_WS}' + +do_configure[noexec] = "1" +do_compile[noexec] = "1" +do_install() { + oe_runmake 'DESTDIR=${D}' install + if ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'false', 'true', d)}; then + for file in ${@get_file_list('GLES_PACKAGES', d)}; do + rm -rf ${file} + done + fi + if ${@bb.utils.contains('PACKAGECONFIG', 'vulkan', 'false', 'true', d)}; then + for file in ${@get_file_list('VULKAN_PACKAGES', d)}; do + rm -rf ${file} + done + fi + if ${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'false', 'true', d)}; then + for file in ${@get_file_list('OPENCL_PACKAGES', d)}; do + rm -rf ${file} + done + fi + if ${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'true', 'false', d)}; then + if [ -e ${D}/lib/firmware ]; then + mv ${D}/lib/firmware ${D}${nonarch_base_libdir} + fi + fi + + # clean up any empty directories + find "${D}" -empty -type d -delete + + # fix permissions + chown -R root:root "${D}" +} + +GLES_PACKAGES = "libgles1-rogue libgles2-rogue libgles3-rogue" +VULKAN_PACKAGES = "libvk-rogue" +OPENCL_PACKAGES = "libopencl-rogue libopencl-rogue-tools" + +PACKAGES = " \ + ${@bb.utils.contains('PACKAGECONFIG', 'opengl', d.getVar('GLES_PACKAGES'), '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'vulkan', d.getVar('VULKAN_PACKAGES'), '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'opencl', d.getVar('OPENCL_PACKAGES'), '', d)} \ + ${PN}-tools \ + ${PN}-firmware \ + ${PN} \ +" + +# Inject variables so that packages don't get Debian-renamed (which would +# remove the -rogue suffix), but don't RPROVIDEs/RCONFLICTs on the generic +# libgl name to prevent colliding with swrast libs +python __anonymous() { + suffix = "" + if "-native" in d.getVar("PN"): + suffix = "-native" + for p in (("vulkan", "libvk",), + ("gles", "libgles1", "libglesv1-cm1"), + ("gles", "libgles2", "libglesv2-2"), + ("gles", "libgles3",), + ("opencl", "libopencl",)): + mlprefix = d.getVar("MLPREFIX") + fullp = mlprefix + p[1] + "-rogue" + suffix + mlprefix = d.getVar("MLPREFIX") + pkgs = " " + " ".join(mlprefix + x + suffix for x in p[1:]) + d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1") + d.setVar("INSANE_SKIP:" + fullp, "dev-so ldflags") + d.appendVar("RRECOMMENDS:" + fullp, " ${MLPREFIX}ti-img-rogue-umlibs" + suffix) +} + +# gles specific shared objects +FILES:libgles1-rogue = "${libdir}/libGLESv1*.so*" +FILES:libgles2-rogue = "${libdir}/libGLESv2*.so*" +RDEPENDS:libgles1-rogue += "mesa-megadriver" +RDEPENDS:libgles2-rogue += "mesa-megadriver" + +# vulkan specific shared objects and configs +FILES:libvk-rogue = "${libdir}/libVK_IMG.so* ${datadir}/vulkan" +RDEPENDS:libvk-rogue += "vulkan-loader wayland libdrm" + +# opencl specific shared objects and configs +FILES:libopencl-rogue = "${libdir}/libPVROCL.so* ${sysconfdir}/OpenCL" +RDEPENDS:libopencl-rogue += "opencl-icd-loader" +RRECOMMENDS:libopencl-rogue += "libopencl-rogue-tools" +FILES:libopencl-rogue-tools += "${bindir}/ocl*" +DEBIAN_NOAUTONAME:libopencl-rogue-tools = "1" +INSANE_SKIP:libopencl-rogue-tools = "ldflags" + +# optional tools and tests +FILES:${PN}-tools = "${bindir}/" +RDEPENDS:${PN}-tools = "python3-core libdrm ${PN}" +INSANE_SKIP:${PN}-tools = "ldflags" + +# required firmware +FILES:${PN}-firmware = "${base_libdir}/firmware/*" +INSANE_SKIP:${PN}-firmware += "arch" + +# common libraries +FILES:${PN} = "${libdir}" + +RRECOMMENDS:${PN} += " \ + ${PN}-tools \ +" + +INSANE_SKIP:${PN} += "already-stripped dev-so ldflags" -- cgit v1.2.3-54-g00ecf