mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 19:11:08 +00:00
Enabling GPU clock pinning froze Thor's kernel utilization counters, leaving the HUD stuck at an arbitrary value (10–11% in the reproduced sessions). KGSL_PROP_PWRCTRL disables both the governor and its utilization sampling. Use a dedicated KGSL context with a maximum-power constraint, renewed by a small NOP submission every 25 ms. Keep devfreq running, bound the queue to one submission, and release the context, mapped command buffer and GPU allocation on stop or failure. Preserve recovery of legacy global pins and report native setup failures instead of claiming success. Validation: - AYN Thor: reproduced frozen counters with the old pin. The replacement native implementation, run as a standalone ARM64 harness alongside the installed Steam/Bulletstorm session, kept 680 MHz while utilization changed from 17% in Steam to about 4% loading and 44% at the animated title. A final-source smoke run also returned changing 60–66% samples at 680 MHz. - Native lifecycle regression passed on Linux and as an ARM64 executable on Thor: setup failure cleanup, renewal, bounded queue, runtime failure, restart, and type-3/type-7 NOP selection for older/newer Adreno cores. - Android native build and Kotlin compilation passed locally (NDK 27.0.12077973). - CI build, Android tests, native regressions, and signing passed. Installed the release-signed PR APK on Thor with app data preserved. With GPU pin enabled, the normal Steam/Bulletstorm session held 680 MHz while the HUD changed from 3% loading to 53% in the animated game scene at 60 FPS; raw gpubusy samples also continued changing. This checks utilization reporting, not long-term gameplay stability. The earlier session exit was recorded by Android as LOW_MEMORY; this PR addresses the utilization freeze.