Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

G750 Boost — 游戏 GPU 地板档位模块

作者: 雨色
版本: v2.1.4
适配: SM8650 (8 Gen3 / Adreno750) · SM8750 (8 Elite / Adreno830) · SM8850 (8 Elite Gen5 / Adreno840)


一句话介绍

游戏中把 GPU 地板抬到你设置的档位(默认 680MHz)并锁住上限,系统 governor 在地板以上自由调频;退出游戏 8 秒后自动恢复。

v2.1.4 新特性

  • WebUI 档位选择改按下标命中:此前前端按 MHz 值匹配下拉项,配置值不在设备频表时(如 8e5 上默认的 680)一个选项都命中不了,浏览器会静默选中第一项 = 最高频,一保存就把地板钉在 1200MHz
  • 保存即吸附:写盘前强制走 gb_map_floor / gb_map_ceil配置里的值必然是设备真实档位,下次打开必然命中
  • 回显生效值:提示不再显示"请求值",而是「生效值 + 档位号」;发生吸附 / 夹取时追加说明;保存后自动回读
  • 修复浏览器降级通道main.jssh() 在非 KSU 通道下未替换 __MODPATH__,路径正则失配 → config.sh 的读与存被静默降级成 status.sh(表现为下拉框为空、保存无效)
  • 频表口径统一(跨 SoC)available_frequencies 顺序不保证降序(devfreq 表常见升序),统一 sort -nr 归一化,保证 index0 = 最高频 = pwrlevel 0,并与 num_pwrlevels 做条目数对齐校验
  • 窗口一致性保护:上限档位高于地板时(无解区间)自动对齐到上限档位(等效锁频),并明确提示
  • 状态卡新增「地板档位 n / N」:直接看到硬件当前的 min_pwrlevel

v2.1.3 新特性

  • 事件驱动游戏识别proc_monitor.sh 监听 am_proc_start / am_proc_died 写入 state/game_proc,主循环直接读状态,去掉每轮的 pidof 轮询
  • 保留启动兜底扫描:开机时若已有目标游戏在运行,仍能识别
  • WebUI 包名来源统一:状态 / 配置 / 日志三处统一读 state/game_proc

v2.1.2 新特性

  • 安装期节点探测按实际平台路径:复用运行时引擎 lib/platform.sh(多路径 + 平台自适应),8e5 安装时不再误报"未检测到 KGSL 节点",明确提示"devfreq 空壳由 GMU DCVS 接管属正常"
  • 热路径零 fork 化:节点读写 / 配置读取 / 进程校验全部走 shell 内建(read/echo/$SECONDS),游戏轮询 统一 0.3s(实测每轮含地板+上限共 6 路校验 ≈ 73μs,CPU 占用 <0.02%,比旧版 1s 轮询的几十次 fork 还低一个量级)
  • 上限护栏同频max_pwrlevel / max_freq / max_gpuclk / gpu_max_clock 四路同样每 0.3s 检测,其他游戏/模块拉低上限后 0.3s 内拉回
  • ✅ 配置热加载 / 状态文件只在变化时写,减少 0.3s 轮询下的 IO
  • ✅ 修复 WebUI 页脚版本号不一致

v2.1.1 新特性

  • 三通道地板接管min_pwrlevel(档位)+ devfreq/min_freq(Hz)+ /sys/kernel/gpu/gpu_min_clock(MHz)同步写入,覆盖 8g3 / 8e5 全部节点布局
  • 上限常驻保护max_pwrlevel / max_gpuclk / gpu_max_clock / max_freq 四路护栏,防止游戏或原厂栈拉低上限
  • 游戏运行 1 秒校验(原 5 秒),压制原厂游戏栈(opgs_daemon 等)的抢写
  • 写后回读自检:被驱动丢弃时输出 WARN floor write rejected
  • 节点不存在自动跳过:8e5 无 devfreq 节点时零空转
  • monitor 进程树治理:重启不再累积孤儿进程(原每次 +2)
  • 空变量写保护:节点路径缺失时拒绝写入,防止误写根目录
  • WebUI 面板:状态 / 档位自定义 / 实时日志

v2.0.0 特性(历史)

  • min_pwrlevel 档位接管(实测 13 分钟+ 不被系统覆盖,对比 min_freq 几秒即被覆盖)
  • 三平台自适配 + 按处理器平台区分安装
  • 双事件监听(am_proc_start 启动 + am_proc_died 退出 + 校验兜底)
  • 异常残留自清理(上次崩溃残留的档位,启动时自动恢复)

工作原理

游戏启动  → 三通道同步写入地板:
              min_pwrlevel(档位号)
              devfreq/min_freq(Hz,节点存在时)
              /sys/kernel/gpu/gpu_min_clock(MHz,节点存在时)
游戏运行  → 每 0.3 秒只读校验(零 fork,偏离才重写);governor 在地板以上自由调频
            同时守卫上限:max_pwrlevel / max_gpuclk / gpu_max_clock / max_freq
游戏退出  → 8 秒迟滞 → 恢复系统默认档位(num_pwrlevels-1)

使用场景

场景 GPU 地板
王者荣耀 / 永劫无间运行中(前台/后台/小窗) 目标档位(默认 680MHz)
所有目标游戏退出后 系统默认(约 231MHz)

安装

1. KernelSU / Magisk / APatch 中安装 zip
2. 重启生效
3. WebUI: http://127.0.0.1:8778(管理器内嵌通道或浏览器)

WebUI

  • 状态:平台 / 实际地板 / 地板档位 / 目标地板 / 目标上限 / 当前频率 / 实际上限 / 游戏状态 / 温度
  • 档位:下拉框列出设备真实档位(每项标注档位号)→ 保存即吸附生效(游戏运行中 0.3s 内应用;非游戏态不写地板,进游戏后生效)
  • 日志:实时查看运行日志

