Tóm tắt

Không có một câu trả lời chung rằng mọi ứng dụng luôn lấy mẫu đầu vào trước hoặc sau khi bắt đầu dựng khung. Vị trí đọc dữ liệu trong vòng lặp quyết định thao tác vừa phát sinh có cơ hội tác động đến khung đang chuẩn bị hay chỉ được xử lý ở lượt kế tiếp. Muốn hiểu độ trễ, cần theo dõi thứ tự các bước trong chính ứng dụng thay vì suy ra từ một sơ đồ đơn giản hoặc một tên công nghệ.

Điểm chính

  1. Thời điểm ứng dụng đọc thiết bị đầu vào có thể làm thay đổi khung hình nào tiếp nhận thao tác; cách tổ chức vòng lặp tùy từng trò chơi.
  2. NVIDIA Reflex SDK mô tả công cụ và cơ chế tích hợp dành cho nhà phát triển, không chứng minh mọi ứng dụng đều dùng cùng lịch lấy mẫu. [1]
  3. DXGI flip model có các cơ chế giảm độ trễ hàng đợi trình bày; chúng không quy định toàn bộ logic đọc đầu vào của trò chơi. [2]
  4. FPS, thời điểm lấy mẫu, thời gian CPU/GPU và chu kỳ màn hình là các đại lượng liên quan nhưng không thể thay thế lẫn nhau.
  5. Khi thử nghiệm, chỉ đổi một điều kiện mỗi lần và ghi rõ phiên bản ứng dụng, thiết lập, thiết bị cùng phương pháp đo.

Vòng lặp ứng dụng gồm những thời điểm nào?

Một trò chơi thường lặp lại việc nhận dữ liệu đầu vào, cập nhật trạng thái mô phỏng, chuẩn bị lệnh dựng hình, gửi công việc đến GPU và đưa khung hình tới hệ thống trình bày. Sơ đồ này chỉ là mô tả khái quát: ứng dụng có thể chia công việc giữa nhiều luồng, dùng hàng đợi sự kiện hoặc cập nhật một phần trạng thái ở những thời điểm khác nhau. Vì vậy, cụm từ ‘bắt đầu dựng khung’ cũng cần được hiểu rõ: đó có thể là lúc CPU bắt đầu chuẩn bị khung, lúc gửi lệnh, hay lúc GPU bắt đầu thực thi.

Giả sử ứng dụng đọc chuột ở đầu lượt, sau đó cập nhật góc nhìn và dựng khung. Một thao tác có trước lần đọc đó có thể được dùng trong lượt hiện tại, còn thao tác xảy ra ngay sau lần đọc có thể đợi lượt tiếp theo. Tuy nhiên, kết quả thực tế còn phụ thuộc vào thiết bị, cách hệ điều hành chuyển sự kiện và lịch chạy của các luồng. Không nên biến ví dụ thành cam kết rằng thao tác luôn bị trễ đúng một khung.

Việc lấy mẫu ‘sau khi bắt đầu dựng’ cũng không tự động có nghĩa là hình ảnh hiện tại sẽ thay đổi giữa chừng. Nếu các lệnh hoặc trạng thái liên quan đã được chốt để gửi tới GPU, ứng dụng có thể chỉ áp dụng giá trị mới ở một bước sau. Cách an toàn là phân biệt lúc dữ liệu được đọc với lúc dữ liệu được tiêu thụ trong mô phỏng và dựng hình. [1]

Hàng đợi trình bày giải quyết phần nào?

Ngay cả khi ứng dụng đọc đầu vào sớm, khung hình vẫn có thể chờ trước khi được hiển thị. Tài liệu Microsoft về DXGI 1.3 swap chain trình bày các phương pháp giúp ứng dụng quản lý độ trễ và hàng đợi khung hình trong mô hình trình bày phù hợp. Điều này giúp hiểu rằng thời điểm gửi khung đến hệ thống trình bày là một phần riêng của pipeline; nó không thay thế logic lấy mẫu do trò chơi quyết định. [2]

Illustration: Hàng đợi trình bày giải quyết phần Decorative illustration for the section "Hàng đợi trình bày giải quyết phần"; visual only, carries no data.

Hãy hình dung hai mốc khác nhau: ứng dụng lấy dữ liệu để cập nhật trạng thái, rồi sau đó gửi khung đã dựng vào hàng đợi trình bày. Quản lý hàng đợi có thể giảm lượng khung cũ đang chờ, nhưng không thể làm cho một thao tác chưa được ứng dụng đọc tự xuất hiện trong khung đã chuẩn bị. Ngược lại, đọc đầu vào thường xuyên cũng chưa đủ nếu khâu dựng hoặc trình bày bị chặn lâu.

Tài liệu API mô tả khả năng và cách dùng trong phạm vi nền tảng. Nó không cho biết một trò chơi thương mại cụ thể chọn cấu trúc vòng lặp nào, có bật cơ chế nào hay tích hợp SDK ra sao. Muốn kết luận về một trò chơi, cần tài liệu của nhà phát triển, công cụ ghi dấu phù hợp hoặc phép đo có thể tái lập; không thể gán tính năng chỉ từ tên API.

Đọc độ trễ mà không trộn các đại lượng

