Skip to content

feat: 内置 MobileGlues 与 SimpleFPEWrapper 渲染器,齿轮对话框支持环境变量与 MG 运行时配置 - #1971

Merged
ShirosakiMio merged 5 commits into
mainfrom
feature/mobileglues-sfpew
Oct 28, 2026
Merged

ShirosakiMio merged 5 commits into
mainfrom
feature/mobileglues-sfpew

Conversation

@ShirosakiMio

Copy link
Copy Markdown
Collaborator

动机

MobileGlues 与 SimpleFPEWrapper(SFPEW)是 Android 端实用的 GL 桥接方案,此前 FCL 用户需要手工放置库与配置才能使用。本 PR 将两者作为内置渲染器直接提供,预编译 AAR 与上游 AngelAuraMC/Amethyst-Android v3_openjdk 分支 libs 同步(MobileGlues LGPL-2.1 / SFPEW LGPL-3.0,上游 MobileGL-Dev)。基于 #1959 之后的 main。

改动

内置渲染器

  • RendererManager 新增 MobileGlues / SFPEW 两个内置条目
  • FCLauncher 对应 env 分支:
    • MobileGlues:POJAV_RENDERER=opengles3_mobileglues、LIBGL_ES=3、LIBGL_EGL/POJAVEXEC_EGL=libmobileglues.so、MG_COUNT_LAUNCH(仅统计经启动器启动的会话)、MG_DIR_PATH
    • SFPEW:POJAV_RENDERER=opengles3_sfpew、LIBGL_ES=3(backend 要求 GLES 3.0+)、POJAVEXEC_EGL=libEGL.so、SFPEW_RELAXED_CONTEXT(单线程单上下文优化,默认开启)

配置(渲染器列表齿轮 → RendererEnvDialog 内置渲染器配置模式,复用插件 envPrefs 存储)

  • MobileGlues 配置对齐官方 MGConfig:enableANGLE / enableNoError / angleDepthClearFixMode / customGLVersion / maxGlslCacheSize / 三个扩展开关 / fsr1Setting;配置改写应用私有目录 files/mobileglues/config.json(合并保留未知键)并经 MG_DIR_PATH 指向,不再共用 /sdcard/MG
  • RendererEnvDialog 的 EnvSpec 增加可选 description 字段,标题下渲染小字说明(中英文),值枚举挪入说明、标题精简为变量名;说明文案同步进 values / values-zh strings

真机暴露的修复

  • 真机上 gl_bridge 对 LIBGL_ES 缺省做空值加固:SFPEW 首次启动未设该变量时 strtol(getenv(NULL)) 在 gl_init_context SEGV

测试

  • Zulu17 :FCL:compileDebugJavaWithJavac 通过
  • SFPEW 真机实测命中上述 LIBGL_ES 缺省 SEGV,修复后可进入游戏

…rerManager 新增两个内置条目,FCLauncher 新增对应 env 分支(MG_COUNT_LAUNCH/MG_DIR_PATH/SFPEW_RELAXED_CONTEXT 可经渲染器列表齿轮入口的 RendererEnvDialog 配置,复用插件 envPrefs 存储),AAR 来自 AngelAuraMC/Amethyst-Android v3_openjdk libs(MobileGlues LGPL-2.1 / SFPEW LGPL-3.0,上游 MobileGL-Dev)
…S 缺省做空值加固——真机上 strtol(getenv=NULL) 在 gl_init_context SEGV
…or/angleDepthClearFixMode/customGLVersion/maxGlslCacheSize/三个扩展开关/fsr1Setting;配置改写应用私有目录 files/mobileglues/config.json(合并保留未知键)并经 MG_DIR_PATH 指向,不再共用 /sdcard/MG
…ues 全部选项与 SFPEW 开关配上功能级中英文说明(值枚举挪入说明,标题精简为变量名)
…esa env 收进 ZINK 分支,MG config.json 只合并显式配置键

- RendererEnvDialog.buildRow:description 视图构建后插到 header 之后(index 1),修掉原实现在 when 块前 addView 进 row、被后加入的 header 顶到标题上方的问题(与提交意图'标题下渲染小字'相反)
- RendererPlugin 新增 @JvmStatic toggleEnabled/isConfigured:开关键后缀约定收口,FCLauncher 删除 "MG_COUNT_LAUNCH@enabled"/"SFPEW_RELAXED_CONTEXT@enabled" 字面量与 mgToggleInt
- addRendererEnvInner:MESA_*/driconf 五项只对 ZINK 注入,MobileGlues/SFPEW 不再吃到无效 Mesa env,注释同步
- writeMobileGluesConfig:仅合并用户显式配置过的键(开关型经 isConfigured 查开关键),prefs 为空不落盘;未配置的已知键与 MG 自写未知键保留原值,不再首启固化全量默认值

验证:Zulu17 :FCL:compileDebugJavaWithJavac 通过;MuMu x86_64 实测——齿轮对话框说明文字位于标题下方;MobileGlues 启动 env 注入正确(POJAV_RENDERER/LIBGL_ES=3/MG_COUNT_LAUNCH=1/MG_DIR_PATH),config.json 九键写入且 MG 原生侧读取生效(设置项逐一对应、EGL initialized successfully)
@ShirosakiMio

Copy link
Copy Markdown
Collaborator Author

#1947

@ShirosakiMio
ShirosakiMio merged commit bb6cc98 into main Oct 28, 2026
12 checks passed
@ShirosakiMio
ShirosakiMio deleted the feature/mobileglues-sfpew branch October 28, 2026 07:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant