Skip to content
By admin

Giới hạn Maximum Frame Latency của DXGI kiểm soát điều gì?

Tóm tắt

Trong tài liệu đồ họa của Microsoft có một thiết lập tên là Maximum Frame Latency, cho phép giới hạn số khung hình được xếp hàng chờ ở cấp thiết bị. Hiểu đúng phạm vi của con số này giúp người dùng không nhầm nó với một cam kết độ trễ cố định cho mọi game và mọi engine.

Điểm chính

  1. Maximum Frame Latency giới hạn số khung có thể chờ trong hàng đợi ở cấp thiết bị DXGI, không phải độ trễ tuyệt đối của toàn bộ chuỗi hiển thị.
  2. Thiết lập này là một phần trong hợp đồng giữa ứng dụng và thiết bị, mỗi bên vẫn có hành vi và giới hạn riêng.
  3. Cùng một giá trị giới hạn có thể cho cảm nhận khác nhau tùy game, engine và tốc độ khung hình thực tế.
  4. Muốn đánh giá độ trễ phải đo cả chuỗi từ đầu vào tới hiển thị, không suy ra từ một thiết lập API duy nhất.
  5. Mọi trích dẫn về API cần dẫn về đúng trang tài liệu và nêu rõ phiên bản đang đọc.

Thiết lập này nằm ở đâu trong chuỗi hiển thị

Chuỗi hiển thị của một game gồm nhiều khâu: xử lý đầu vào, mô phỏng và vẽ của engine, hàng đợi ở cấp thiết bị, rồi mới tới trình điều khiển và màn hình. Thiết lập giới hạn khung chờ của DXGI tác động vào một khâu trong số đó: số khung mà ứng dụng được phép xếp hàng ở cấp thiết bị trước khi khung cũ được trình chiếu. [1]

Illustration: Thiết lập này nằm ở đâu trong chuỗi Decorative illustration for the section "Thiết lập này nằm ở đâu trong chuỗi"; visual only, carries no data.

Vì chỉ kiểm soát một khâu, thiết lập này không thể một mình quyết định độ trễ mà người chơi cảm nhận được. Một game có khâu mô phỏng nặng vẫn trễ dù hàng đợi đã gọn, và một màn hình quét chậm vẫn cộng thêm độ trễ của riêng nó. Đọc đúng vị trí của thiết lập trong chuỗi giúp tránh kỳ vọng rằng chỉnh một con số là giải quyết được mọi độ trễ.

Giới hạn hàng đợi khác với cam kết độ trễ

Giới hạn hàng đợi là một ràng buộc về số lượng: tối đa bao nhiêu khung được phép chờ. Cam kết độ trễ là một đảm bảo về thời gian: mỗi khung mất bao lâu từ đầu vào tới hiển thị. Hai khái niệm này liên quan nhưng không đồng nhất, vì thời gian chờ thực tế còn phụ thuộc vào tốc độ khung hình và hành vi của từng khâu trong chuỗi.

Ví dụ cùng một giới hạn hàng đợi, game chạy khung hình cao sẽ cho thời gian chờ ngắn hơn game chạy khung hình thấp, dù con số giới hạn không đổi. Vì vậy không thể đọc giá trị giới hạn rồi tuyên bố mọi game đều có cùng một mức độ trễ. Thiết lập API đặt ra khuôn khổ, còn độ trễ thực tế do toàn bộ hệ thống cùng tạo ra.

Cách thử nghiệm có trách nhiệm

Muốn biết thiết lập này ảnh hưởng thế nào trên máy của mình, hãy thay đổi một giá trị duy nhất rồi đo lại cùng một đoạn game lặp lại được, ghi kèm tốc độ khung hình và cảm nhận độ trễ. So sánh trước và sau trên cùng điều kiện mới cho kết luận đáng tin, thay vì đổi nhiều thứ cùng lúc rồi đoán nguyên nhân.

Illustration: Cách thử nghiệm có trách Decorative illustration for the section "Cách thử nghiệm có trách"; visual only, carries no data.

Trong báo cáo kết quả, cần nêu rõ đây là quan sát trên một cấu hình và một game cụ thể, không suy rộng thành quy luật cho mọi engine. Sau khi đã hiểu đúng phạm vi của thiết lập API, nếu muốn nghỉ giữa giờ bằng nội dung thể thao giải trí, bạn có thể Điểm đến cho những trận cầu đáng chú ý: KLIVE; đây là trang nội dung thể thao trực tiếp, không phải tài liệu kỹ thuật về API đồ họa.

Đọc tài liệu API mà không suy rộng

Tài liệu API mô tả hợp đồng giữa ứng dụng và thiết bị: hàm này nhận tham số nào, giới hạn ra sao, hành vi kỳ vọng thế nào. Tài liệu không và không thể hứa hẹn trải nghiệm giống nhau trên mọi phần cứng, mọi trình điều khiển và mọi game. Người đọc cần giữ ranh giới này mỗi khi trích dẫn.

Thói quen tốt là khi dẫn tài liệu, nêu tên hàm, trang tài liệu và thời điểm tra cứu, đồng thời nói rõ phần nào là hành vi được tài liệu đảm bảo, phần nào là quan sát thực tế trên máy của mình. Cách viết này vừa tôn trọng nguồn vừa bảo vệ người đọc khỏi kỳ vọng sai.

Nguồn tham khảo

  1. Microsoft Learn — IDXGIDevice1::SetMaximumFrameLatency

Câu hỏi thường gặp

Maximum Frame Latency có phải tổng độ trễ của game không?

Không. Nó chỉ giới hạn số khung được xếp hàng chờ ở cấp thiết bị DXGI, là một khâu trong cả chuỗi hiển thị. Tổng độ trễ còn gồm xử lý của engine, trình điều khiển và màn hình, vì vậy không thể đồng nhất hai khái niệm.

Chỉnh con số này thấp xuống có chắc game mượt hơn không?

Chưa chắc. Hàng đợi gọn hơn có thể giảm một phần thời gian chờ, nhưng nếu nghẽn nằm ở khâu mô phỏng, vẽ hay màn hình thì cảm nhận cải thiện sẽ rất hạn chế. Hãy thử một thay đổi duy nhất và đo lại trên cùng đoạn game để có kết luận cho máy của mình.

Vì sao cùng một giá trị mà mỗi game phản ứng khác nhau?

Vì mỗi game và engine có tải xử lý, tốc độ khung hình và cách dùng hàng đợi khác nhau. Giới hạn API chỉ đặt khuôn khổ chung, còn hành vi thực tế do từng phần mềm và phần cứng cụ thể quyết định.

Khi trích dẫn tài liệu API cần ghi gì?

Ghi tên hàm hoặc thiết lập, đường dẫn trang tài liệu và thời điểm tra cứu. Đồng thời phân biệt rõ đâu là hành vi được tài liệu mô tả, đâu là quan sát thực tế của bạn để người đọc không nhầm quan sát cá nhân thành đảm bảo của API.