From 9f571902005a2ca403fd3b79924c7a0ad33773ac Mon Sep 17 00:00:00 2001 From: sydarn Date: Sat, 13 Jun 2026 23:41:28 +0200 Subject: [PATCH 1/2] libmali: g29 for rk3566/76 --- projects/ROCKNIX/devices/RK3566/options | 2 +- projects/ROCKNIX/devices/RK3576/options | 2 +- .../graphics/libmali-vulkan/package.mk | 11 -- .../packages/graphics/libmali/package.mk | 38 ++++-- .../graphics/libmali/patches/next/next.patch | 111 ++++++++++++++++++ .../quirks/platforms/RK3566/090-ui_service | 3 +- .../quirks/platforms/RK3576/090-ui_service | 3 +- .../hardware/quirks/profile.d/999-export | 1 + 8 files changed, 145 insertions(+), 26 deletions(-) create mode 100644 projects/ROCKNIX/packages/graphics/libmali/patches/next/next.patch diff --git a/projects/ROCKNIX/devices/RK3566/options b/projects/ROCKNIX/devices/RK3566/options index 860f1cb87f6..ecb2d17dceb 100644 --- a/projects/ROCKNIX/devices/RK3566/options +++ b/projects/ROCKNIX/devices/RK3566/options @@ -70,7 +70,7 @@ FIRMWARE="" # Additional packages to install - ADDITIONAL_PACKAGES="libmali libmali-vulkan" + ADDITIONAL_PACKAGES="libmali" ADDITIONAL_PACKAGES_32BIT="libmali" # Debug tty path diff --git a/projects/ROCKNIX/devices/RK3576/options b/projects/ROCKNIX/devices/RK3576/options index 82b26eaa21a..67fcf2923a9 100644 --- a/projects/ROCKNIX/devices/RK3576/options +++ b/projects/ROCKNIX/devices/RK3576/options @@ -70,7 +70,7 @@ FIRMWARE="" # Additional packages to install - ADDITIONAL_PACKAGES="libmali libmali-vulkan inputplumber" + ADDITIONAL_PACKAGES="libmali inputplumber" ADDITIONAL_PACKAGES_32BIT="libmali" # Debug tty path diff --git a/projects/ROCKNIX/packages/graphics/libmali-vulkan/package.mk b/projects/ROCKNIX/packages/graphics/libmali-vulkan/package.mk index 17fddd54387..8adbce17d56 100644 --- a/projects/ROCKNIX/packages/graphics/libmali-vulkan/package.mk +++ b/projects/ROCKNIX/packages/graphics/libmali-vulkan/package.mk @@ -17,13 +17,6 @@ case ${DEVICE} in APIVER="1.0.5" PKG_URL="https://github.com/r3claimer/packages/raw/${PKG_VERSION}/g610-vulkan-mali.tar.gz" ;; - RK3566|RK3576) - PKG_VERSION="rk3576" - PKG_SOURCE_NAME="g52-vulkan-mali.tar.gz" - FILENAME="libmali-vulkan-g52.so" - APIVER="1.2.207" - PKG_URL="https://github.com/sydarn/libmali/releases/download/${PKG_VERSION}/libmali.so.1.9.0.zip" - ;; esac # Need a custom unpack() as --strip-components=1 in extract script strips everything @@ -33,10 +26,6 @@ case ${DEVICE} in RK3588) tar -xf ${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME} -C ${PKG_BUILD} ;; - RK3566|RK3576) - unzip -j ${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME} libmali.so.1.9.0 -d ${PKG_BUILD} - mv ${PKG_BUILD}/libmali.so.1.9.0 ${PKG_BUILD}/${FILENAME} - ;; esac } diff --git a/projects/ROCKNIX/packages/graphics/libmali/package.mk b/projects/ROCKNIX/packages/graphics/libmali/package.mk index 7166c6094da..c1b7aac9bb7 100644 --- a/projects/ROCKNIX/packages/graphics/libmali/package.mk +++ b/projects/ROCKNIX/packages/graphics/libmali/package.mk @@ -25,26 +25,43 @@ case "${DEVICE}" in RK3588) DRIVER_VERSION="g13p0" ;; - *) # RK3326 and RK3566 + RK3326) # RK3326 and RK3566 DRIVER_VERSION="g24p0" ;; esac case "${DISPLAYSERVER}" in wl) - PLATFORM="wayland-gbm" + PLATFORM="-wayland-gbm" PKG_DEPENDS_TARGET+=" wayland" ;; x11) - PLATFORM="x11-gbm" + PLATFORM="-x11-gbm" ;; *) - PLATFORM="gbm" + PLATFORM="-gbm" ;; esac +ZIPDIRNAME="libmali" +# new repo base from jeffycn mirror +case "${DEVICE}" in + RK3566|RK3576) + PKG_SITE="https://github.com/JeffyCN/mirrors" + PKG_VERSION="1a082323f1001874a007e4e522029d6c46d75ae9" + # zip format makes extract very fast (<1s). tgz takes 20 seconds to scan the whole file + PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.zip" + PKG_DEPENDS_TARGET+=" mesa vulkan-tools vulkan-headers vulkan-wsi-layer" + DRIVER_VERSION="g29p1" + PLATFORM="" + ZIPDIRNAME="mirrors" + PKG_PATCH_DIRS+=" next" + ;; +esac + + PKG_MESON_OPTS_TARGET+=" -Darch=${ARCH} -Dgpu=${MALI_FAMILY} -Dversion=${DRIVER_VERSION} -Dplatform=${PLATFORM} \ - -Dkhr-header=false -Dvendor-package=true -Dwrappers=enabled -Dhooks=true" + -Dkhr-header=false -Dvendor-package=true -Dhooks=true" unpack() { @@ -52,10 +69,10 @@ unpack() { cd "${PKG_BUILD}" pwd # Extract only what is needed - LIBNAME="libmali-${MALI_FAMILY}-${DRIVER_VERSION}-${PLATFORM}.so" + LIBNAME="libmali-${MALI_FAMILY}-${DRIVER_VERSION}${PLATFORM}.so" unzip -q "${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME}" "*/hook/*" "*/include/*" "*/scripts/*" "*/meson*" "*/data/*" "*/${LIBNAME}" - mv libmali*/* . - rmdir libmali-* + mv ${ZIPDIRNAME}*/* . + rmdir ${ZIPDIRNAME}-* if [ "${MALI_FAMILY}" = "meson" ]; then mv data/vulkan/mali_meson.json.in data/vulkan/mali.json.in fi @@ -77,7 +94,10 @@ post_makeinstall_target() { curl -Lo ${INSTALL}/usr/lib/libmali-${MALI_FAMILY}-${DRIVER_VERSION}-x11-gbm.so ${PKG_SITE}/raw/master/lib/aarch64-linux-gnu/libmali-${MALI_FAMILY}-${DRIVER_VERSION}-x11-gbm.so fi # S922X - mali vulkan libs need moving - if [ "${DEVICE}" = "S922X" ] && [ "${ARCH}" = "aarch64" ]; then + if [[ "${DEVICE}" =~ S922X|RK3566|RK3576 ]] && [ "${ARCH}" = "aarch64" ]; then mv "${INSTALL}"/usr/lib/mali/libMaliVulkan.* "${INSTALL}"/usr/lib/ fi + if [[ "${DEVICE}" =~ S922X|RK3566|RK3576 ]] && [ "${ARCH}" = "arm" ]; then + mv "${INSTALL}"/usr/lib32/mali/libMaliVulkan.* "${INSTALL}"/usr/lib32/ + fi } diff --git a/projects/ROCKNIX/packages/graphics/libmali/patches/next/next.patch b/projects/ROCKNIX/packages/graphics/libmali/patches/next/next.patch new file mode 100644 index 00000000000..9c55265046b --- /dev/null +++ b/projects/ROCKNIX/packages/graphics/libmali/patches/next/next.patch @@ -0,0 +1,111 @@ +diff --git a/data/vulkan/VkLayer_window_system_integration.json.in b/data/vulkan/VkLayer_window_system_integration.json.in +deleted file mode 100755 +index a89127960595..000000000000 +--- a/data/vulkan/VkLayer_window_system_integration.json.in ++++ /dev/null +@@ -1,62 +0,0 @@ +-{ +- "file_format_version": "1.1.2", +- "layer": { +- "name": "VK_LAYER_window_system_integration", +- "type": "GLOBAL", +- "library_path": "@LIB@", +- "api_version": "1.4.299", +- "implementation_version": "1", +- "description": "Window system integration layer", +- "functions": { +- "vkNegotiateLoaderLayerInterfaceVersion": "wsi_layer_vkNegotiateLoaderLayerInterfaceVersion" +- }, +- "instance_extensions": [ +- {"name" : "VK_KHR_wayland_surface", "spec_version" : "6"}, +- {"name" : "VK_KHR_xcb_surface", "spec_version" : "6"}, +- {"name" : "VK_KHR_xlib_surface", "spec_version" : "6"}, +- {"name" : "VK_KHR_surface", "spec_version" : "25"}, +- {"name" : "VK_KHR_get_surface_capabilities2", "spec_version" : "1"}, +- {"name" : "VK_EXT_surface_maintenance1", "spec_version" : "1"} +- ], +- "device_extensions": [ +- {"name": "VK_EXT_image_compression_control_swapchain", "spec_version": "1"}, +- { +- "name": "VK_KHR_swapchain", +- "spec_version": "70", +- "entrypoints": [ +- "vkAcquireNextImageKHR", +- "vkCreateSwapchainKHR", +- "vkDestroySwapchainKHR", +- "vkGetSwapchainImagesKHR", +- "vkQueuePresentKHR", +- "vkAcquireNextImage2KHR", +- "vkGetDeviceGroupPresentCapabilitiesKHR", +- "vkGetDeviceGroupSurfacePresentModesKHR", +- "vkGetPhysicalDevicePresentRectanglesKHR" +- ] +- }, +- {"name": "VK_KHR_present_id", "spec_version": "1"}, +- { +- "name": "VK_EXT_swapchain_maintenance1", +- "spec_version": "1", +- "entrypoints": [ +- "vkReleaseSwapchainImagesEXT" +- ] +- }, +- { +- "name": "VK_KHR_present_wait", +- "spec_version": "1", +- "entrypoints": [ +- "vkWaitForPresentKHR" +- ] +- }, +- { +- "name": "VK_EXT_present_mode_fifo_latest_ready", +- "spec_version": "1" +- } +- ], +- "disable_environment": { +- "DISABLE_WSI_LAYER": "1" +- } +- } +-} +diff --git a/data/vulkan/mali.json.in b/data/vulkan/mali.json.in +index 11e8941bc9c8..ca4d984e9177 100644 +--- a/data/vulkan/mali.json.in ++++ b/data/vulkan/mali.json.in +@@ -1,7 +1,7 @@ + { + "file_format_version" : "1.0.0", + "ICD" : { +- "library_path" : "@LIB@", ++ "library_path" : "/usr/lib/libMaliVulkan.so.1", + "api_version" : "1.3.276" + } + } +diff --git a/meson.build b/meson.build +index 451e48528c09..83ea2084fa88 100644 +--- a/meson.build ++++ b/meson.build +@@ -252,25 +252,6 @@ foreach name, values : map + install : true) + endif + +- if is_vulkan_icd +- # Install Vulkan WSI config +- custom_target( +- 'Vulkan manifest layer file', +- input : 'data/vulkan/VkLayer_window_system_integration.json.in', +- output : 'VkLayer_window_system_integration.json', +- command : ['sed', 's/@LIB@/libVkLayer_window_system_integration.so/', '@INPUT@'], +- capture : true, +- install_dir : get_option('datadir') / 'vulkan' / 'implicit_layer.d', +- install : true) +- +- # Install Vulkan WSI library +- lib_source = join_paths('data/vulkan/lib', arch, 'libVkLayer_window_system_integration.so') +- install_data( +- lib_source, +- install_dir: get_option('libdir') +- ) +- endif +- + # No {headers, pkgconfig} for OpenCL ICD and vendor packages + if is_opencl_icd or vendor_package + continue diff --git a/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3566/090-ui_service b/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3566/090-ui_service index 67cbbd0d028..3406211fbc0 100755 --- a/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3566/090-ui_service +++ b/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3566/090-ui_service @@ -8,7 +8,6 @@ cat </storage/.config/profile.d/090-ui_service UI_SERVICE="sway.service essway.service" if [ "$(gpudriver)" = "libmali" ]; then MALI_WAYLAND_AFBC=0 -# libmali has no working Xorg -unset DISPLAY +MALI_DEFAULT_DISPLAY=wayland fi EOF diff --git a/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3576/090-ui_service b/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3576/090-ui_service index 67cbbd0d028..3406211fbc0 100755 --- a/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3576/090-ui_service +++ b/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3576/090-ui_service @@ -8,7 +8,6 @@ cat </storage/.config/profile.d/090-ui_service UI_SERVICE="sway.service essway.service" if [ "$(gpudriver)" = "libmali" ]; then MALI_WAYLAND_AFBC=0 -# libmali has no working Xorg -unset DISPLAY +MALI_DEFAULT_DISPLAY=wayland fi EOF diff --git a/projects/ROCKNIX/packages/hardware/quirks/profile.d/999-export b/projects/ROCKNIX/packages/hardware/quirks/profile.d/999-export index 3e8dda7dcc3..202d9fe06e9 100755 --- a/projects/ROCKNIX/packages/hardware/quirks/profile.d/999-export +++ b/projects/ROCKNIX/packages/hardware/quirks/profile.d/999-export @@ -60,6 +60,7 @@ export OS_VERSION \ WLR_BACKENDS \ WLR_CON \ MALI_WAYLAND_AFBC \ + MALI_DEFAULT_DISPLAY \ ALSA_PRIMARY_CARD \ SDL_VIDEO_DISPLAY_PRIORITY \ TU_DEBUG \ From 64457361a9113aa1348a0f10d455845991005429 Mon Sep 17 00:00:00 2001 From: sydarn Date: Thu, 2 Jul 2026 22:52:30 +0200 Subject: [PATCH 2/2] Minor libmali fixes not to break old libmali devices --- projects/ROCKNIX/packages/graphics/libmali/package.mk | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/projects/ROCKNIX/packages/graphics/libmali/package.mk b/projects/ROCKNIX/packages/graphics/libmali/package.mk index c1b7aac9bb7..3f92f8a614f 100644 --- a/projects/ROCKNIX/packages/graphics/libmali/package.mk +++ b/projects/ROCKNIX/packages/graphics/libmali/package.mk @@ -43,7 +43,6 @@ case "${DISPLAYSERVER}" in ;; esac -ZIPDIRNAME="libmali" # new repo base from jeffycn mirror case "${DEVICE}" in RK3566|RK3576) @@ -56,12 +55,17 @@ case "${DEVICE}" in PLATFORM="" ZIPDIRNAME="mirrors" PKG_PATCH_DIRS+=" next" + OPTS=" -Dwrappers=true " + ;; + *) + OPTS=" -Dwrappers=enabled " + ZIPDIRNAME="libmali" ;; esac PKG_MESON_OPTS_TARGET+=" -Darch=${ARCH} -Dgpu=${MALI_FAMILY} -Dversion=${DRIVER_VERSION} -Dplatform=${PLATFORM} \ - -Dkhr-header=false -Dvendor-package=true -Dhooks=true" + -Dkhr-header=false -Dvendor-package=true -Dhooks=true ${OPTS}" unpack() { @@ -97,7 +101,7 @@ post_makeinstall_target() { if [[ "${DEVICE}" =~ S922X|RK3566|RK3576 ]] && [ "${ARCH}" = "aarch64" ]; then mv "${INSTALL}"/usr/lib/mali/libMaliVulkan.* "${INSTALL}"/usr/lib/ fi - if [[ "${DEVICE}" =~ S922X|RK3566|RK3576 ]] && [ "${ARCH}" = "arm" ]; then + if [[ "${DEVICE}" =~ RK3566|RK3576 ]] && [ "${ARCH}" = "arm" ]; then mv "${INSTALL}"/usr/lib32/mali/libMaliVulkan.* "${INSTALL}"/usr/lib32/ fi }