Tắt đồng bộ hóa theo chiều dọc cho glxgears


85

Đôi khi bạn cần kiểm tra xem tính năng tăng tốc 3D của Linux có thực sự hoạt động hay không (bên cạnh glxinfođầu ra). Điều này có thể được thực hiện nhanh chóng bằng glxgearscông cụ. Tuy nhiên, FPS thường bị giới hạn ở tốc độ làm tươi màn hình dọc (tức là 60 khung hình / giây). Vì vậy, công cụ này ít nhiều trở nên vô dụng vì ngay cả một phần mềm kết xuất cũng có thể tạo ra 60FPS glxgears một cách dễ dàng trên các CPU hiện đại.

Tôi thấy khá khó để có được một giải pháp nhanh chóng và dễ dàng cho việc này, tôi tự trả lời câu hỏi của mình. Hy vọng rằng nó tiết kiệm thời gian của bạn.

Câu trả lời:


119

Biến vblank_modemôi trường thực hiện thủ thuật. Sau đó, bạn sẽ nhận được vài trăm FPS trên phần cứng hiện đại. Và bây giờ bạn có thể so sánh kết quả với những người khác.

$>   vblank_mode=0 glxgears

3
Chính xác những gì tôi đang tìm kiếm. Tôi nhận được 59,984 FPS, đó là tốc độ làm mới. Cài đặt vblank_mode=0Tôi hiện nhận được 1375,257 FPS trên trình điều khiển video Intel i965 cũ chạy OpenBSD 5.6.
Clint Pachl

33
Có lẽ đáng nói rằng điều này chỉ làm việc cho trình điều khiển video Mesa mã nguồn mở
ali_m

1
Công trình cho tôi sử dụng Radeon / Intel lai với Mesa
Đánh K Cowan

loại công trình nhưng đóng băng toàn bộ máy tính, đòi hỏi riêng biệt TTY pkill trên máy tính của tôi (vòm)
phil294

73

Nếu bạn đang sử dụng trình điều khiển mã nguồn đóng NVIDIA, bạn có thể thay đổi chế độ đồng bộ dọc một cách nhanh chóng bằng cách sử dụng __GL_SYNC_TO_VBLANKbiến môi trường :

~$ __GL_SYNC_TO_VBLANK=1 glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
299 frames in 5.0 seconds = 59.631 FPS

~$ __GL_SYNC_TO_VBLANK=0 glxgears
123259 frames in 5.0 seconds = 24651.678 FPS

Điều này phù hợp với tôi trên Ubuntu 14.04 sử dụng trình điều khiển NVIDIA 346.46.


Nó cũng hoạt động trên trình điều khiển NVIDIA Ubuntu 16.04, 387.26.
Alejo Bernardin

Tôi dường như nhận được kết quả tương tự trên tất cả các máy của tôi. Tất cả đều trên 20 nghìn FPS một chút. Đây có phải là giới hạn của thẻ Nvidia không?
Aaron Franke

Tôi nhận được 47 nghìn FPS trên GTX1050
drescherjm

Nó hoạt động với 13k FPS cho GTX 1050 Ti trong Ubuntu 18.04.
fegemo

Cũng hoạt động trên Jetson Nano. Tôi nhận được khoảng 2650 FPS.
robotrovsky

28

Đối với đồ họa Intel và trình điều khiển đồ họa nguồn mở AMD / ATI

Tìm phần "Thiết bị" trong /etc/X11/xorg.confđó có một trong các lệnh sau:

  • Driver "intel"
  • Driver "radeon"
  • Driver "fglrx"

Và thêm dòng sau vào phần đó:

Option     "SwapbuffersWait"       "false"

Và chạy ứng dụng của bạn với vblank_modebiến môi trường được đặt thành 0:

$ vblank_mode=0 glxgears

Đối với đồ họa Nvidia với trình điều khiển Nvidia độc quyền

$ echo "0/SyncToVBlank=0" >> ~/.nvidia-settings-rc

Thay đổi tương tự có thể được thực hiện trong nvidia-settingsGUI bằng cách bỏ chọn tùy chọn tại X Screen 0 / OpenGL Settings / Sync to VBlank. Hoặc, nếu bạn chỉ muốn kiểm tra cài đặt mà không sửa đổi ~/.nvidia-settings-rctệp của mình, bạn có thể thực hiện một số việc như:

$ nvidia-settings --load-config-only --assign="SyncToVBlank=0"  # disable vertical sync
$ glxgears  # test it out
$ nvidia-settings --load-config-only  # restore your original vertical sync setting

1
Đối với Nvidia, bạn có thể chạy nvidia-settings --load-config-only --assign="SyncToVBlank=0"để chỉ thay đổi cài đặt của màn hình X (và tránh sửa đổi tệp cấu hình hoặc chạy GUI). Sau khi chạy, glxgearsbạn có thể chạy nvidia-settings --load-config-onlyđể khôi phục cài đặt cấu hình - điều mà bạn có thể muốn thực hiện vì đó là cài đặt liên tục cho màn hình X đang chạy (tức là không chỉ cho trình bao).
Michael Krebs

13

Đặt tất cả các câu trả lời khác lại với nhau, đây là một dòng lệnh sẽ hoạt động:

env vblank_mode=0 __GL_SYNC_TO_VBLANK=0 glxgears

Điều này có lợi thế là hoạt động cho cả trình điều khiển Mesa và NVidia và không yêu cầu bất kỳ thay đổi nào đối với tệp cấu hình.


6

Vô hiệu hóa hộp kiểm Đồng bộ hóa với VBlank trong nvidia-settings (tab Cài đặt OpenGL) thực hiện một mẹo nhỏ đối với tôi.


5

Tôi đã tìm thấy một giải pháp hoạt động trong thẻ intel và thẻ nvidia bằng cách sử dụng Bumblebee.

> export vblank_mode = 0
glxgears
...
optirun glxgears
...
export vblank_mode = 1


2

Đối với trình điều khiển intel, cũng có phương pháp này

Tắt đồng bộ hóa theo chiều dọc (VSYNC)

Trình điều khiển intel sử dụng Bộ đệm ba để đồng bộ hóa theo chiều dọc, điều này cho phép hiệu suất đầy đủ và tránh hiện tượng xé hình. Để tắt đồng bộ hóa dọc (ví dụ: cho điểm chuẩn), hãy sử dụng .drirc này trong thư mục chính của bạn:

<device screen="0" driver="dri2">
    <application name="Default">
        <option name="vblank_mode" value="0"/>
    </application>
</device>

3
Đây là một câu trả lời chỉ có liên kết. Liên kết đến một số tài liệu là tốt và tốt, nhưng không đủ để tự tạo thành câu trả lời (liên kết cũng chết, các trang được lưu trữ bên ngoài thay đổi, v.v.). Bạn có thể vui lòng tóm tắt những điểm chính trong câu trả lời của bạn?
ali_m
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.