Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

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

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


这是什么

一个 KernelSU / Magisk / APatch 模块,用来接管游戏运行时的 GPU 频率下限

手机 GPU 的默认调度很保守:即便你在跑游戏,系统仍会把频率压到很低来省电,结果就是帧率忽高忽低、掉帧、触控迟滞。G750 Boost 在检测到游戏运行时,把 GPU 的地板档位抬到你设定的值并锁住上限,系统 governor 在这个地板之上自由调频;游戏退出后自动恢复系统默认。

游戏启动  →  三通道同步写入地板
游戏运行  →  每 0.3s 只读校验,偏离才重写;governor 在地板以上自由调频
游戏退出  →  8 秒迟滞后恢复系统默认档位

功能一览

1. 三通道地板接管

不只写一个节点,而是三处同时写,覆盖不同调频 App 与系统组件的接口:

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

节点不存在的平台自动跳过,不做空写。

2. 上限常驻护栏

防止游戏或原厂游戏栈(opgs_daemon 等)把上限拉低:

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

四路每 0.3 秒检测,被拉低后 0.3 秒内拉回。

3. 档位可自定义(WebUI)

  • 下拉框列出设备真实档位,每项标注档位号
  • 保存即吸附:你选的 MHz 若不在设备频表上,自动落到最近的可用档位,并回显「生效值 + 档位号」
  • 配置值与设备档位不一致时给出 ⚠ 提示
  • 游戏运行中改动 0.3 秒内应用;非游戏态不写地板,进游戏后生效

4. 配置目标与生效值分离

WebUI 状态区同时展示三组值,一眼看出是"配置没生效"还是"被谁改了":

  • 配置目标 — 读配置文件,非游戏态也准确
  • 当前生效 — 运行态缓存,仅游戏态刷新
  • 硬件实际 — 直接读 sysfs

5. 液态玻璃 WebUI

自适应手机单列 / 平板双栏,含浅色 / 暗色 / 跟随系统三态主题。

壁纸支持(系统相册选图):

  • root 直读_idcontent query 解析真实路径 → cp 进模块 → magic 校验 → 原子替换
  • 失败自动回落到 content read 流式读取 → FileReader 直传 → canvas 压缩
  • 壁纸透明度可调(wall_opacity
  • 玻璃透明度可调wall_glass):统一驱动卡片 / 日志区 / 输入框 / 浮动按钮的玻璃层
  • 玻璃模糊可调wall_blur):0–40px,0 = 完全无模糊

分页导航:首页(状态 + 档位配置 + 日志)与壁纸设置分为两个独立页面,底栏导航切换并高亮当前页。

6. 游戏白名单

编辑 /data/adb/modules/g750-boost/games.txt,一行一个包名。

支持前台 / 后台 / 小窗运行,游戏进程存活期间地板始终生效。

7. 可靠性与安全性

  • 服务自愈守护webdaemon.sh 每 10 秒探活,死亡即拉起(带失败退避);模块 disable/remove 时绝不拉起
  • 恢复保证:启动时保存系统默认档位;退出 / 禁用 / 卸载 / 进程异常(trap)全部恢复;崩溃残留下次启动自动清理
  • 热路径零 fork:节点读写 / 配置读取 / 进程校验全走 shell 内建,游戏期 0.3s 一轮 ≈ 73μs,CPU 占用 <0.02%
  • 写后回读自检:被驱动丢弃时输出 WARN floor write rejected
  • 路径注入防护:外部路径参数 base64url token 化;_id 严格数字白名单;后端三重路径校验 + JPEG/PNG/WEBP magic 校验
  • 失败可见:WebUI 写入失败时直接回显诊断尾部,无需 root 读日志

安装

0. 下载最新版: g750-boost_v2.2.11.zip
   https://github.com/jun430/g750-boost/releases/download/v2.2.11/g750-boost_v2.2.11.zip
1. KernelSU / Magisk / APatch 中安装 zip
2. 重启生效
3. WebUI: http://127.0.0.1:8778(管理器内嵌通道或浏览器)

使用场景

场景 GPU 地板
目标游戏运行中(前台 / 后台 / 小窗) 你设定的档位(默认 680 MHz)
所有目标游戏退出后 系统默认(约 231 MHz)

WebUI

http://127.0.0.1:8778

  • 首页
    • 状态卡:平台 / 配置目标 / 当前生效 / 硬件实际 / 地板档位 / 目标上限 / 当前频率 / 实际上限 / 游戏状态 / 温度
    • 档位配置:地板频率(下限)、上限频率(封顶)、保存档位
    • 运行日志:实时查看
  • 壁纸分页(底栏「壁纸」进入)
    • 选择 / 清除壁纸
    • 壁纸透明度、玻璃透明度、玻璃模糊三个滑杆
  • 底栏导航:首页 / 壁纸 / 刷新 / 主题

平台档位表参考

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

技术细节

档位映射

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

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

平台自适配

识别优先级:GPU 硬件型号gpu_model,最可靠)> ro.soc.model > ro.board.platform

厂商 ROM 的 ro.soc.model 命名可能不准(8e5 曾被写成 SM8750),所以以 GPU 实际型号为首要判据。

节点路径缓存

首次探测后把 4 个 sysfs 路径缓存到 config/gpu_paths.conf,后续直接读缓存(缓存的是路径,不是频率值)。路径失效时自动重新探测。

频率表始终实时读内核节点,从不缓存 —— 内核更新频表后立即生效。

8 Elite Gen5 特别说明

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


日志

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

更新日志