Độ trễ đầu vào-hiển thị thường bao gồm nhiều đoạn: thiết bị ghi nhận thao tác, hệ điều hành chuyển dữ liệu, ứng dụng lấy mẫu, CPU cập nhật, GPU dựng hình, hàng đợi trình bày và màn hình phát sáng. Một phép đo chỉ bắt đầu ở thời điểm ứng dụng đọc dữ liệu không bao quát toàn bộ chuỗi. Tương tự, thời gian khung hình hoặc FPS không trực tiếp cho biết thao tác cụ thể đã được đưa vào khung nào.

NVIDIA Reflex SDK hướng tới nhà phát triển và cung cấp cách tích hợp, đánh dấu hoặc phân tích những mốc liên quan trong pipeline. Các marker hữu ích khi có thể gắn chúng với câu hỏi cụ thể, chẳng hạn lúc nào trò chơi bắt đầu xử lý đầu vào hoặc gửi công việc. Nhưng marker phần mềm không nhất thiết đo được mọi đoạn từ công tắc chuột tới điểm ảnh, và kết quả phụ thuộc cách đặt mốc cùng công cụ đo. [1]

Để so sánh hai cấu hình, giữ nguyên cảnh thử, tốc độ khung hình mục tiêu, độ phân giải, thiết bị, tần số màn hình và các ứng dụng nền. Thực hiện nhiều lượt, ghi cả độ phân tán thay vì chỉ chọn con số thấp nhất. Nếu đồng thời đổi thiết lập trò chơi, driver và chế độ hiển thị, sẽ khó biết yếu tố nào tạo ra khác biệt. Ghi lại phiên bản và điều kiện để lần khác có thể kiểm tra lại.

Quy trình kiểm tra thực tế

Trước hết, xác định câu hỏi: bạn muốn biết thao tác được lấy mẫu ở đâu, khung hình chờ bao lâu, hay tổng thời gian tới màn hình? Chọn công cụ theo đúng phạm vi đó. Tài liệu SDK là điểm bắt đầu để hiểu cơ chế tích hợp của NVIDIA; tài liệu DXGI giúp đọc các lựa chọn trình bày của Windows. Hai nguồn không thay thế hướng dẫn của từng trò chơi. [2]

Illustration: Quy trình kiểm tra thực Decorative illustration for the section "Quy trình kiểm tra thực"; visual only, carries no data.

Tiếp theo, kiểm tra cài đặt và ghi chú phát hành của trò chơi để biết tùy chọn nào thực sự có mặt. Không suy ra trò chơi hỗ trợ Reflex chỉ vì máy có GPU NVIDIA, cũng không suy ra dùng swap chain nhất định chỉ từ việc chạy trên Windows. Nếu trò chơi không cung cấp thông tin kỹ thuật, hãy mô tả quan sát của mình dưới dạng kết quả trên cấu hình đã thử, tránh khẳng định cách triển khai nội bộ.

Cuối cùng, tách thay đổi cảm nhận khỏi kết quả đo. Thử nghiệm có thể cho thấy phản hồi khác nhau, nhưng cần lặp lại trong điều kiện giống nhau và xác nhận thiết bị đo. Nếu dùng công cụ của ứng dụng, giải thích rõ mốc bắt đầu-kết thúc. Nếu dùng camera tốc độ cao hoặc thiết bị đo ngoài, nêu cách đồng bộ và giới hạn của phương pháp. Một kết luận thận trọng thường hữu ích hơn lời khẳng định phổ quát về mọi game.

Nếu muốn xem nội dung thể thao và lịch thi đấu được giới thiệu trên KLIVE, bạn có thể Tìm các giải đấu thể thao trực tiếp trên KLIVE. Trang này là điểm đến nội dung thể thao; liên kết không phải chứng cứ về cách trò chơi lấy mẫu đầu vào hay khả năng hỗ trợ một API.

Nguồn tham khảo

  1. NVIDIA — Reflex SDK
  2. Microsoft Learn — Reduce latency with DXGI 1.3 swap chains

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

Lấy mẫu trước khi dựng luôn giảm một khung hình độ trễ phải không?

Không nhất thiết. Kết quả phụ thuộc vị trí đọc dữ liệu, lịch chạy, cách trạng thái được dùng và hàng đợi của các bước sau. Sơ đồ khái quát không đủ để gán một mức trễ cố định.

DXGI quyết định thời điểm trò chơi đọc chuột chứ?

Không. DXGI có thể cung cấp lựa chọn liên quan đến trình bày và quản lý hàng đợi, còn logic đọc đầu vào thuộc về ứng dụng và cách ứng dụng tích hợp các thành phần.

NVIDIA Reflex có hoạt động trong mọi trò chơi?

Không thể suy ra như vậy. Reflex cần tích hợp phù hợp ở cấp trò chơi. Hãy kiểm tra tài liệu nhà phát triển và tùy chọn có thật trong phiên bản đang dùng.

FPS cao có chứng minh thao tác được lấy mẫu sớm?

Không. FPS mô tả tốc độ khung hình, không trực tiếp chỉ ra thời điểm lấy mẫu hay tổng thời gian từ thao tác tới hình ảnh.