From 24e9324551ecd853b7fa5326fadface547b96652 Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko Date: Thu, 11 May 2023 18:40:49 +0000 Subject: mesa-pvr: convert bbappend into standalone alternative provider There are some unobvious issues with adding PVR support to Mesa via a bbappend: 1. We need to mark mesa package as machine-specific, due to differences in builds between SGX, Rogue and software-rendering 2. We also need to then mark mesa package as providing safe ABIs (EGL/GLES/GBM) in order for all generic dependent packages to not be treated as machine-specific, allowing their re-use across different machines of the same architecture But doing the above alters the upstream mesa package and changes its signatures even when not building for TI platforms, which is a Yocto Project compliance violation. In order to resolve this issue, convert Mesa bbappend, that adds PVR support, into its own standalone alternative provider, called mesa-pvr and allow selecting it with PREFERRED_PROVIDER settings. Signed-off-by: Denys Dmytriyenko Signed-off-by: Ryan Eatmon --- .../recipes-graphics/mesa/mesa-pvr_22.3.5.bb | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb (limited to 'meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb') diff --git a/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb new file mode 100644 index 00000000..0de3cb94 --- /dev/null +++ b/meta-ti-bsp/recipes-graphics/mesa/mesa-pvr_22.3.5.bb @@ -0,0 +1,57 @@ +# 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.inc + +SUMMARY += " (with PowerVR support for TI platforms)" + +LIC_FILES_CHKSUM = "file://docs/license.rst;md5=63779ec98d78d823a9dc533a0735ef10" + +BRANCH = "powervr/kirkstone/${PV}" + +SRC_URI = " \ + git://gitlab.freedesktop.org/StaticRocket/mesa.git;protocol=https;branch=${BRANCH} \ + file://0001-meson.build-check-for-all-linux-host_os-combinations.patch \ + file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \ + file://0001-util-format-Check-for-NEON-before-using-it.patch \ + file://0001-gbm-backend-fix-gbm-compile-without-dri.patch \ + file://0001-freedreno-pm4-Use-unsigned-instead-of-uint-to-fix-mu.patch \ +" + +S = "${WORKDIR}/git" + +SRCREV = "54fd9d7dea098b6f11c2a244b0c6763dc8c5690c" + +PACKAGECONFIG:append = " \ + ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-img-rogue-driver', 'pvr', '', d)} \ + ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/gpudriver', 'ti-sgx-ddk-km', 'sgx', '', d)} \ +" + +PVR_DISPLAY_CONTROLLER_ALIAS ??= "tidss" +PACKAGECONFIG[pvr] = "-Dgallium-pvr-alias=${PVR_DISPLAY_CONTROLLER_ALIAS}," +PACKAGECONFIG[sgx] = "-Dgallium-sgx-alias=${PVR_DISPLAY_CONTROLLER_ALIAS}," + +PACKAGECONFIG:remove = "video-codecs" +PACKAGECONFIG[video-codecs] = "" +PACKAGECONFIG:remove = "elf-tls" +PACKAGECONFIG[elf-tls] = "" +PACKAGECONFIG:remove = "xvmc" +PACKAGECONFIG[xvmc] = "" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'pvr', ',pvr', '', d)}" +GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'sgx', ',sgx', '', d)}" + +VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'pvr', ',pvr', '', d)}" + +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')}" -- cgit v1.2.3-54-g00ecf