Merge pull request #2148 from sydarn/amlogic-libmali

S922x rockchip libmali merge
This commit is contained in:
sydarn
2026-01-03 13:31:01 +01:00
committed by GitHub
6 changed files with 30 additions and 113 deletions

View File

@@ -69,10 +69,10 @@
# Additional Firmware to use ( )
# Space separated list is supported,
# e.g. FIRMWARE=""
FIRMWARE="libmali-amlogic"
FIRMWARE=""
# Additional packages to install
ADDITIONAL_PACKAGES="weston-kiosk-shell-dpms"
ADDITIONAL_PACKAGES="weston-kiosk-shell-dpms libmali"
# Debug tty path
DEBUG_TTY="/dev/ttyAML0"

View File

@@ -1,18 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2025-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="libmali-amlogic-gbm-shim"
PKG_VERSION="5bf814354982c7e3ad0cbef73edbf88b389ffe68"
PKG_LICENSE="mali_driver"
PKG_ARCH="aarch64"
PKG_SITE="https://github.com/viraniac/mali-debs"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_TARGET="toolchain libdrm"
PKG_TOOLCHAIN="make"
PKG_LONGDESC="GBM shim for Vulkan Mali drivers for S922X SOC"
makeinstall_target() {
mkdir -p ${INSTALL}/usr/lib
cp ${PKG_BUILD}/mali_gbm_shim.so ${INSTALL}/usr/lib/
}

View File

