120fps — un frame rate di 120 fotogrammi al secondo disponibile su display con frequenza di aggiornamento di 120 Hz, dove ogni fotogramma richiede 8.3 ms. Secondo Apple WWDC 2023 Session, ProMotion cambia automaticamente la frequenza da 24 a 120 Hz per bilanciare fluidità e consumo energetico. 8.3 ms è la metà del budget standard, richiedendo una seria ottimizzazione del rendering.
Punti chiave
120fps è il doppio del frame rate standard, dove il display aggiorna l’immagine 120 volte al secondo. Ogni fotogramma ha un budget di 8.33 ms — la metà di 60fps. Ciò significa che GPU e CPU devono elaborare la grafica due volte più velocemente, e tutti gli algoritmi che funzionano in 16.7 ms a 60fps si adattano a 120fps solo se sono due volte più efficienti.
Il primo dispositivo mobile con display a 120 Hz è stato il Razer Phone (2017) con pannello IGZO di Sharp. Apple ha introdotto 120 Hz nell’iPad Pro (2017) con il nome ProMotion, e negli iPhone solo nel 2021 con iPhone 13 Pro. Su Android, 120 Hz è diventato mainstream dal 2020: Samsung Galaxy S20, OnePlus 8 Pro, Xiaomi Mi 10. Oggi, 90–120 Hz è lo standard per i dispositivi flagship, e la tecnologia LTPO consente il cambio dinamico di frequenza.
La percezione dell’utente di 120fps differisce da 60fps non tanto per l’assenza di scatti, ma per la sensazione di risposta istantanea — cursore, scorrimento e animazioni seguono il dito con latenza minima. Questa sensazione viene spesso descritta come uno schermo “liquido” o “oleoso”. Dopo aver usato 120 Hz, tornare a 60 Hz sembra soggettivamente lento, anche in assenza di cadute oggettive di fotogrammi.
Un display a 120 Hz aggiorna fisicamente i pixel 120 volte al secondo, inviando un segnale sul bus MIPI DSI/DPI a frequenza doppia. Ogni pixel riceve un nuovo valore di luminosità ogni 8.3 ms. Per i pannelli OLED, ciò significa che il tempo di emissione di ogni sub-pixel è ridotto, richiedendo una retroilluminazione più luminosa per mantenere la stessa luminosità dell’immagine.
LTPO (ossido policristallino a bassa temperatura) è una tecnologia di produzione di display OLED che combina LTPS (alta velocità di commutazione) e IGZO (basso consumo statico). LTPO consente al display di modificare dinamicamente la frequenza di aggiornamento da 1 a 120 Hz senza costi energetici aggiuntivi. In modalità Always-On Display, la frequenza scende a 1 Hz; durante lo scorrimento, sale a 120 Hz. Ciò fornisce un risparmio energetico fino al 30% rispetto ai display che funzionano costantemente a 120 Hz.
Frame pacing — l’uniformità degli intervalli tra i fotogrammi, è il parametro più importante a 120fps. Mentre a 60fps una differenza di 2–3 ms tra fotogrammi è impercettibile, a 120fps la stessa differenza assoluta rappresenta il 25% della durata del fotogramma e viene percepita come scatto. Per un 120fps fluido, ogni fotogramma deve rientrare in 8.3 ms ±1 ms. Strumenti come FrameRate in Xcode Instruments mostrano non solo il FPS medio ma anche un istogramma degli intervalli per valutare il frame pacing.
// iOS — rilevamento display 120 Hz tramite CADisplayLink
func checkDisplayRefreshRate() {
let link = CADisplayLink(target: self,
selector: #selector(step))
if let preferredRate = link?.preferredFrameRateRange {
print("Frequenza max: \(preferredRate.maximum) Hz")
}
}
ProMotion è il marchio Apple per display con frequenze di aggiornamento adattive fino a 120 Hz. Introdotto per la prima volta nell’iPad Pro 10.5 (2017), è poi apparso nell’iPhone 13 Pro (2021) e MacBook Pro (2021). ProMotion non è solo 120 Hz — è gestione intelligente della frequenza: il sistema analizza il tipo di contenuto e cambia la frequenza per l’equilibrio ottimale tra prestazioni e consumo energetico.
ProMotion supporta quattro modalità: 24 Hz per contenuti statici e video 24fps, 30 Hz per video 30fps, 60 Hz per navigazione UI e 120 Hz per scorrimento e giochi. Il cambio tra le modalità avviene all’interno di un singolo fotogramma (8.3 ms) ed è impercettibile per l’utente. Gli sviluppatori possono influenzare la selezione della frequenza tramite preferredFrameRateRange in CADisplayLink, ma la decisione finale è presa dal sistema sulla base dell’analisi del contenuto.
Apple fornisce API per lavorare con ProMotion a partire da iOS 15. CADisplayLink.preferredFrameRateRange consente di impostare un intervallo di frequenza preferito. UIScene.ActivationConditions può influenzare la frequenza durante la transizione tra scene. Per il rendering Metal, CAMetalLayer.displaySyncEnabled deve essere true per la sincronizzazione con ProMotion. Se un’app non è ottimizzata per 120fps, iOS la passa automaticamente a 60 Hz, visibile in Xcode nella sezione GPU Report.
// iOS — richiesta 120fps per modalità gioco
let displayLink = CADisplayLink(
target: self,
selector: #selector(gameLoop)
)
if #available(iOS 15.0, *) {
displayLink?.preferredFrameRateRange =
CAFrameRateRange(minimum: 80,
maximum: 120,
preferred: 120)
}
displayLink?.add(to: .current,
forMode: .default)
L’ottimizzazione per 120fps non significa solo raddoppiare la velocità del codice, ma ripensare l’architettura di rendering. Le operazioni che rientravano in 16.7 ms a 60fps ora devono essere completate in 8.3 ms. Ciò influisce su tutte le fasi della pipeline: preparazione CPU, rendering GPU e chiamate di sistema.
A 120fps, il numero di draw call per fotogramma deve essere la metà di quello a 60fps per mantenere lo stesso carico GPU. Se 400 draw call sono accettabili a 60fps, a 120fps non sono consentite più di 200. Utilizza texture atlases, fusione di mesh e instanziamento GPU per ridurre le chiamate di disegno. Su Metal, utilizza Indirect Command Buffers; su Vulkan, utilizza Secondary Command Buffers per la registrazione parallela dei comandi.
Shaders — un altro fattore critico. Gli shader pixel complessi con molteplici campionature di texture e operazioni matematiche possono facilmente superare il budget di 8.3 ms. Utilizza shader a bassa precisione (half invece di float), riduci il numero di istruzioni e campioni di texture. Su GPU mobili (Apple A17, Snapdragon 8 Gen 3), ogni campionatura di texture richiede 2–4 cicli, e a 120fps questo può diventare un collo di bottiglia.
A 120fps, il thread principale deve preparare un fotogramma in 4–5 ms per lasciare tempo al rendering GPU. Qualsiasi operazione sincrona sul thread principale — lettura database, parsing JSON, caricamento immagini — crea scatti. Sposta tutte le operazioni pesanti su thread secondari, utilizza API asincrone e pool di thread. In iOS, DispatchQueue con qualityOfService .userInteractive dovrebbe essere riservata solo al codice di rendering critico.
| Componente | Budget 120fps | Budget 60fps |
|---|---|---|
| CPU (thread principale) | 4 ms | 8 ms |
| Rendering GPU | 4 ms | 8 ms |
| Compositing | 0.3 ms | 0.7 ms |
| Attesa VSync | 0–2 ms | 0–5 ms |
Confrontare 120fps e 60fps non si riduce a raddoppiare la fluidità. La differenza viene percepita diversamente a seconda del tipo di contenuto. Per scorrimento e animazioni UI, 120fps fornisce un’interfaccia soggettivamente più “responsive”. Per i giochi, il vantaggio di 120fps si manifesta in una riduzione del motion blur e un tracciamento più preciso degli oggetti veloci.
Consumo energetico — il principale compromesso. 120fps consuma il 30–50% di energia in più rispetto a 60fps alla stessa luminosità del display. Ciò significa che su una batteria da 4000 mAh, un’ora di gioco a 120fps scarica la batteria circa il 25–30% più velocemente. I display LTPO risolvono parzialmente il problema riducendo la frequenza nelle scene statiche a 1 Hz, ma durante l’uso attivo (scorrimento, giochi) la frequenza rimane al massimo.
La scelta tra 60fps e 120fps dipende dalle priorità dello sviluppatore. Per social network, messaggerie e app di notizie, 120fps non offre un vantaggio significativo — l’interazione principale (lettura, input di testo) non beneficia dell’ultra-fluidità. Per giochi, mappe, editor grafici e app con animazione intensiva, 120fps diventa un vantaggio competitivo e un indicatore di qualità.
Testare 120fps richiede un approccio speciale: le metriche standard di 60fps non rivelano problemi di frame pacing a 120 Hz. Utilizza una telecamera ad alta velocità (120+ fps) per registrare il comportamento reale dello schermo o gli strumenti integrati della piattaforma — Xcode Metal Capture per iOS e AGI (Android GPU Inspector) per Android. Questi strumenti mostrano il tempo esatto di ogni fotogramma, inclusa l’attesa VSync, e aiutano a identificare i micro-scatti.
Domande frequenti
Non sempre. 120fps richiede il doppio di energia e risorse di calcolo. Per contenuti statici e UI semplici, 60fps è sufficiente. Il vantaggio di 120fps è evidente in scene dinamiche: scorrimento, giochi, animazioni di transizione.
Usa Xcode Instruments (template Core Animation) o Android Studio Profiler. Su iOS, controlla CADisplayLink.timestamp — l’intervallo tra le chiamate dovrebbe essere circa 8.3 ms. Su Android, attiva Show refresh rate nelle Opzioni sviluppatore.
Il display aggiorna i pixel con il doppio della frequenza, la GPU esegue il doppio delle operazioni di rendering e la CPU elabora il doppio dei fotogrammi. Ogni operazione consuma energia. I display LTPO riducono la frequenza a riposo, ma durante l’uso attivo, il consumo energetico aumenta proporzionalmente alla frequenza.
Sì. A partire da Android 11, il sistema supporta diverse frequenze di aggiornamento. Gli sviluppatori possono richiedere 120 Hz tramite WindowManager.setPreferredRefreshRate. Tuttavia, non tutti i dispositivi mantengono stabilmente 120fps — è necessaria l’ottimizzazione del rendering GPU.
In un test alla cieca, la maggior parte degli utenti nota la differenza durante scorrimento e animazioni. Tuttavia, per l’uso quotidiano (social media, video, messaggerie), la differenza è soggettivamente piccola. Dopo essersi abituati a 120 Hz, tornare a 60 Hz sembra lento.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche