This is the sixth article in the Android Perfetto series. It focuses on the 120Hz refresh rate, which has now become a standard for Android flagship devices. We will discuss the advantages and challenges of high refresh rates and analyze how 120Hz works from a system perspective.
Over the past few years, mobile display technology has evolved from 60Hz to 90Hz and now commonly to 120Hz. This evolution brings not only a smoother visual experience but also new requirements for system architecture and app development. Using Perfetto, we can gain a clearer understanding of frame rendering and performance on high-refresh-rate devices.
Table of Contents
- Perfetto Series Catalog
- Basic Concepts
- System Implementation and Principles
- Advantages and Challenges of 120Hz
- Thoughts and Future Outlook
- Conclusion
Perfetto Series Catalog
- Android Perfetto Series Catalog
- Android Perfetto Series 1: Introduction to Perfetto
- Android Perfetto Series 2: Capturing Perfetto Traces
- Android Perfetto Series 3: Familiarizing with the Perfetto View
- Android Perfetto Series 4: Opening Large Traces via Command Line
- Android Perfetto Series 5: Choreographer-based Rendering Flow
- Android Perfetto Series 6: Why 120Hz? Advantages and Challenges
- Android Perfetto Series 7: MainThread and RenderThread Deep Dive
- Android Perfetto Series 8: Understanding Vsync and Performance Analysis
- Android Perfetto Series 9: Interpreting CPU Information
Basic Concepts
What is Screen Refresh Rate?
Refresh rate is a hardware concept. It refers to how many times per second the screen can refresh its displayed content, measured in Hertz (Hz).
- 60Hz: Refreshes 60 times per second (~16.67ms interval).
- 90Hz: Refreshes 90 times per second (~11.11ms interval).
- 120Hz: Refreshes 120 times per second (~8.33ms interval).
The refresh rate determines the hardware’s capacity for smoothness, but the actual content displayed is decided by software.
What is FPS?
FPS (Frames Per Second) is a software concept. It refers to how many unique frames the system generates per second for the screen to display.
- 60FPS: System generates 60 frames/sec (16.67ms budget per frame).
- 120FPS: System generates 120 frames/sec (8.33ms budget per frame).
Ideally, FPS should match the refresh rate. If FPS is lower ($ \text{FPS} < \text{Refresh Rate} $), jank occurs. If FPS is higher ($ \text{FPS} > \text{Refresh Rate} $), frames are discarded, wasting resources.
What is Vsync?
Vsync (Vertical Sync) is the mechanism that aligns software frame generation with the hardware refresh cycle to prevent screen tearing. In Android, the Vsync signal triggers the start of the rendering process.
Why 120Hz?
- Ultimate Fluidity: Twice the visual information of 60Hz makes scrolling and animations look natural.
- Reduced Latency: Touch-to-display latency drops from 16.67ms to 8.33ms.
- Mature Ecosystem: Modern chips (Snapdragon 8 Series, Dimensity 9000s) can sustain 120Hz effortlessly.
- Adaptive Refresh Rate (LTPO): Allows the screen to drop to 1Hz for static content, mitigating battery drain.
System Implementation and Principles
120Hz Rendering Flow in Perfetto
In a 120Hz environment, the primary change is the budget: The rendering budget shrinks from 16.67ms to 8.33ms.

Understanding Buffer Trace Tags
In the Perfetto trace above, you will see two key buffer-related tracks:
QueuedBuffer(App Process):- Indicates that the App has finished rendering and placed the buffer in the queue for SurfaceFlinger.
- When using BLASTBufferQueue, this signifies the
RenderThreadhas handed off the workload.
BufferTX(SurfaceFlinger Process):- “TX” stands for Transmission. This tracks when SurfaceFlinger receives the buffer.
- The sequence is:
RenderThreadcallsqueueBuffer($\text{QueuedBuffer} + 1$) $\rightarrow$ SurfaceFlinger acquires the buffer ($\text{BufferTX} + 1$) $\rightarrow$ Screen Display $\rightarrow$ Buffer Released ($\text{BufferTX} - 1$ and then $\text{QueuedBuffer} - 1$).
Advantages and Challenges of 120Hz
Experience Improvements
- Smoothness: Scrolling through feeds (WeChat, Twitter) feels clear rather than blurry.
- Gaming: Competitive titles feel significantly more responsive; 8.3ms faster reaction time can be a literal game-changer.
- Eye Comfort: Tracking moving content at 120Hz reduces eye strain compared to 60Hz.
Real-world Challenges
- Power Consumption: 120Hz typically consumes 15-20% more battery.
- Performance Pressure: Apps that barely hit 60fps will struggle to maintain 120fps, requiring aggressive optimization.
- Heat: Sustained high-refresh gaming leads to thermal throttling faster than 60Hz gaming.
Thoughts and Future Outlook
Intelligent Management: The Apple ProMotion Lesson
Apple’s ProMotion technology (iPhone 13 Pro+) manages refresh rates based on the “impact” of the animation. It doesn’t just run 120Hz everywhere; it runs it only where the user perceives it.
| Category | Recommended Frequency | Examples |
|---|---|---|
| High Impact | 80-120Hz (Prefers 120Hz) | Full-screen transitions, first-person games |
| Medium Impact | System Default | Opacity fades, micro-movements |
| Low Impact | 8-30Hz | Clock hands, slow progress bars, static text |
This granular strategy balances silky-smooth visuals with battery efficiency. Android developers can achieve similar results using the Surface.setFrameRate() API.
Conclusion
120Hz is a transformative leap for mobile UI. While it adds 8.3ms pressure and power complexity, the benefits in responsiveness and fluidity are undeniable. For developers, tools like Perfetto are essential to identify which parts of the 8.3ms budget are being wasted. The future isn’t just about “higher numbers” but about “smarter numbers”—using high refresh rates exactly when and where they count.
“If you want to go fast, go alone. If you want to go far, go together.”
