120fps — tốc độ 120 khung hình trên giây có trên màn hình với tần số quét 120 Hz, mỗi khung hình mất 8.3 ms. Theo Apple WWDC 2023 Session, ProMotion tự động chuyển đổi tần số từ 24 đến 120 Hz để cân bằng độ mượt và điện năng tiêu thụ. 8.3 ms là một nửa ngân sách tiêu chuẩn, đòi hỏi phải tối ưu hóa kết xuất nghiêm túc.
Các điểm chính
120fps là gấp đôi tốc độ khung hình tiêu chuẩn, nơi màn hình cập nhật hình ảnh 120 lần mỗi giây. Mỗi khung có ngân sách thời gian 8.33 ms — một nửa so với 60fps. Điều này có nghĩa là GPU và CPU phải xử lý đồ họa nhanh gấp đôi, và tất cả các thuật toán hoạt động trong 16.7 ms ở 60fps chỉ phù hợp ở 120fps nếu chúng hiệu quả gấp đôi.
Thiết bị di động đầu tiên có màn hình 120 Hz là Razer Phone (2017) với bảng mạch IGZO của Sharp. Apple giới thiệu 120 Hz trên iPad Pro (2017) với tên ProMotion, và trên iPhone chỉ vào năm 2021 với iPhone 13 Pro. Trên Android, 120 Hz trở thành chủ đạo từ năm 2020: Samsung Galaxy S20, OnePlus 8 Pro, Xiaomi Mi 10. Ngày nay, 90–120 Hz là tiêu chuẩn cho các thiết bị flagship, và công nghệ LTPO cho phép chuyển đổi tần số động.
Nhận thức của người dùng về 120fps khác với 60fps không phải ở chỗ không có giật mà là ở cảm giác phản hồi tức thời — con trỏ, cuộn và hoạt ảnh theo ngón tay với độ trễ tối thiểu. Cảm giác này thường được mô tả là màn hình “lỏng” hoặc “dầu”. Sau khi sử dụng 120 Hz, quay lại 60 Hz có cảm giác chậm chạp, ngay cả khi không có tình trạng rớt khung hình khách quan.
Màn hình 120 Hz cập nhật pixel vật lý 120 lần mỗi giây, gửi tín hiệu qua bus MIPI DSI/DPI ở tần số gấp đôi. Mỗi pixel nhận giá trị độ sáng mới sau mỗi 8.3 ms. Đối với bảng mạch OLED, điều này có nghĩa là thời gian phát xạ của mỗi điểm ảnh phụ bị giảm, đòi hỏi đèn nền sáng hơn để duy trì cùng độ sáng hình ảnh.
LTPO (oxit đa tinh thể nhiệt độ thấp) là công nghệ sản xuất màn hình OLED kết hợp LTPS (tốc độ chuyển mạch cao) và IGZO (tiêu thụ điện tĩnh thấp). LTPO cho phép màn hình thay đổi động tần số quét từ 1 đến 120 Hz mà không tốn thêm năng lượng. Ở chế độ Always-On Display, tần số giảm xuống 1 Hz; trong khi cuộn, tần số tăng lên 120 Hz. Điều này mang lại tiết kiệm năng lượng lên đến 30% so với màn hình hoạt động liên tục ở 120 Hz.
Frame pacing — tính đồng đều của khoảng cách giữa các khung hình, là thông số quan trọng nhất ở 120fps. Trong khi ở 60fps, chênh lệch 2–3 ms giữa các khung không thể nhận thấy, thì ở 120fps, cùng mức chênh lệch tuyệt đối đó chiếm 25% thời lượng khung và được cảm nhận như giật. Để có 120fps mượt, mỗi khung phải nằm trong 8.3 ms ±1 ms. Các công cụ như FrameRate trong Xcode Instruments không chỉ hiển thị FPS trung bình mà còn hiển thị biểu đồ tần suất khoảng cách để đánh giá frame pacing.
// iOS — phát hiện màn hình 120 Hz qua CADisplayLink
func checkDisplayRefreshRate() {
let link = CADisplayLink(target: self,
selector: #selector(step))
if let preferredRate = link?.preferredFrameRateRange {
print("Tần số tối đa: \(preferredRate.maximum) Hz")
}
}
ProMotion là nhãn hiệu của Apple cho màn hình có tần số quét thích ứng lên đến 120 Hz. Được giới thiệu lần đầu trên iPad Pro 10.5 (2017), sau đó xuất hiện trên iPhone 13 Pro (2021) và MacBook Pro (2021). ProMotion không chỉ là 120 Hz — mà là quản lý tần số thông minh: hệ thống phân tích loại nội dung và chuyển đổi tần số để đạt cân bằng tối ưu giữa hiệu suất và điện năng tiêu thụ.
ProMotion hỗ trợ bốn chế độ: 24 Hz cho nội dung tĩnh và video 24fps, 30 Hz cho video 30fps, 60 Hz cho điều hướng UI và 120 Hz cho cuộn và chơi game. Việc chuyển đổi giữa các chế độ diễn ra trong một khung duy nhất (8.3 ms) và người dùng không thể nhận thấy. Nhà phát triển có thể ảnh hưởng đến việc chọn tần số thông qua preferredFrameRateRange trong CADisplayLink, nhưng quyết định cuối cùng thuộc về hệ thống dựa trên phân tích nội dung.
Apple cung cấp API để làm việc với ProMotion từ iOS 15. CADisplayLink.preferredFrameRateRange cho phép đặt dải tần số ưa thích. UIScene.ActivationConditions có thể ảnh hưởng đến tần số khi chuyển đổi giữa các scene. Đối với kết xuất Metal, CAMetalLayer.displaySyncEnabled phải là true để đồng bộ hóa với ProMotion. Nếu ứng dụng không được tối ưu hóa cho 120fps, iOS tự động chuyển nó sang 60 Hz, có thể thấy trong Xcode ở phần GPU Report.
// iOS — yêu cầu 120fps cho chế độ chơi game
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)
Tối ưu hóa cho 120fps không chỉ là tăng tốc độ mã gấp đôi, mà còn là thiết kế lại kiến trúc kết xuất. Các thao tác hoàn thành trong 16.7 ms ở 60fps giờ phải hoàn thành trong 8.3 ms. Điều này ảnh hưởng đến tất cả các giai đoạn của pipeline: chuẩn bị CPU, kết xuất GPU và các cuộc gọi hệ thống.
Ở 120fps, số lượng draw calls mỗi khung phải bằng một nửa so với 60fps để duy trì cùng tải GPU. Nếu 400 draw call được chấp nhận ở 60fps, thì ở 120fps không được phép quá 200. Sử dụng texture atlases, hợp nhất lưới và GPU instancing để giảm các lệnh gọi vẽ. Trên Metal, sử dụng Indirect Command Buffers; trên Vulkan, sử dụng Secondary Command Buffers để ghi lệnh song song.
Shaders — một yếu tố quan trọng khác. Các shader pixel phức tạp với nhiều lần lấy mẫu texture và phép toán học có thể dễ dàng vượt quá ngân sách 8.3 ms. Sử dụng shader độ chính xác thấp (half thay vì float), giảm số lượng lệnh và mẫu texture. Trên GPU di động (Apple A17, Snapdragon 8 Gen 3), mỗi lần lấy mẫu texture mất 2–4 chu kỳ, và ở 120fps điều này có thể trở thành nút cổ chai.
Ở 120fps, luồng chính phải chuẩn bị một khung trong 4–5 ms để dành thời gian cho kết xuất GPU. Bất kỳ thao tác đồng bộ nào trên luồng chính — đọc cơ sở dữ liệu, phân tích JSON, tải hình ảnh — đều tạo ra giật. Di chuyển tất cả các thao tác nặng sang luồng nền, sử dụng API bất đồng bộ và pool luồng. Trên iOS, DispatchQueue với qualityOfService .userInteractive chỉ nên được dành cho mã kết xuất quan trọng.
| Thành phần | Ngân sách 120fps | Ngân sách 60fps |
|---|---|---|
| CPU (luồng chính) | 4 ms | 8 ms |
| Kết xuất GPU | 4 ms | 8 ms |
| Tổng hợp | 0.3 ms | 0.7 ms |
| Chờ VSync | 0–2 ms | 0–5 ms |
So sánh 120fps và 60fps không chỉ là tăng gấp đôi độ mượt. Sự khác biệt được cảm nhận khác nhau tùy thuộc vào loại nội dung. Đối với cuộn và hoạt ảnh UI, 120fps mang lại giao diện “phản hồi nhanh” hơn về mặt chủ quan. Đối với chơi game, lợi thế của 120fps thể hiện ở giảm nhòe chuyển động và theo dõi vật thể nhanh chính xác hơn.
Điện năng tiêu thụ — sự đánh đổi chính. 120fps tiêu thụ nhiều hơn 30–50% năng lượng so với 60fps ở cùng độ sáng màn hình. Điều này có nghĩa là trên pin 4000 mAh, một giờ chơi game ở 120fps làm xả pin nhanh hơn khoảng 25–30%. Màn hình LTPO giải quyết một phần vấn đề bằng cách giảm tần số trong cảnh tĩnh xuống 1 Hz, nhưng trong quá trình sử dụng tích cực (cuộn, chơi game), tần số vẫn ở mức tối đa.
Lựa chọn giữa 60fps và 120fps phụ thuộc vào ưu tiên của nhà phát triển. Đối với mạng xã hội, ứng dụng nhắn tin và tin tức, 120fps không mang lại lợi thế đáng kể — tương tác chính (đọc, nhập văn bản) không được hưởng lợi từ siêu mượt. Đối với game, bản đồ, trình chỉnh sửa đồ họa và ứng dụng có hoạt ảnh mạnh, 120fps trở thành lợi thế cạnh tranh và dấu hiệu chất lượng.
Kiểm tra 120fps đòi hỏi cách tiếp cận đặc biệt: các chỉ số 60fps tiêu chuẩn không phát hiện vấn đề frame pacing ở 120 Hz. Sử dụng camera tốc độ cao (120+ fps) để ghi lại hành vi thực tế của màn hình hoặc công cụ tích hợp của nền tảng — Xcode Metal Capture cho iOS và AGI (Android GPU Inspector) cho Android. Các công cụ này hiển thị thời gian chính xác của mỗi khung, bao gồm thời gian chờ VSync, và giúp xác định các vi giật.
Câu hỏi thường gặp
Không phải luôn. 120fps đòi hỏi gấp đôi năng lượng và tài nguyên tính toán. Đối với nội dung tĩnh và UI đơn giản, 60fps là đủ. Lợi thế của 120fps đáng chú ý trong cảnh động: cuộn, chơi game, hoạt ảnh chuyển tiếp.
Sử dụng Xcode Instruments (mẫu Core Animation) hoặc Android Studio Profiler. Trên iOS, kiểm tra CADisplayLink.timestamp — khoảng cách giữa các lệnh gọi phải khoảng 8.3 ms. Trên Android, bật Show refresh rate trong Tùy chọn nhà phát triển.
Màn hình cập nhật pixel thường xuyên gấp đôi, GPU thực hiện gấp đôi thao tác kết xuất và CPU xử lý gấp đôi khung hình. Mỗi thao tác đều tiêu thụ năng lượng. Màn hình LTPO giảm tần số ở trạng thái tĩnh, nhưng trong quá trình sử dụng tích cực, điện năng tiêu thụ tăng tỷ lệ với tần số.
Có. Từ Android 11 trở đi, hệ thống hỗ trợ các tần số quét khác nhau. Nhà phát triển có thể yêu cầu 120 Hz qua WindowManager.setPreferredRefreshRate. Tuy nhiên, không phải tất cả thiết bị đều duy trì ổn định 120fps — cần tối ưu hóa kết xuất GPU.
Trong bài kiểm tra mù, hầu hết người dùng nhận thấy sự khác biệt khi cuộn và hoạt ảnh. Tuy nhiên, đối với sử dụng hàng ngày (mạng xã hội, video, nhắn tin), sự khác biệt về mặt chủ quan là nhỏ. Sau khi quen với 120 Hz, quay lại 60 Hz có cảm giác chậm.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm