MTK_Ultra_Low_Latency_Experimental_6.1
**Note: i'm pretty tired from work and this is a fully Ai generated changelog. Sorry for that.
Highlights
-
Lower input-to-pixel latency with safer low-latency policy and smarter target-time frame picking.
-
Truer stats: Decode Time (enqueue→dequeue) split from Displayed Frame Age (dequeue→present).
-
External displays no longer clamp at 60 Hz when higher refresh is available.
-
Clear compatibility: Direct Present cannot be combined with FSR or HDR.
-
Perf build now compiled with -O3 and Full LTO for native code.
-
App (perf variant) renamed to “Artemide”.
Improvements
- Decode latency metrics
Stock measurement restored (enqueue → dequeue) with symmetric locking.
Split metrics (Decode Time vs Displayed Frame Age), stable avg/p95, outlier filtering.
Cleaner onReleaseOutputBuffer logging (PTS, deltas, render flag).
Output buffer handling
Safer buffer release; prevent double-release/invalid indices.
Prefer the frame closest to target present time; conservative drop if too far.
- Latency policy \ Frame pacing
Prefer Lower Delays (pure LFR): non-blocking dequeue (0 µs) to avoid extra waits in the decoder path.
Balanced / Cap FPS / Max Smoothness: stable target slots; better cap alignment; reduced micro-stutter.
Cap FPS: jump to the next nominal slot under jitter instead of clamping to “now”.
IJH (Instant Jitter Hybrid): jitter budget from instantaneous PTS deltas (peak-hold + decay); avoids added latency on >90 Hz panels.
- Fsr AntiLag
Enabled only on managed profiles (Balanced/Cap/Max), not on pure LFR.
Profile-based tolerances (~1.5 ms Balanced; ~3 ms Cap/Max) and activation only with empty output queue.
- External displays
Removed unintended 60 Hz clamp on high-refresh monitors; rendering follows the external display refresh when possible.
- HDR / FSR / Direct Present
Reliable HDR state updates (HDR10 detection, format changes, server capability) and consistent hdrActive.
FSR pipeline: faster EASU/RCAS, lazy EGL/GL init, safe bypass when OFF, OES blit path, drain “latest-only”.
UI enforces rules: Direct Present not combinable with FSR or HDR; overlay shows FSR/HDR tags only when truly active.
- Overlay & UX
Perf Lite / Advanced Lite polish (FSR/HDR/IN·R tags, spacing, SDR/HDR label).
Pixel-shift OLED anti burn-in and subtle periodic blink refresh.
New Preferred display option to choose the target display buggy, but works
- System & compatibility
ADPF / Performance Hint Manager via reflection: create session only when supported; safe no-op otherwise; clean close; isActive() helper for diagnostics.
Removed over-aggressive CPU affinity pinning.
Vendor guards (e.g., Samsung-specific code gated to Samsung).
- Build & Packaging
Perf build uses -O3 and Full LTO for native components to improve codegen and reduce CPU overhead.
App rename: the perf variant is now presented as “Artemide” (updated app name in launcher/branding for that variant).
- Performance
Lower end-to-end latency, especially on 90/120 Hz panels.
Smoother cadence under FPS caps and less visible jitter during network hiccups.
- Fixes
Removed stats inflation when stream FPS > display Hz.
Suppressed spurious errors on devices without Performance Hints/PowerHAL.
Stabilized rare paths around INFO_OUTPUT_FORMAT_CHANGED and early codec errors.
- Notes & Limitations
Direct Present cannot run together with FSR or HDR.
On some MediaTek devices, ultra-low-latency vendor paths may be limited by the platform.
Expect different numbers vs older builds because stats now separate decoder work from queue/pacing delay.
- What is “Snappy Input”?
A set of micro-optimizations to shorten the path from your touch/gamepad action to the next visible frame:
Shorter input queues and fewer blocking points.
Lower event coalescing (events forwarded sooner).
Higher thread priority on critical input paths.
More frequent flushing of input packets to the host.
Effect: noticeably snappier controls, especially with conservative pacing or network jitter.
Trade-off: slightly higher input packet rate and less smoothing of tiny movements.
- What is ADPF / Performance Hints?
ADPF (Android Dynamic Performance Framework) lets the app provide workload hints to the system (when supported):
Open a hint session for critical threads (decode/render).
Report a target time budget and the actual time taken per frame.
With these hints, the system/PowerHAL can boost and schedule more intelligently, reducing jank and latency without running max clocks continuously.
Compatibility: if ADPF/PowerHAL isn’t available, it’s a no-op (no impact, no errors).
For more, check commits.
The app is named Artemide to avoid replacing the official Artemis app (I'm looking at you, @VirtualGit). You'll likely need to pair it again on Apollo or Sunshine (and this will be the last time, I promise!).
As always,
⚠️ Heads up: this is experimental. I’ve only tested on my hardware, so things may break on yours. Use at your own risk.
Found a bug? Tell me and I’ll try to fix it.
Enjoy!
PS: Thank you to all the testers who helped me identify bugs I had missed on my own devices. There will be plenty more to discover, I'm sure!