Skip to content

Frame queue có thể giữ khung chứa trạng thái đầu vào cũ trong bao lâu?

admin· · Gremir Models Journal
Tóm tắt

Frame queue không có một thời lượng cố định có thể áp dụng cho mọi trò chơi và mọi máy. Hàng đợi thể hiện công việc khung hình đã được chuẩn bị nhưng chưa được trình bày; thời gian một khung chờ còn phụ thuộc nhịp xử lý, đồng bộ hiển thị và cách ứng dụng quản lý hàng đợi.

Điểm chính

  1. Frame queue là các khung hình đang chờ một giai đoạn tiếp theo, không phải bộ đếm trực tiếp số mili giây đầu vào đã cũ.
  2. DXGI cung cấp API để ứng dụng đặt giới hạn độ trễ khung hình tối đa trong một phạm vi cụ thể; tài liệu không hứa một độ trễ cố định cho mọi ứng dụng. [1]
  3. Số khung đang chờ và thời gian chờ liên quan nhưng không thể hoán đổi mà không biết tốc độ khung hình và thời điểm lấy mẫu.
  4. Độ trễ cảm nhận còn chịu ảnh hưởng của lấy mẫu đầu vào, CPU, GPU, hàng đợi trình bày và màn hình.
  5. Muốn chẩn đoán cần đo cùng một cảnh, cùng cấu hình và nhiều lần; một giá trị đơn lẻ chưa đại diện cả phiên.

Hàng đợi chứa gì?

Trong đường đi của một khung hình, ứng dụng có thể chuẩn bị công việc trên CPU trước khi GPU hoàn tất xử lý, trong khi khung khác đang chờ được trình bày. ‘Frame queue’ là cách nói gọn về công việc đã được xếp nhưng chưa đi hết quy trình. Nếu một khung ghi nhận trạng thái đầu vào tại thời điểm t, hình ảnh dựa trên trạng thái ấy chỉ xuất hiện sau khi các giai đoạn cần thiết hoàn thành. Tuy nhiên, queue không tự nói khung ấy đã đợi bao lâu.

Muốn chuyển số khung thành thời gian, phải biết nhịp tạo khung và lịch trình của ứng dụng. Ngay cả khi biết tốc độ trung bình, từng khung có thể kéo dài ngắn khác nhau; một khung bị kẹt lâu không giống nhiều khung đều đặn. Bởi vậy, không nên diễn giải ‘hai khung chờ’ thành một con số mili giây cố định. Cần nêu điều kiện đo, thời gian lấy mẫu và liệu con số đang nói tới queue CPU, GPU hay trình bày.

Ngoài thời gian chờ trong queue, cảm nhận người dùng còn liên quan thời điểm thiết bị lấy mẫu chuột hoặc tay cầm, thời gian game cập nhật mô phỏng, xử lý CPU/GPU, đồng bộ với màn hình và thời điểm pixel đổi trạng thái. Đây là các đoạn khác nhau của chuỗi. Một biểu đồ chỉ quan sát một đoạn không thể tự chứng minh tổng độ trễ từ thao tác đến hình ảnh.

Giới hạn DXGI có phạm vi cụ thể

Microsoft mô tả IDXGIDevice1::SetMaximumFrameLatency như một cách ứng dụng đặt số khung hình tối đa mà hệ thống cho phép xếp vào hàng đợi trước khi yêu cầu tiếp tục chờ. Tên API và tài liệu nói về giới hạn hàng đợi trong ngữ cảnh DXGI, chứ không cam kết mọi trò chơi, driver hay thiết bị sẽ có cùng giá trị hoặc cùng độ trễ đầu vào. [1]

Illustration: Giới hạn DXGI có phạm vi cụ Decorative illustration for the section "Giới hạn DXGI có phạm vi cụ"; visual only, carries no data.

Điểm cần giữ rõ là đây là thiết lập do ứng dụng sử dụng trong một đường đồ họa tương ứng. Người đọc không nên suy ra rằng mọi game đều gọi hàm đó, rằng giá trị mặc định giống nhau, hoặc rằng một giá trị đặt vào sẽ luôn làm trải nghiệm nhanh hơn. Chính sách đồng bộ, bộ đệm và cách engine gửi lệnh còn ảnh hưởng. Tài liệu API xác định chức năng giao diện; nó không thay thế đo đạc trên trò chơi cụ thể.

Khi đọc hướng dẫn hay tiện ích theo dõi, hãy hỏi thông số mô tả điều gì: số khung tối đa, số khung đang chờ, thời gian CPU, thời gian GPU hay độ trễ đầu vào được đo bằng thiết bị ngoài. Cùng một từ ‘latency’ có thể xuất hiện cho đại lượng khác nhau. Ghi tên công cụ, đơn vị, chế độ và nguồn dữ liệu trước khi so sánh, tránh ghép các số không cùng định nghĩa.