v2.2.11 (2026-09-24)

  • 修复「壁纸透明度调了还是有遮挡」:定位到三层叠加遮挡 —— body 自身背景压住 z-index:-1 的壁纸层(真凶);.card 硬编码 blur(8px) 不听「玻璃模糊」滑杆;select/.logview 残留 18~25% 白底。三层全修,卡片磨砂由 8px 降至 2.4px,玻璃 100% 时真正全透
  • 修复「系统返回/侧滑不退出 WebUI」:根因是 v2.2.8 引入的 location.hash 分页路由 —— 写 hash 属于同文档导航,每次切页都往 WebView 历史栈压记录,使宿主 canGoBack()true。改为纯内存变量,完全不碰 history/location。实测 history.length2→3→…→16 变为恒为 2(增量 0)
  • 修复 8778 并发缺陷busybox nc -l 单连接串行 → 浏览器并发请求 index.html+style.css+main.js 时后两个被拒,页面裸奔。改为 nc -lk。实测 3 路并发 3/3、8 路 8/8 全部 200
  • 修复 http://127.0.0.1:8778/?v=xxx 打开 404

v2.2.10 (2026-09-24)

  • 修复 8778 并发缺陷(见上,nc -lk

v2.2.9 (2026-09-24)

  • 修复壁纸遮挡三层(见 v2.2.11 说明)
  • 滑杆配置 localStorage 缓存扩展,首屏不再闪跳默认值

v2.2.8 (2026-09-24)

  • 壁纸设置改为独立分页(首页 / 壁纸 整页切换,底栏导航高亮当前页)

v2.2.7 (2026-09-24)

  • 壁纸设置集中到独立面板(弹层形式,v2.2.8 改为分页)

v2.2.6 (2026-09-24)

  • 首屏壁纸预热:把 present/mtime 缓存进 localStorage,首屏零延迟显示壁纸
  • wall.sh get 提速 60%do_get 由 6 次 conf_get(多进程管道)改为一次 grep + 内建 read 解析,实测 0.630.97s → 0.200.35s
  • 新增 shrinkIfHuge():>2MB 壁纸自动尝试降采样(需 convert/ffmpeg,本机无此工具时保留原图)
  • 后端 do_get() 进程数从 ~20 降到 ~3

v2.2.5 (2026-09-24)

  • 玻璃透明度上限完全放开:映射改为 alpha = 1 - v/100,100% → alpha 0(玻璃底衬彻底消失)
  • 新增玻璃模糊滑杆 0–40px,作用于底部浮动按钮的 backdrop-filter

v2.2.4 (2026-09-24)

  • 壁纸可直选相册图(root 直读):宿主 SuKiSU Ultra 交给 WebView 的 File 是空壳(name 是 MediaStore 数字 _idsize=0、无字节流),改用 root 直读。实测 11MB 相机原图直传成功,字节级一致
  • 玻璃透明度可调(统一驱动卡片 / 日志区 / 输入框 / 浮动按钮)
  • 壁纸透明度持久化
  • 液态玻璃浮动按钮(3 枚独立,不连成整条底栏)
  • 缓存击穿(?v= 版本参数)、写入链路自愈、失败可见、路径注入防护

v2.2.3 (2026-09-24)

  • root 直读方案落地(MediaStore _id → 真实路径 → cp

v2.2.2 (2026-09-24)

  • 修复 ksu.exec 并发竞态(全局串行化)
  • 修复丢失单引号导致整个 JS 失效的问题

v2.2.1 / v2.2.0 (2026-09-24)

  • 液态玻璃 WebUI 首版:三态主题、响应式布局、壁纸层

v2.1.6 (2026-09-13)

  • 修复 KernelSU 下节拍全部失效:busybox 的 $SECONDS 赋值后恒为 0 不自增,导致配置重载 / 路径探针 / 8s 迟滞 / 日志节流全部失灵。启动时检测并 exec /system/bin/sh(mksh)重执行自身
  • 移除 proc_monitor 看护(与单实例保护互相打架,导致无限 respawn)

v2.1.5 (2026-09-13)

  • 配置目标与生效值分离(cfg_floor/cfg_ceilstate/* 两套字段)
  • WebUI 状态卡三行展示
  • 服务自愈守护 + webdaemon 独立会话(setsid

v2.1.4 (2026-09-13)

  • WebUI 档位选择改按下标命中(此前按 MHz 值匹配,配置值不在频表时静默选中第一项 = 最高频)
  • 保存即吸附、回显生效值
  • 修复浏览器降级通道 __MODPATH__ 未替换问题
  • 频表口径统一(强制降序归一化)

v2.1.3 (2026-09-13)

  • 事件驱动游戏识别(监听 am_proc_start / am_proc_died,去掉每轮 pidof 轮询)
  • 保留启动兜底扫描

v2.1.2 (2026-09-13)

  • 安装期节点探测按实际平台路径(复用运行时引擎)
  • 热路径零 fork 化,游戏轮询统一 0.3s
  • 上限护栏同频(0.3s)

v2.1.1 (2026-09-13)

  • 三通道地板接管
  • 上限常驻保护(四路护栏)
  • 游戏运行 1 秒校验(原 5 秒)
  • 写后回读自检、节点不存在自动跳过、monitor 进程树治理、空变量写保护
  • WebUI 面板首版

v2.1.0 (2026-09-13)

  • 三通道地板接管 + 上限护栏 + 稳定性修复

v2.0.0 (2026-09-12)

  • min_pwrlevel 档位接管(实测长时间不被系统覆盖,对比 min_freq 几秒即被覆盖)
  • 三平台自适配 + 按处理器平台区分安装
  • 双事件监听 + 校验兜底
  • 异常残留自清理

v1.3.1 / v1.2.0 / v1.1.0

  • 早期版本:单一节点接管、平台识别雏形

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