Một lần nhấn có thể bị chờ qua ranh giới hai khung hình như thế nào?
Thời điểm một lần nhấn xảy ra so với lúc ứng dụng đọc đầu vào có thể quyết định nó được xử lý trong khung hiện tại hay phải đợi nhịp kế tiếp. Đây là mô hình giải thích đơn giản về thứ tự sự kiện, không phải con số độ trễ áp dụng cho mọi thiết bị.
Điểm chính
- Một thao tác vừa sau mốc lấy mẫu có thể phải chờ lần đọc tiếp theo trong mô hình khung hình.
- Khoảng chờ phụ thuộc lịch lấy mẫu và tải thực tế; không thể quy đổi thành độ trễ toàn hệ thống chỉ từ chu kỳ khung.
- DXGI cho phép đặt số khung hình tối đa có thể xếp hàng trong một ngữ cảnh API cụ thể. [1]
- NVIDIA Reflex SDK liên quan tới tích hợp và công cụ giảm/đo độ trễ trong ứng dụng hỗ trợ, không bảo đảm cùng kết quả mọi nơi. [2]
Một mốc lấy mẫu tạo ra hai trường hợp
Hãy tưởng tượng ứng dụng đọc trạng thái nút ở một thời điểm nhất định trong chu kỳ khung hình. Nếu người dùng nhấn ngay trước lần đọc, ứng dụng có thể quan sát trạng thái mới trong lượt đó. Nếu thao tác đến ngay sau lần đọc, ứng dụng có thể chỉ thấy nó ở lần kế tiếp. Minh họa này cho thấy vì sao hai thao tác gần nhau về thời gian vẫn có thể đi vào các lượt xử lý khác nhau.
Sơ đồ tư duy có thể viết bằng các mốc: thao tác đầu vào → lần lấy mẫu → xử lý ứng dụng → tạo khung → trình bày. Mỗi mũi tên có thể có thời gian riêng và không nhất thiết cố định. Chu kỳ khung hình chỉ mô tả nhịp của một phần trong đường đi; nó không nói chính xác lúc pixel thay đổi, cũng không tính mọi chờ đợi của thiết bị và phần mềm.
Hàng đợi có thể thay đổi thời điểm trình bày
Sau khi ứng dụng xử lý đầu vào, khung hình còn phải đi qua các bước tạo và trình bày. Nếu có nhiều khung được xếp hàng, khung mới có thể chờ phía sau khung đã chuẩn bị. Microsoft mô tả SetMaximumFrameLatency như cách đặt giới hạn số khung hình có thể xếp hàng trong DXGI. [1] Thiết lập API này giúp điều chỉnh một phần đường trình bày trong phạm vi áp dụng; nó không tự đo thời gian thao tác đến màn hình và không phải cam kết rằng toàn hệ thống chỉ có một khung chờ.
Việc hàng đợi thực tế vận hành ra sao còn tùy ứng dụng, API, driver, hệ điều hành và cấu hình đồng bộ. Không nên thấy một giá trị giới hạn rồi suy ra độ trễ cố định bằng đúng từng chu kỳ khung. Nếu so sánh hai cấu hình, ghi thiết lập cụ thể, chế độ hiển thị và cách công cụ thu thập dữ liệu.
Đo lường cần vượt ra ngoài phép minh họa
NVIDIA Reflex SDK trình bày công cụ và phương thức tích hợp liên quan đến độ trễ trong những ứng dụng triển khai phù hợp. [2] Điều đó không có nghĩa mọi trò chơi hoặc mọi hệ thống tự động cung cấp phép đo tương đương; cần kiểm tra ứng dụng có hỗ trợ, phiên bản SDK và điểm đo mà công cụ báo cáo. Khi trích kết quả, nêu rõ liệu đó là thời gian một đoạn hay phép đo đầu-cuối.
Một phép thử tốt giữ cảnh, build, thiết lập khung hình, thiết bị và trình điều khiển ổn định; thực hiện nhiều lượt theo quy trình giống nhau và lưu dữ liệu từng lượt. Nếu dùng camera hoặc cảm biến ngoài, mô tả cách đồng bộ và vị trí đo. Tránh suy ra độ trễ từ cảm giác chủ quan hoặc lấy một chu kỳ danh nghĩa làm đại diện cho toàn bộ đường đi.
Diễn giải đúng giới hạn của mô hình
Mô hình “trước mốc / sau mốc” hữu ích để giải thích khả năng chờ qua ranh giới khung hình, nhưng thực tế có thể có nhiều giai đoạn lấy mẫu, luồng xử lý và hàng đợi. Tốc độ khung hình thay đổi, lịch trình hệ điều hành và các cơ chế đồng bộ cũng ảnh hưởng thời điểm sự kiện. Vì vậy, hãy gọi đây là minh họa khái niệm, không phải sơ đồ đầy đủ của mọi engine.
Khi viết kết luận, tách điều quan sát khỏi điều suy luận: “thao tác được ghi nhận sau mốc đọc trong mô hình” khác với “thiết bị có thêm một khung độ trễ”. Chỉ dùng kết luận thứ hai nếu phép đo và dữ liệu hỗ trợ. Độc giả cũng có thể Xem bình luận viên thể thao Việt Nam cùng KLIVE, nhưng liên kết này không phải nguồn xác nhận đặc tính đầu vào hay độ trễ.
Nguồn tham khảo
Câu hỏi thường gặp
Một lần nhấn sau mốc lấy mẫu luôn mất đúng một khung hình?
Không thể khẳng định luôn như vậy. Đây là mô hình giản lược; lịch xử lý và cách ứng dụng lấy mẫu có thể khác.
Giới hạn hàng đợi DXGI có phải phép đo độ trễ đầu-cuối?
Không. Nó đặt giới hạn khung xếp hàng trong phạm vi API, không đo toàn bộ từ thao tác tới màn hình.
Có thể tính độ trễ từ FPS danh nghĩa không?
Không. FPS chỉ cho biết nhịp khung danh nghĩa, còn đường đi đầu-cuối gồm nhiều giai đoạn và thời gian chờ.
NVIDIA Reflex có hoạt động giống nhau trong mọi ứng dụng?
Không. Cần ứng dụng triển khai phù hợp và kiểm tra điểm đo, phiên bản cùng môi trường cụ thể.