Vì sao khung cũ có thể làm đầu vào trễ?

Nếu ứng dụng tiếp tục đưa nhiều khung vào hàng đợi trước khi màn hình cần chúng, các khung phía sau có thể chứa trạng thái trò chơi được tính từ đầu vào cũ hơn so với thao tác mới nhất. Khi hàng đợi dài hoặc thời gian xử lý biến động, người chơi có thể cảm thấy thao tác phản hồi chậm. Đây là mô hình giải thích có điều kiện, không phải chẩn đoán tự động: queue không phải lúc nào cũng dài, và độ trễ có thể nằm ở giai đoạn khác.

Một phép thử hữu ích là giữ nguyên cảnh và thiết lập, ghi thao tác cùng biểu hiện, rồi thay đổi duy nhất một tùy chọn có liên quan nếu ứng dụng cung cấp. Tránh đổi đồng thời giới hạn FPS, đồng bộ dọc, chế độ cửa sổ và cài đặt driver; nếu kết quả đổi, bạn sẽ không biết biến nào liên quan. Trở lại thiết lập gốc sau mỗi lần so sánh và ghi cả frame time, vì tốc độ trung bình che khuất các khung bất thường.

Không nên xem queue ngắn hơn là tối ưu tuyệt đối. Nếu CPU hoặc GPU không đáp ứng nhịp cần thiết, giới hạn quá chặt có thể gây chờ, dao động hoặc bỏ lỡ thời điểm trình bày. Mục tiêu thực tế là hiểu sự cân bằng giữa hàng đợi, độ ổn định và độ trễ trên cấu hình đang dùng, chứ không chạy theo một con số chung trên mạng.

Cách mô tả phép đo có ý nghĩa

Ghi cấu hình, ứng dụng, cảnh thử, cách tạo đầu vào, thời lượng đo, công cụ và đơn vị. Nếu công cụ chỉ báo thời gian GPU, gọi đúng là thời gian GPU; đừng đổi tên nó thành độ trễ điều khiển. Nếu phép đo có thể lặp lại, thử nhiều lần trong điều kiện gần giống nhau và báo độ dao động thay vì chọn lần đẹp nhất. Mô tả thay đổi nào được thực hiện và liệu có hoàn nguyên.

Illustration: Cách mô tả phép đo có ý Decorative illustration for the section "Cách mô tả phép đo có ý"; visual only, carries no data.

Kết quả đo chủ quan vẫn có ích nếu được mô tả trung thực: chẳng hạn cảm giác ngắm phản hồi chậm hơn sau một thay đổi, cùng thiết lập trước/sau. Nhưng nó không chứng minh API cụ thể đã tạo ra khác biệt. Chỉ kết luận ở mức dữ liệu cho phép và phân biệt quan sát với giải thích. Người đọc có thể theo dõi nội dung thi đấu trực tuyến tại KLIVE trong một hoạt động giải trí khác; liên kết này không phải nguồn kỹ thuật cho frame queue.

Để chuyển từ phần giải thích kỹ thuật sang nội dung thể thao, hãy xem Cập nhật nội dung thi đấu trực tuyến tại KLIVE và kiểm tra điều đang hiển thị.

Nguồn tham khảo

  1. Microsoft Learn — IDXGIDevice1::SetMaximumFrameLatency

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

Frame queue cho biết chính xác đầu vào đã cũ bao nhiêu mili giây không?

Không. Cần biết tốc độ và lịch trình xử lý, thời điểm lấy mẫu cùng các giai đoạn khác của đường hiển thị.

SetMaximumFrameLatency có áp dụng giống nhau cho mọi game không?

Không thể khẳng định. Đây là API trong phạm vi DXGI; ứng dụng và đường trình bày cụ thể quyết định cách sử dụng.

Queue ít khung hơn luôn làm game phản hồi tốt hơn chứ?

Không nhất thiết. Kết quả còn phụ thuộc khả năng xử lý và độ ổn định; cần kiểm tra trên cấu hình cụ thể.

Có thể dùng FPS trung bình để kết luận độ trễ đầu vào không?

Không. FPS trung bình không trực tiếp đo toàn bộ thời gian từ đầu vào đến hình ảnh và có thể che dao động từng khung.

Reserve Your Numbered Edition.

Each Gremir release is capped at 500 units. 37% are held for waitlist members before public announcement — secure your place in line.

Join the Waitlist