@@ -1,13 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2025-present ROCKNIX (https://github.com/ROCKNIX)
SRC_DIR = $(CURDIR)/jammy/arm64/VIM4/wayland/src
CFLAGS = -Wall -O2 -fpic -shared -I$(TOOLCHAIN)/include
SOURCES = "gbm_bo_create_with_modifiers2.c"
BINARY = "mali_gbm_shim.so"
all:
$(CC) $(CFLAGS) -o $(BINARY) $(SRC_DIR)/$(SOURCES)
clean:
rm -f $(BINARY)

View File

@@ -1,37 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
PKG_NAME="libmali-amlogic"
PKG_VERSION="r51p0-00eac0"
PKG_LICENSE="mali_driver"
PKG_ARCH="aarch64"
PKG_SITE="https://developer.arm.com/downloads/-/mali-drivers/user-space"
PKG_URL="https://developer.arm.com/-/media/Files/downloads/mali-drivers/user-space/odroid-n2plus/BXODROIDN2PL-${PKG_VERSION}.tar"
PKG_DEPENDS_TARGET="toolchain mesa vulkan-tools gpudriver vulkan-wsi-layer libmali-amlogic-gbm-shim"
PKG_TOOLCHAIN="manual"
PKG_LONGDESC="OpenGL ES and Vulkan Mali drivers for s922x soc"
make_target() {
:
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/{lib,share}
mkdir -p ${INSTALL}/usr/lib/mali
tar -xvJf ${PKG_BUILD}/mali.tar.xz -C ${INSTALL}
mv ${INSTALL}/lib/${TARGET_ARCH}-linux-gnu/* ${INSTALL}/usr/lib/mali/
mv ${INSTALL}/usr/lib/mali/libmali.* ${INSTALL}/usr/lib/
rm -r ${INSTALL}/lib
tar -xvJf ${PKG_BUILD}/rootfs_additions.tar.xz -C ${INSTALL}/usr/share
mv ${INSTALL}/usr/share/etc/vulkan/* ${INSTALL}/usr/share/vulkan/
rm -r ${INSTALL}/usr/share/etc
# Remove packages WSI layer, we build our own
rm -r ${INSTALL}/usr/share/vulkan/implicit_layer.d
}
post_makeinstall_target() {
SHIM_PKG_INSTALL=$(get_pkg_variable libmali-amlogic-gbm-shim PKG_INSTALL)
cp -P "${SHIM_PKG_INSTALL}"/usr/lib/mali_gbm_shim.so "${INSTALL}"/usr/lib/
patchelf --add-needed mali_gbm_shim.so "${INSTALL}"/usr/lib/libmali.so.0
}

View File

@@ -26,50 +26,22 @@ load_driver() {
modprobe -r @PAN@
modprobe mali_kbase
case ${HW_DEVICE} in
"S922X")
# Bind mount libmali libraries if required
grep -q /usr/lib/libEGL.so /proc/mounts && mount_required=false || mount_required=true
if [[ $mount_required = true ]]; then
mount --bind /usr/lib/mali/libEGL.so.1.4.0 /usr/lib/libEGL.so.1.1.0
mount --bind /usr/lib/mali/libGLESv1_CM.so.1.1.0 /usr/lib/libGLESv1_CM.so.1.2.0
mount --bind /usr/lib/mali/libGLESv2.so.2.1.0 /usr/lib/libGLESv2.so.2.1.0
mount --bind /usr/lib/mali/libgbm.so.1.0.0 /usr/lib/libgbm.so.1.0.0
fi
# Deliberately break OpenGL checks
mount --bind /dev/null /usr/lib/libGL.so
;;
*)
grep -q /usr/lib/libEGL.so /proc/mounts || find /usr/{lib,lib32}/mali -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/mali\//\/}' ';'
# Portmaster is not ready for SDL in glesonly subdir, so override libs the dirty way
if [ -d /usr/lib/glesonly ]; then
grep -q /usr/lib/libSDL2-2.0.so /proc/mounts || find /usr/{lib,lib32}/glesonly -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/glesonly\//\/}' ';'
fi
mount --bind /dev/null /usr/lib/libGL.so
mount --bind /dev/null /usr/lib32/libGL.so
;;
esac
grep -q /usr/lib/libEGL.so /proc/mounts || find /usr/{lib,lib32}/mali -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/mali\//\/}' ';'
# Portmaster is not ready for SDL in glesonly subdir, so override libs the dirty way
if [ -d /usr/lib/glesonly ]; then
grep -q /usr/lib/libSDL2-2.0.so /proc/mounts || find /usr/{lib,lib32}/glesonly -type f -exec bash -c 'lib={}; mount --bind $lib ${lib/\/glesonly\//\/}' ';'
fi
mount --bind /dev/null /usr/lib/libGL.so
mount --bind /dev/null /usr/lib32/libGL.so
;;
"panfrost")
modprobe -r mali_kbase
modprobe @PAN@
case ${HW_DEVICE} in
"S922X")
umount /usr/lib/libEGL.so.1.1.0
umount /usr/lib/libGLESv1_CM.so.1.2.0
umount /usr/lib/libGLESv2.so.2.1.0
umount /usr/lib/libgbm.so.1.0.0
;;
*)
grep -q /usr/lib/libEGL.so /proc/mounts && find /usr/lib/mali -type f -exec bash -c 'lib={}; umount ${lib/\/mali\//\/}' ';'
if [ -d /usr/lib/glesonly ]; then
grep -q /usr/lib/libSDL2-2.0.so /proc/mounts && find /usr/lib/glesonly -type f -exec bash -c 'lib={}; umount ${lib/\/glesonly\//\/}' ';'
fi
;;
esac
grep -q /usr/lib/libEGL.so /proc/mounts && find /usr/lib/mali -type f -exec bash -c 'lib={}; umount ${lib/\/mali\//\/}' ';'
if [ -d /usr/lib/glesonly ]; then
grep -q /usr/lib/libSDL2-2.0.so /proc/mounts && find /usr/lib/glesonly -type f -exec bash -c 'lib={}; umount ${lib/\/glesonly\//\/}' ';'
fi
;;
*)
exit 3

View File

@@ -6,7 +6,7 @@
PKG_NAME="libmali"
PKG_VERSION="g13p0"
PKG_LICENSE="nonfree"
PKG_SITE="https://github.com/tsukumijima/libmali-rockchip"
PKG_SITE="https://github.com/ROCKNIX/libmali"
# zip format makes extract very fast (<1s). tgz takes 20 seconds to scan the whole file
#PKG_URL="${PKG_SITE}/archive/refs/tags/${PKG_VERSION}.zip"
PKG_URL="${PKG_SITE}/archive/master.zip"
@@ -31,6 +31,12 @@ case "${DISPLAYSERVER}" in
;;
esac
if [ "${DEVICE}" = "S922X" ] && [ "${ARCH}" = "aarch64" ]; then
PKG_VERSION="r51p0"
MALI_FAMILY="meson"
PKG_DEPENDS_TARGET+=" vulkan-wsi-layer vulkan-tools"
fi
PKG_MESON_OPTS_TARGET+=" -Darch=${ARCH} -Dgpu=${MALI_FAMILY} -Dversion=${PKG_VERSION} -Dplatform=${PLATFORM} \
-Dkhr-header=false -Dvendor-package=true -Dwrappers=enabled -Dhooks=true"
@@ -41,9 +47,12 @@ unpack() {
pwd
# Extract only what is needed
LIBNAME="libmali-${MALI_FAMILY}-${PKG_VERSION}-${PLATFORM}.so"
unzip -q "${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME}" "*/hook/*" "*/include/*" "*/scripts/*" "*/meson*" "*/${LIBNAME}"
mv libmali-rockchip-*/* .
rmdir libmali-rockchip-*
unzip -q "${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME}" "*/hook/*" "*/include/*" "*/scripts/*" "*/meson*" "*/data/*" "*/${LIBNAME}"
mv libmali*/* .
rmdir libmali-*
if [ "${MALI_FAMILY}" = "meson" ]; then
mv data/vulkan/mali_meson.json.in data/vulkan/mali.json.in
fi
ln -s lib optimize_3
}
@@ -61,4 +70,8 @@ post_makeinstall_target() {
if [ ${DEVICE} = "RK3588" ] && [ ${TARGET_ARCH} = "aarch64" ]; then
curl -Lo ${INSTALL}/usr/lib/libmali-${MALI_FAMILY}-${PKG_VERSION}-x11-gbm.so ${PKG_SITE}/raw/master/lib/aarch64-linux-gnu/libmali-${MALI_FAMILY}-${PKG_VERSION}-x11-gbm.so
fi
# S922X - mali vulkan libs need moving
if [ "${DEVICE}" = "S922X" ] && [ "${ARCH}" = "aarch64" ]; then
mv "${INSTALL}"/usr/lib/mali/libMaliVulkan.* "${INSTALL}"/usr/lib/
fi
}