保存时会自动吸附:你选的 MHz 若不在设备频表上,会落到最近的可用档位,界面明确回显「生效值 + 档位号」。 配置值与设备档位不一致时,档位区会给出 ⚠ 提示。

修改游戏白名单

编辑 /data/adb/modules/g750-boost/games.txt,一行一个包名(建议末尾留空行)。

日志

/data/adb/modules/g750-boost/boost.log

技术细节

接管通道(地板)

通道 节点 单位 8g3 8e5 说明
/sys/class/kgsl/kgsl-3d0/min_pwrlevel 档位号 最可靠,实测长时间不被覆盖
软下限 <kgsl>/devfreq/min_freq Hz ❌ 无节点 第三方调频 App 走这里,必须同步
内核 /sys/kernel/gpu/gpu_min_clock MHz msm_perf / 性能工具常用接口

8e5 (SM8850) 上 devfreq 设备虽注册但无频率节点(gen8 把调频决策移到 GMU DCVS, 且 DCVS 节点全部只读)。代码按"节点文件存在"探测,不存在自动跳过,无空写。 min_pwrlevel / min_clock_mhz / gpu_min_clock 在 8e5 上指向同一后端,写一个另两个跟随。

上限护栏

节点 单位 8g3 8e5
max_pwrlevel 档位号
max_gpuclk Hz
/sys/kernel/gpu/gpu_max_clock MHz
<kgsl>/devfreq/max_freq Hz ❌ 无节点

档位映射

available_frequencies 的 index = pwrlevel。模块会先把频表强制降序归一化(不同 SoC / devfreq 表顺序不保证),再用 num_pwrlevels 做条目数对齐校验。

  • 地板:目标频率 → 选择 ≥ 目标的最小档位(如 700 → 720)
  • 上限:目标频率 → 选择 ≤ 目标的最大档位(如 400 → 366)
  • 保存时写入的是吸附后的值,所以 WebUI 里显示的永远是设备真实档位

恢复保证

  • 启动保存系统默认档位(num_pwrlevels-1)
  • 退出 / 禁用 / 卸载 / 异常(trap)全部恢复
  • 崩溃残留:下次启动自动清理

平台档位表参考

平台 档位表(MHz)
SM8650 903 / 834 / 770 / 720 / 680 / 629 / 578 / 500 / 422 / 366 / 310 / 231
SM8850 (8e5) 1200 / 1050 / 967 / 902 / 826 / 726 / 646 / 578 / 539 / 500 / 461 / 422 / 382 / 342 / 282 / 222 / 191 / 160
SM8750 运行时自动读取

更新日志

v2.1.4 (2026-09-13)

  • WebUI 档位选择改按档位下标命中,修复"配置值不在频表时静默选中最高频"
  • 保存时强制吸附到设备真实档位,写盘值必为可用档位
  • 回显生效值 + 档位号;保存后回读;吸附 / 夹取附加提示
  • 修复浏览器通道未替换 __MODPATH__(导致 config.sh 被降级为 status.sh
  • 频表强制降序归一化 + 与 num_pwrlevels 对齐校验(跨 SoC 一致性)
  • 上限档位高于地板时窗口对齐(等效锁频)
  • WebUI 状态卡新增「地板档位」

v2.1.3 (2026-09-13)

  • 事件驱动游戏识别(am_proc_start / am_proc_diedstate/game_proc),去掉 pidof 轮询
  • 保留启动兜底扫描
  • WebUI 包名来源统一到 state/game_proc

v2.1.2 (2026-09-13)

  • 安装期节点探测重构:按实际平台路径探测(复用运行时引擎),8e5 不再误报
  • 热路径零 fork 化:内建 read/echo 替代 cat/命令替换,游戏轮询统一 0.3s(实测每轮 73μs)
  • 上限护栏同频 0.3s:四路上限节点每轮检测,拉低后 0.3s 内恢复
  • 修复:WebUI 页脚版本号 v2.1.0 → v2.1.2
  • 修复:启动 banner 版本号与 module.prop 一致(v2.1.2 / versionCode 11)

v2.1.1 (2026-09-13)

  • 三通道地板接管(min_pwrlevel / devfreq min_freq / kernel gpu_min_clock)
  • 上限四路护栏(max_pwrlevel / max_gpuclk / gpu_max_clock / max_freq)
  • 游戏运行 1 秒校验 + 写后回读自检
  • 修复:节点缺失时可能误写根目录(空变量写保护)
  • 修复:proc_monitor 进程树泄漏(重启累积孤儿进程)
  • 修复:启动 banner 版本号与 module.prop 不一致
  • 8e5 (SM8850) 全节点实测定稿:devfreq 空壳、GMU DCVS 只读,均自动跳过

v2.1.0 (2026-09-13)

  • 新增上限档位接管(max_pwrlevel)+ WebUI 上限下拉
  • 频率表多路径读取(freq / level 双模式)+ 单位归一化

v2.0.0 (2026-09-12)

  • 重构:min_pwrlevel 档位接管(替代 min_freq 主通道)
  • 三平台自适配与安全模式
  • WebUI 档位自定义
  • 双事件监听(start + died)
  • 异常残留自清理

v1.3.1

  • am_proc_start 事件监听 + 精确匹配
  • games.txt 末行无换行修复

v1.2.0

  • 纯进程检测(前台/后台/小窗一致)

License: MIT
作者: 雨色

About

Snapdragon GPU floor booster module (SM8650/SM8750/SM8850) for KernelSU/Magisk/APatch

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages