Update Mesa to version 26.0.5 and adjust related dependencies

- Bump Mesa version from 26.0.3 to 26.0.5 with updated SHA256 checksum.
- Modify RK3326 device tree to increase regulator max voltage for ARM.
- Update OPP settings in RK3326 DTS patch for improved performance.
- Add Python3 and xz to PortMaster dependencies.
- Enhance PortMaster startup script for better directory handling and cleanup.
- Implement HDMI resolution check with timeout in autostart script.
- Add turbo mode configuration to system settings.
- Refactor CPU frequency functions to utilize available frequencies more effectively.
- Update Dolphin emulator scripts to improve gptokeyb process handling.
- Introduce new systemd configuration for timesyncd to optimize polling intervals.
- Set uinput permissions in udev rules for better controller input handling.
- Adjust emulator package.mk to optimize performance for RK3326.
- Modify mkimage script to ensure proper FAT32 formatting and filesystem checks.
- Enhance benchmark script to auto-detect device-specific paths and improve logging.
This commit is contained in:
Douglas Teles
2026-04-28 23:07:44 -03:00
parent 918471e03d
commit 272217362d
28 changed files with 310 additions and 957 deletions
+5
View File
@@ -168,3 +168,8 @@ packages/multimedia/intel-vaapi-driver/
packages/multimedia/media-driver/
packages/multimedia/gmmlib/
packages/sysutils/open-vm-tools/
#other
docs/*
bench-results/
-844
View File
File diff suppressed because it is too large Load Diff
+6 -2
View File
@@ -187,8 +187,12 @@
# Root filesystem type (squashfs / ext4)
ROOTFS_TYPE="ext4"
# Boot partition size (FAT32, kernel + DTBs + bootloader), in MB
BOOT_SIZE=256
# Boot partition size (FAT32, kernel + DTBs + bootloader), in MB.
# 272 MB chosen so the partition exceeds 65525 4-KB clusters and
# qualifies as real FAT32 by spec (256 MB landed at 65404 clusters,
# 121 short, triggering "less than the required minimum" warnings on
# every dosfsck run).
BOOT_SIZE=272
# Root partition size (ext4 rootfs), in MB
ROOT_SIZE=4608
@@ -64,12 +64,11 @@
|Nintendo|Game &amp; Watch (gameandwatch)|1980|`gameandwatch`|.mgw .zip .7z|**retroarch:** gw<br>**retroarch:** mame<br>|
|Nintendo|Game Boy (gb)|1989|`gb`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>**retroarch:** DoubleCherryGB<br>**retroarch:** skyemu<br>**mednafen:** gb<br>|
|Nintendo|Game Boy (Hacks) (gbh)|1989|`gbh`|.gb .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>**retroarch:** DoubleCherryGB<br>**retroarch:** skyemu<br>**mednafen:** gb<br>|
|Nintendo|Game Boy Advance (gba)|2001|`gba`|.gba .zip .7z|**retroarch:** mgba (default)<br>**retroarch:** vbam<br>**retroarch:** vba_next<br>**retroarch:** beetle_gba<br>**retroarch:** skyemu<br>**retroarch:** gpsp<br>**mednafen:** gba<br>|
|Nintendo|Game Boy Advance (gba)|2001|`gba`|.gba .zip .7z|**retroarch:** gpsp (default)<br>**retroarch:** mgba<br>**retroarch:** vbam<br>**retroarch:** vba_next<br>**retroarch:** beetle_gba<br>**retroarch:** skyemu<br>**mednafen:** gba<br>|
|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)<br>**retroarch:** vbam<br>**retroarch:** vba_next<br>**retroarch:** beetle_gba<br>**retroarch:** skyemu<br>**retroarch:** gpsp<br>**mednafen:** gba<br>|
|Nintendo|Game Boy Advance video (gbav)|2001|`gbav`|.gba .zip .7z|**retroarch:** mgba (default)<br>**retroarch:** vbam<br>**retroarch:** vba_next<br>**retroarch:** beetle_gba<br>**retroarch:** skyemu<br>**retroarch:** gpsp<br>**mednafen:** gba<br>|
|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>**retroarch:** DoubleCherryGB<br>**retroarch:** skyemu<br>**mednafen:** gb<br>|
|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>**retroarch:** DoubleCherryGB<br>**retroarch:** skyemu<br>**mednafen:** gb<br>|
|Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .m3u|**retroarch:** dolphin (default)<br>|
|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)<br>**retroarch:** fceumm<br>**retroarch:** quicknes<br>**retroarch:** mesen<br>**mednafen:** nesh<br>|
|Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)<br>**retroarch:** mupen64plus<br>**retroarch:** parallel_n64<br>**mupen64plus:** mupen64plus-sa<br>|
|Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa (default)<br>**melonds:** melonds-sa<br>**retroarch:** melonds<br>**retroarch:** melondsds<br>**retroarch:** desmume<br>**retroarch:** skyemu<br>|
@@ -82,8 +81,6 @@
|Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** snes9x2010<br>**retroarch:** snes9x2002<br>**retroarch:** snes9x2005_plus<br>**retroarch:** beetle_supafaust<br>**retroarch:** bsnes_mercury_performance<br>**mednafen:** snes_faust<br>|
|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** snes9x2010<br>**retroarch:** snes9x2002<br>**retroarch:** snes9x2005_plus<br>**retroarch:** beetle_supafaust<br>**retroarch:** bsnes_mercury_accuracy<br>**retroarch:** bsnes_mercury_balanced<br>**retroarch:** bsnes_mercury_performance<br>**mednafen:** snes_faust<br>**retroarch:** bsnes_mercury_accuracy<br>**retroarch:** bsnes_mercury_balanced<br>**retroarch:** bsnes_mercury_accuracy<br>**retroarch:** bsnes_mercury_balanced<br>**mednafen:** snes_faust<br>|
|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)<br>**mednafen:** vb<br>|
|Nintendo|Wii (wii)|2006|`wii`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .wad .m3u|**retroarch:** dolphin (default)<br>|
|Nintendo|WiiWare (wiiware)|2008|`wiiware`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .wad .m3u|**retroarch:** dolphin (default)<br>|
|Palm, Inc.|Palm OS (palm)|1996|`palm`|.prc .pqa .img .pdb .zip|**retroarch:** mu (default)<br>|
|Panasonic|3DO (3do)|1993|`3do`|.iso .bin .chd .cue|**retroarch:** opera (default)<br>|
|Philips|CD-i (cdi)|1991|`cdi`|.chd .cue .iso|**retroarch:** same_cdi (default)<br>|
+40 -7
View File
@@ -1,17 +1,50 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2026 ArchR (https://github.com/archr-linux/Arch-R)
# Drop-in zlib replacement using zlib-ng compiled with --zlib-compat.
# ABI/API identical to upstream zlib (libz.so.1), but ships SIMD-aware
# inflate/deflate paths that NEON-enabled the inner loops on Cortex-A35.
# Real impact: ROM zip extraction in PortMaster/RetroArch and ext2/ext4
# compression utilities run noticeably faster.
#
# We keep PKG_NAME="zlib" so every other package's PKG_DEPENDS_*="zlib"
# transparently picks up the replacement. Source unpack is overridden
# because the upstream tarball expands to zlib-ng-${PKG_VERSION}/.
PKG_NAME="zlib"
PKG_VERSION="1.3.1"
PKG_SHA256="9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23"
PKG_VERSION="2.2.4"
PKG_SHA256="a73343c3093e5cdc50d9377997c3815b878fd110bf6511c2c7759f2afb90f5a3"
PKG_LICENSE="OSS"
PKG_SITE="http://www.zlib.net"
PKG_URL="https://zlib.net/fossils/${PKG_NAME}-${PKG_VERSION}.tar.gz"
PKG_SITE="https://github.com/zlib-ng/zlib-ng"
PKG_URL="https://github.com/zlib-ng/zlib-ng/archive/refs/tags/${PKG_VERSION}.tar.gz"
PKG_SOURCE_NAME="zlib-ng-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="ccache:host cmake:host"
PKG_DEPENDS_TARGET="cmake:host gcc:host"
PKG_LONGDESC="A general purpose (ZIP) data compression library."
PKG_LONGDESC="zlib-ng compiled in --zlib-compat mode — drop-in libz with SIMD-accelerated inflate/deflate."
PKG_TOOLCHAIN="cmake-make"
PKG_CMAKE_OPTS_HOST="-DINSTALL_PKGCONFIG_DIR=${TOOLCHAIN}/lib/pkgconfig"
# zlib-ng reads CMAKE flags directly. ZLIB_COMPAT=ON is what makes this
# build emit libz.so.1 (instead of libz-ng.so.2) so existing pkgconfig
# pointers keep working. WITH_GZFILEOP keeps gzopen()/gzread()/etc.
# Tests/benchmarks off to avoid pulling gtest into the cross toolchain.
PKG_CMAKE_OPTS_HOST="-DZLIB_COMPAT=ON \
-DZLIB_ENABLE_TESTS=OFF \
-DZLIBNG_ENABLE_TESTS=OFF \
-DWITH_GTEST=OFF \
-DWITH_GZFILEOP=ON \
-DINSTALL_PKGCONFIG_DIR=${TOOLCHAIN}/lib/pkgconfig"
PKG_CMAKE_OPTS_TARGET="-DINSTALL_PKGCONFIG_DIR=/usr/lib/pkgconfig"
PKG_CMAKE_OPTS_TARGET="-DZLIB_COMPAT=ON \
-DZLIB_ENABLE_TESTS=OFF \
-DZLIBNG_ENABLE_TESTS=OFF \
-DWITH_GTEST=OFF \
-DWITH_GZFILEOP=ON \
-DWITH_OPTIM=ON \
-DWITH_NEON=ON \
-DINSTALL_PKGCONFIG_DIR=/usr/lib/pkgconfig"
unpack() {
mkdir -p "${PKG_BUILD}"
tar --strip-components=1 -xf "${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME}" -C "${PKG_BUILD}"
}
+2 -2
View File
@@ -3,8 +3,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="mesa"
PKG_VERSION="26.0.3"
PKG_SHA256="ddb7443d328e89aa45b4b6b80f077bf937f099daeca8ba48cabe32aab769e134"
PKG_VERSION="26.0.5"
PKG_SHA256="d229c9937d9a25ca0a8958c59f425174563d300ec42acbea2dbe84a055023368"
PKG_LICENSE="OSS"
PKG_SITE="http://www.mesa3d.org/"
PKG_URL="https://mesa.freedesktop.org/archive/mesa-${PKG_VERSION}.tar.xz"
@@ -261,7 +261,7 @@
vdd_arm: DCDC_REG2 {
regulator-name = "vdd_arm";
regulator-min-microvolt = <950000>;
regulator-max-microvolt = <1350000>;
regulator-max-microvolt = <1450000>;
regulator-ramp-delay = <6001>;
regulator-always-on;
regulator-boot-on;
@@ -35,9 +35,10 @@
};
- opp-1296000000 {
- opp-hz = /bits/ 64 <1296000000>;
- opp-microvolt = <1350000 1350000 1350000>;
+ opp-1512000000 {
+ opp-hz = /bits/ 64 <1512000000>;
opp-microvolt = <1350000 1350000 1350000>;
+ opp-microvolt = <1400000 1400000 1400000>;
clock-latency-ns = <40000>;
+ turbo-mode;
};
@@ -7,7 +7,7 @@ PKG_ARCH="arm aarch64"
PKG_LICENSE="MIT"
PKG_SITE="https://github.com/PortsMaster/PortMaster-GUI"
PKG_URL="https://github.com/PortsMaster/PortMaster-GUI/releases/download/${PKG_VERSION}/PortMaster.zip"
PKG_DEPENDS_TARGET="toolchain archr-hotkey gamecontrollerdb oga_controls control-gen xmlstarlet list-guid gst-plugins-base"
PKG_DEPENDS_TARGET="toolchain archr-hotkey gamecontrollerdb oga_controls control-gen xmlstarlet list-guid gst-plugins-base Python3 xz"
PKG_LONGDESC="Portmaster - a simple tool that allows you to download various game ports"
PKG_TOOLCHAIN="manual"
@@ -23,12 +23,12 @@ chmod +x /storage/.config/PortMaster/mapper.txt
#Use our gamecontrollerdb.txt
rm -r gamecontrollerdb.txt
rm -rf gamecontrollerdb.txt
ln -sf /usr/config/SDL-GameControllerDB/gamecontrollerdb.txt gamecontrollerdb.txt
#Delete old PortMaster fold first (we can probably remove this later)
if [ ! -f "/storage/roms/ports/PortMaster/pugwash" ]; then
rm -r /storage/roms/ports/PortMaster
if [ -d "/storage/roms/ports/PortMaster" ] && [ ! -f "/storage/roms/ports/PortMaster/pugwash" ]; then
rm -rf /storage/roms/ports/PortMaster
fi
#Make sure roms/ports/PortMaster folder exists
@@ -38,13 +38,11 @@ if [ ! -d "/storage/roms/ports/PortMaster" ]; then
fi
#We dont use tasksetter, delete it
if [ -f /storage/roms/ports/PortMaster/tasksetter ]; then
rm -r /storage/roms/ports/PortMaster/tasksetter
fi
rm -rf /storage/roms/ports/PortMaster/tasksetter
#Use PortMasters gptokeyb
rm gptokeyb
cp /storage/roms/ports/PortMaster/gptokeyb gptokeyb
rm -f gptokeyb
[ -x /storage/roms/ports/PortMaster/gptokeyb ] && cp /storage/roms/ports/PortMaster/gptokeyb gptokeyb
#Copy over required files for ports
cp /storage/.config/PortMaster/control.txt /storage/roms/ports/PortMaster/control.txt
@@ -7,12 +7,19 @@
# The purpose of this script is to permanently set the resolution
# output for hdmi when connected.
xres="$(cat /sys/class/graphics/fb0/modes | grep -o -P '(?<=:).*(?=p-)' | cut -dx -f1)"
# /sys/class/graphics/fb0/modes may not be populated yet if DRM is still
# probing. Default to 0 so the comparison below falls through cleanly
# instead of breaking arithmetic.
xres="$(cat /sys/class/graphics/fb0/modes 2>/dev/null | grep -o -P '(?<=:).*(?=p-)' | cut -dx -f1)"
[ -z "${xres}" ] && xres=0
# drm_tool source available at https://github.com/christianhaitian/drm_tool.git
mode="$(/usr/bin/drm_tool list | awk '/1280x720.*60/ {print substr($2,1,length($2)-1); exit}')"
mode2="$(/usr/bin/drm_tool list | awk '/1920x1080.*60/ {print substr($2,1,length($2)-1); exit}')"
# Wrap with a timeout: drm_tool can block on the DRM master if
# rockchipdrm is still binding, which on a slow microSD has been
# observed to hang this autostart script and (via Before=emustation)
# the entire boot.
mode="$(timeout 10 /usr/bin/drm_tool list 2>/dev/null | awk '/1280x720.*60/ {print substr($2,1,length($2)-1); exit}')"
mode2="$(timeout 10 /usr/bin/drm_tool list 2>/dev/null | awk '/1920x1080.*60/ {print substr($2,1,length($2)-1); exit}')"
# Now we tell drm what the hdmi mode is by writing to /var/run/drmMode
# This will get picked up by SDL2 as long as it's been patched with the batocera
@@ -181,6 +181,7 @@ system.battery.warning=0
system.battery.warning_threshold=25
system.hostname=@DEVICENAME@
system.language=en_US
enable.turbo-mode=0
system.cpugovernor=ondemand
system.loglevel=none
system.merged.storage=0
@@ -66,20 +66,24 @@ set_cpu_boost() {
esac
}
# Pin CPU max_freq across all policies to the highest available OPP
# (boost included if cpufreq/boost=1 was already toggled). Mirrors the
# GPU helper above. ROCKNIX achieves the same effect by trimming the DT
# ladder; we keep the full ladder for idle and force the ceiling up at
# runtime.
# Pin CPU max_freq across all policies to the highest available OPP.
# Turbo OPPs (DT `turbo-mode`) live in scaling_boost_frequencies, NOT in
# scaling_available_frequencies, even after cpufreq/boost=1. Combine
# both so "highest" really hits 1512 MHz on RK3326 when the user's
# turbo switch is on, and naturally falls back to 1416 when off (boost
# file then reports an empty list).
set_cpu_max_freq() {
for POLICY in /sys/devices/system/cpu/cpufreq/policy[0-9]*; do
[ -e "${POLICY}/scaling_max_freq" ] || continue
[ -e "${POLICY}/cpuinfo_max_freq" ] || continue
[ -e "${POLICY}/scaling_available_frequencies" ] || continue
local target=""
case ${1} in
highest)
target=$(cat "${POLICY}/cpuinfo_max_freq")
target=$( {
cat "${POLICY}/scaling_available_frequencies" 2>/dev/null
cat "${POLICY}/scaling_boost_frequencies" 2>/dev/null
} | tr ' ' '\n' | grep -E '^[0-9]+$' | sort -n | tail -n1)
;;
*)
target=${1}
@@ -93,15 +97,18 @@ set_cpu_max_freq() {
set_cpu_min_freq() {
for POLICY in /sys/devices/system/cpu/cpufreq/policy[0-9]*; do
[ -e "${POLICY}/scaling_min_freq" ] || continue
[ -e "${POLICY}/cpuinfo_min_freq" ] || continue
[ -e "${POLICY}/scaling_available_frequencies" ] || continue
local target=""
case ${1} in
highest)
target=$(cat "${POLICY}/cpuinfo_max_freq")
target=$( {
cat "${POLICY}/scaling_available_frequencies" 2>/dev/null
cat "${POLICY}/scaling_boost_frequencies" 2>/dev/null
} | tr ' ' '\n' | grep -E '^[0-9]+$' | sort -n | tail -n1)
;;
lowest)
target=$(cat "${POLICY}/cpuinfo_min_freq")
target=$(tr ' ' '\n' <"${POLICY}/scaling_available_frequencies" | grep -E '^[0-9]+$' | sort -n | head -n1)
;;
*)
target=${1}
@@ -176,11 +183,13 @@ restore_cpu_boost() {
}
performance() {
# Force boost ON regardless of the user setting during gameplay so the
# 1512 MHz OPP is reachable. RK3326's BSP-marked turbo OPP is otherwise
# locked behind cpufreq/boost. ondemand/schedutil paths restore the
# user preference.
set_cpu_boost on
# Honor the user's "Enable CPU Overclock" switch from ES even during
# gameplay: gameplay shouldn't silently enable turbo behind the user's
# back. If they want the 1512 MHz OPP, they toggle it on; if they
# prefer to stay at 1416 MHz for thermals/battery, gameplay respects
# that. set_cpu_max_freq highest then pins to the highest currently
# available frequency (1512 if boost on, 1416 if off).
restore_cpu_boost
set_cpu_gov performance
set_cpu_max_freq highest
set_dmc_gov performance
@@ -426,4 +426,5 @@ fi
# Run Dolphin emulator
${GPTOKEYB} ${DOLPHIN_CORE} xbox360 &
${EMUPERF} /usr/bin/${DOLPHIN_CORE} ${CMD} -e "${1}"
kill -9 "$(pidof gptokeyb)"
_gptokeyb_pid="$(pidof gptokeyb 2>/dev/null)"
[ -n "${_gptokeyb_pid}" ] && kill -9 ${_gptokeyb_pid}
@@ -396,4 +396,5 @@ fi
# Run Dolphin emulator
${GPTOKEYB} ${DOLPHIN_CORE} xbox360 &
${EMUPERF} /usr/bin/${DOLPHIN_CORE} ${CMD} -e "${1}"
kill -9 "$(pidof gptokeyb)"
_gptokeyb_pid="$(pidof gptokeyb 2>/dev/null)"
[ -n "${_gptokeyb_pid}" ] && kill -9 ${_gptokeyb_pid}
@@ -98,4 +98,5 @@ export LD_PRELOAD="/usr/lib/libdrastouch.so"
export SDL_TOUCH_MOUSE_EVENTS="0"
export DSHOOK_MIC_THRESH="${MICTHRESH}"
./drastic "$1"
kill -9 $(pidof gptokeyb)
_gptokeyb_pid="$(pidof gptokeyb 2>/dev/null)"
[ -n "${_gptokeyb_pid}" ] && kill -9 ${_gptokeyb_pid}
@@ -146,8 +146,14 @@ fi
# Panfrost optimization for Mali-G31
export PAN_MESA_DEBUG=forcepack
export MESA_NO_ERROR=1
# Mesa GL command thread: Flycast already runs GL in a worker thread
# (rend.ThreadedRendering=1) and is GPU-bound on RK3326. Marshalling GL
# calls into Mesa's own thread amortises the per-call dispatch cost on a
# single-issue Cortex-A35. See docs/mesa-glthread-matrix.md.
export MESA_GLTHREAD=true
#Run flycast emulator
$GPTOKEYB "flycast" -c "${CONF_DIR}/flycast.gptk" &
${EMUPERF} /usr/bin/flycast "${1}"
kill -9 "$(pidof gptokeyb)"
_gptokeyb_pid="$(pidof gptokeyb 2>/dev/null)"
[ -n "${_gptokeyb_pid}" ] && kill -9 ${_gptokeyb_pid}
@@ -205,4 +205,5 @@ fi
$GPTOKEYB "melonDS" -c "${CONF_DIR}/melonDS.gptk" &
${EMUPERF} /usr/bin/melonDS -f "${ROM}"
kill -9 "$(pidof gptokeyb)"
_gptokeyb_pid="$(pidof gptokeyb 2>/dev/null)"
[ -n "${_gptokeyb_pid}" ] && kill -9 ${_gptokeyb_pid}
@@ -123,5 +123,11 @@ ARG=${1//[\\]/}
# Panfrost optimization: forcepack reduces draw call overhead on Mali-G31
export PAN_MESA_DEBUG=forcepack
export MESA_NO_ERROR=1
# Mesa GL command thread: PPSSPP issues many small GL calls per frame
# (sprite/draw bursts) and the standalone build keeps render and CPU on
# separate threads internally. Letting Mesa marshal GL on its own
# thread cuts per-call dispatch latency on Cortex-A35. See
# docs/mesa-glthread-matrix.md.
export MESA_GLTHREAD=true
${EMUPERF} ppsspp --pause-menu-exit "${ARG}"
@@ -6,27 +6,12 @@
GPU_DRIVER_SETTING_KEY="gpu.driver"
# When the device ships no panfrost DTB overlay, panfrost selection is a
# brick: even with the runtime fallback, sway/UI starts before the
# fallback finishes, leaves a half-initialized GPU, and the next boot
# ends in a black screen. Detect the empty placeholder substituted by
# package.mk and refuse panfrost in that case.
DTB_OVERLAY_LOAD_CMD="@DTB_OVERLAY_LOAD@"
PANFROST_AVAILABLE=true
[ -z "${DTB_OVERLAY_LOAD_CMD}" ] && PANFROST_AVAILABLE=false
get_current_driver() {
CONFDRIVER=$(get_setting ${GPU_DRIVER_SETTING_KEY})
if [ -z ${CONFDRIVER} ]; then
CONFDRIVER="libmali" # DEFAULT
set_setting ${GPU_DRIVER_SETTING_KEY} ${CONFDRIVER}
fi
# Self-heal: stale "panfrost" setting on a device that can't run it.
if [ "${CONFDRIVER}" = "panfrost" ] && [ "${PANFROST_AVAILABLE}" = "false" ]; then
logger -t gpudriver "panfrost not supported on this device (no DTB overlay); reverting to libmali"
CONFDRIVER="libmali"
set_setting ${GPU_DRIVER_SETTING_KEY} ${CONFDRIVER}
fi
}
@@ -89,11 +74,7 @@ load_driver() {
case "$1" in
"--options")
if [ "${PANFROST_AVAILABLE}" = "true" ]; then
echo "panfrost libmali"
else
echo "libmali"
fi
echo "panfrost libmali"
;;
"--start")
get_current_driver
@@ -117,10 +98,6 @@ case "$1" in
@DTB_OVERLAY_UNLOAD@
;;
"panfrost")
if [ "${PANFROST_AVAILABLE}" = "false" ]; then
echo "panfrost is not supported on this device" >&2
exit 2
fi
set_setting ${GPU_DRIVER_SETTING_KEY} $1
@DTB_OVERLAY_LOAD@
;;

Some files were not shown because too many files have changed in this diff Show More