Cách bật tăng tốc phần cứng trong trình duyệt Linux

Cập nhật lần cuối: 28/01/2026
tác giả: Isaac
  • Gia tốc bằng phần cứng en Linux Điều đó phụ thuộc vào VA-API. trình điều khiển Cấu hình trình duyệt và các biến môi trường phù hợp và chính xác.
  • Việc cài đặt đúng trình điều khiển VA-API (i965/iHD) là rất quan trọng. Intel(Mesa trên AMD/Nouveau) và kiểm tra bằng vaifo xem GPU thực sự hỗ trợ những codec nào.
  • Firefox và các trình duyệt dựa trên Chromium yêu cầu bật các cờ cụ thể và, trong nhiều trường hợp, khởi chạy trình duyệt với các tham số bổ sung để sử dụng VA-API.
  • Việc buộc sử dụng H.264 bằng các tiện ích mở rộng như h264ify và kiểm tra mức sử dụng GPU bằng các công cụ như intel_gpu_top hoặc DevTools đảm bảo quá trình phát lại mượt mà và hiệu quả hơn.

Hướng dẫn bật tăng tốc phần cứng trong trình duyệt Linux

Nếu bạn sử dụng Linux hàng ngày, có lẽ bạn đã nhận thấy rằng khi xem video trên trình duyệt, quạt quay rất nhanh, CPU đạt 100% và máy tính xách tay có cảm giác như sắp cất cánh. Đó thường là một triệu chứng của tăng tốc video phần cứng Chức năng này không được kích hoạt đúng cách: bộ xử lý phải thực hiện công việc mà đáng lẽ GPU phải làm, dẫn đến tiếng ồn lớn hơn, nhiệt độ cao hơn và thời lượng pin ngắn hơn.

Tin tốt là hiện nay Firefox, Chromium và hầu hết các phiên bản phái sinh của chúng đều đã bao gồm hỗ trợ VA-API thực sự và khả năng tăng tốc phần cứng trên Linux, mặc dù hiếm khi được tối ưu hóa tốt ngay từ đầu. Trong hướng dẫn này, chúng ta sẽ xem xét từng bước một cách chi tiết cách chuẩn bị trình điều khiển, cách kích hoạt VA-API trong các trình duyệt chính và cách kiểm tra xem video có đang được giải mã trên GPU chứ không phải trên CPU hay không.

Tăng tốc phần cứng video là gì và tại sao bạn nên bật tính năng này?

Khi nói về tăng tốc phần cứng trong trình duyệt, chúng ta muốn nói đến việc chuyển giao các tác vụ nặng nề như giải mã và xử lý video cho GPU, thay vì để toàn bộ công việc đó cho CPU. Trên thực tế, điều này có nghĩa là khi phát nội dung đa phương tiện (YouTube, Netflix(Ví dụ: Twitch, v.v.) card đồ họa chịu trách nhiệm giải nén và xử lý các khung hình video, trong khi CPU có nhiều thời gian rảnh hơn.

Công nghệ kết nối các ứng dụng và GPU trong Linux để xử lý video được gọi là VA-API (Video Acceleration API), và nó là tiêu chuẩn thực tế trên hệ điều hành Linux. Nhiều chương trình hỗ trợ nó: trình duyệt, các trình phát như VLC hoặc OBS Studio để mã hóa/giải mã bằng card đồ họa, và thậm chí cả các công cụ chỉnh sửa và ghi hình.

Những lợi ích thiết thực của việc tăng tốc video hoạt động đúng cách khá rõ ràng trong sử dụng hàng ngày: Giảm mức sử dụng CPU, tiêu thụ năng lượng, nhiệt độ thấp hơn và phát lại ổn định hơn, đặc biệt là trong máy tính xách tay cũ hoặc có bộ xử lý tầm trung (ví dụ: 2 nhân/4 luồng).

Mặt khác, cũng có một số nhược điểm và hạn chế cần lưu ý ngay từ đầu: Nhiều GPU đời cũ không còn hỗ trợ các codec hiện đại, một số trình duyệt giới hạn độ phân giải khi sử dụng H.264 thay vì VP9/AV1, và việc triển khai VA-API không chính xác có thể gây ra hiện tượng nhiễu ảnh, màn hình xanh hoặc giật hình trong một số video nhất định.

Hơn nữa, việc hỗ trợ trên Linux vẫn còn khá phức tạp hơn so với các hệ điều hành khác. Cửa sổSự kết hợp giữa trình điều khiển + VA-API + trình duyệt không phải lúc nào cũng hoạt động ngay từ lần đầu tiên, và tình hình có thể rất khác nhau tùy thuộc vào việc bạn sử dụng Intel, AMD hay... NVIDIA và theo sự phân bố. Vì vậy, điều quan trọng là phải hiểu rõ phần cứng bạn đang sử dụng, trình điều khiển bạn đang dùng và các codec mà GPU của bạn hỗ trợ trước tiên.

Hãy kiểm tra xem bạn đang sử dụng loại GPU nào và hệ điều hành Linux của bạn dùng trình điều khiển nào.

Trước khi thao tác bất cứ điều gì trong Firefox hoặc Chromium, bạn cần biết chính xác loại card đồ họa nào mình đã cài đặt và trình điều khiển nào mà nhân hệ điều hành đang sử dụng. Điều này rất quan trọng để lựa chọn gói VA-API phù hợp và tránh các lỗi hiếm gặp sau này.

Để xác định GPU trong hệ thống dựa trên Linux, chỉ cần khởi chạy một lệnh. thiết bị đầu cuối một cái gì đó như thế này: lspci -k | grep -EA3 'VGA|3D|Display'Kết quả sẽ cho bạn biết kiểu card và mô-đun nhân mà nó đang sử dụng, ví dụ: Intel UHD Graphics 600/620 cùng với trình điều khiển. i915.

Nếu máy tính của bạn chỉ có một GPU, bạn thường sẽ thấy một thiết bị như "Bộ điều khiển tương thích VGA" và trình điều khiển đang được sử dụng, trong khi nếu bạn có máy tính xách tay lai (Intel iGPU + AMD/NVIDIA dGPU) thì sẽ xuất hiện hai thiết bị đồ họa. Điều này rất quan trọng vì trong các kịch bản đa GPU, có hai thiết bị kết xuất DRI tham gia.

Để xác nhận bạn có những thiết bị kết xuất nào, hãy liệt kê nội dung của... /dev/dri với: ls /dev/driTrên một máy tính cơ bản, bạn sẽ thấy một cái gì đó tương tự như thế này: card0 y renderD128; trong một hệ thống lai, chúng cũng sẽ xuất hiện card1 y renderD129.

Nếu bạn muốn tìm hiểu sâu hơn về trình điều khiển nào được liên kết với từng thiết bị DRI, bạn có thể tham khảo... /sys/kernel/debug/dri/128/name, /sys/kernel/debug/dri/129/name, Vv Ví dụ, một tệp chứa “i915” cho biết nút kết xuất này tương ứng với iGPU của Intel, trong khi tệp có “radeon”, “amdgpu” hoặc “nouveau” sẽ đại diện cho GPU của AMD hoặc NVIDIA được hệ thống sử dụng.

Trình điều khiển VA-API trong Ubuntu và các bản phân phối phái sinh: Intel, AMD và NVIDIA

Sau khi GPU được nhận diện, bước tiếp theo là cài đặt trình điều khiển VA-API phù hợp để card đồ họa có thể giải mã video thông qua phần cứng. Trong các bản phân phối dựa trên Debian/Ubuntu, việc này được thực hiện thông qua apt với một vài gói sản phẩm quan trọng.

Đối với GPU của Intel, về cơ bản có hai dòng trình điều khiển VA-API: dòng "cổ điển" i965 và dòng hiện đại hơn iHD (intel-media-driver), và thường có cả phiên bản miễn phí và "có phí". Đại khái:

  • i965-va-driverTrình điều khiển miễn phí cho VA-API được hỗ trợ trên các thế hệ Cantiga, Ironlake, Sandy Bridge, Ivy Bridge, Haswell, Broadwell, Skylake, Kaby Lake, Coffee Lake và Cannon Lake.
  • i965-va-driver-shaders: phiên bản độc quyền dành riêng cho các thế hệ đó, với một số tối ưu hóa nhất định.
  • trình điều khiển intel-media-vaKhuyến nghị sử dụng trình điều khiển VA-API miễn phí cho các dòng máy Broadwell trở lên (Skylake, Kaby Lake, Coffee Lake, Whiskey Lake, Cannon Lake, Ice Lake, Alchemist, Meteor Lake, v.v.).
  • intel-media-va-driver-không miễn phíĐây là phiên bản độc quyền của phiên bản trước, bổ sung thêm các tính năng như mã hóa phần cứng bằng các codec hiện đại như H.265, tùy thuộc vào phần cứng.

Ví dụ, trên một máy tính xách tay thông thường với card đồ họa Intel UHD 600/620, bạn có thể cài đặt phiên bản độc quyền hiện đại bằng lệnh: sudo apt install intel-media-va-driver-non-free vainfo. Gói vainfo Nó được dùng để kiểm tra sau này xem GPU của bạn hỗ trợ chính xác những codec nào.

Sau khi cài đặt, bạn sẽ có /usr/lib/x86_64-linux-gnu/dri/ một tập tin iHD_drv_video.so (dành cho intel-media-driver) hoặc i965_drv_video.so (dành cho i965). Đây là các tập tin nhị phân mà VA-API tải nội bộ khi trình duyệt hoặc ứng dụng khác yêu cầu tăng tốc video.

Đối với GPU AMD Radeon và NVIDIA sử dụng trình điều khiển mã nguồn mở Nouveau, thành phần trung tâm trên Ubuntu là mesa-va-drivers, thao tác này sẽ cài đặt các phần phụ trợ VA-API cần thiết cho các thẻ này. Đối với các card NVIDIA sử dụng trình điều khiển độc quyền, mọi thứ trở nên phức tạp hơn: bản thân VA-API không được hỗ trợ trực tiếp, mà phải thông qua cầu nối VDPAU→VAAPI (ví dụ: với vdpau-va-driver), vậy mà ngày nay các trình duyệt hầu như không còn dựa vào VDPAU nữa.

  Hướng dẫn đầy đủ về lệnh `man` trong Linux

Nếu bạn có hệ thống kết hợp Intel + AMD hoặc Intel + NVIDIA với trình điều khiển mã nguồn mở, thông thường người ta sẽ cài đặt cả trình điều khiển VA-API cho Intel (iHD hoặc i965) và mesa-va-driversđể bạn có thể chọn GPU nào sẽ đảm nhiệm việc giải mã video. Sau đây chúng ta sẽ xem cách chọn một thiết bị DRI cụ thể thông qua các biến môi trường.

Trình điều khiển VA-API trong Fedora và những đặc điểm riêng của chúng với NVIDIA.

Trong Fedora, cách tiếp cận tương tự, nhưng trình quản lý gói và một số tên gói cụ thể thì khác. Đối với card đồ họa Intel, việc hỗ trợ VA-API thường bao gồm cài đặt:

Trong cửa sổ dòng lệnh với quyền quản trị viên, bạn có thể sử dụng lệnh sau: sudo dnf install libva-intel-driver intel-mediasdk intel-media-driverĐiều này đảm bảo bạn có cả trình điều khiển cổ điển và mới cùng với các thư viện liên quan của chúng.

Nếu bạn sử dụng card đồ họa AMD Radeon hoặc NVIDIA với trình điều khiển mã nguồn mở Nouveau, hỗ trợ VA-API đã được bao gồm trong gói phần mềm. mesa-dri-driversThường được cài đặt mặc định trong Fedora Workstation. Tuy nhiên, trên một số hệ thống, kết quả thực tế khi sử dụng VA-API trên AMD/Nouveau có thể không nhất quán hoặc thậm chí thất bại.

Ưu điểm của Fedora so với Ubuntu trong lĩnh vực phần mềm độc quyền của NVIDIA là cầu nối VDPAU cho VA-API (như libva-vdpau-driverThông thường, các tệp này có thể được tải trực tiếp từ các kho lưu trữ chính thức. Ví dụ, bạn có thể cài đặt nó bằng sudo dnf install libva-vdpau-driverTuy nhiên, điều đó không đảm bảo rằng các trình duyệt sẽ thực sự sử dụng VDPAU trong thực tế.

Hãy sử dụng lệnh vainfo để kiểm tra xem GPU của bạn thực sự hỗ trợ những codec nào.

Việc cài đặt các gói phần mềm thôi chưa đủ: bạn cần biết GPU của mình hỗ trợ những codec và chế độ (mã hóa/giải mã) nào thông qua VA-API để tránh gặp phải các thiết lập không thể sử dụng được. Ở đây phát huy tác dụng vainfo, trong đó liệt kê các cấu hình được hỗ trợ cho một thiết bị DRI cụ thể và trình điều khiển VA-API.

Cách hiệu quả nhất để khởi chạy vainfo là chỉ định rõ tên của trình điều khiển và thiết bị hiển thị cần quan tâm, ví dụ: LIBVA_DRIVER_NAME=iHD vainfo --display drm --device /dev/dri/renderD128Điều này giúp tránh nhầm lẫn trên các hệ thống có nhiều GPU hoặc nhiều trình điều khiển được cài đặt.

Thông thường, kết quả đầu ra của lệnh vainfo bắt đầu bằng việc hiển thị phiên bản VA-API và trình điều khiển, sau đó hiển thị một danh sách dài các "hồ sơ và điểm truy cập". Mỗi dòng thường có một cấu hình codec (MPEG2, H264Main, H264High, HEVCMain, VP8, VP9, ​​​​AV1…) và một chế độ đầu vào/đầu ra.

Điều khiến chúng ta quan tâm đến việc phát lại video là những mục như thế này xuất hiện. VAEntrypointVLD Đối với codec mong muốn, điều đó có nghĩa là GPU có thể giải mã nó bằng phần cứng. Ví dụ, xem VAProfileH264High : VAEntrypointVLD Điều này ngụ ý hỗ trợ giải mã H.264; xem VAProfileVP9Profile0 : VAEntrypointVLD Điều này bao gồm hỗ trợ phần cứng VP9, ​​v.v.

Trên các GPU đời cũ, bạn thường sẽ thấy khả năng hỗ trợ H.264 khá tốt nhưng lại thiếu VP8, VP9 hoặc AV1, điều này buộc bạn phải sử dụng các tiện ích mở rộng của trình duyệt để buộc các trang web sử dụng H.264 thay vì các codec mới hơn. Hãy lưu ý rằng nếu video chỉ tồn tại ở định dạng VP9/AV1, thì không có thủ thuật thần kỳ nào cả: nó sẽ được giải mã bằng phần mềm.

Nếu vainfo trả về các lỗi như “va_openDriver() failed” hoặc không thể khởi tạo trình điều khiển được yêu cầu, rất có thể GPU của bạn không tương thích với hệ thống phụ trợ cụ thể đó. Trong trường hợp đó, thông thường việc chuyển từ iHD sang i965 trên các hệ thống Intel cũ hơn hoặc kiểm tra xem gói Mesa tương ứng đã được cài đặt chính xác cho AMD/Nouveau hay chưa sẽ có hiệu quả.

Cấu hình các biến môi trường để khắc phục sự cố trình điều khiển VA-API và thiết bị DRI.

Nhiều hướng dẫn giả định rằng thiết bị DRI đầu tiên (renderD128) luôn là iGPU và hệ thống sẽ tự động chọn trình điều khiển phù hợp mà không cần thao tác thêm, nhưng trên thực tế, đặc biệt là trên các máy tính xách tay có nhiều GPU, điều này có thể không đúng. Do đó, việc thiết lập một số biến môi trường trước khi khởi động trình duyệt là rất quan trọng.

Ba biến được sử dụng phổ biến nhất để điều khiển VA-API và giao diện đồ họa Firefox trên Linux là:

  • MOZ_WAYLAND_DRM_DEVICE: đường dẫn đến thiết bị DRI mà bạn nên sử dụng (ví dụ: /dev/dri/renderD128 o /dev/dri/renderD129).
  • LIBVA_DRIVER_NAME: tên viết tắt của trình điều khiển VA-API cần được tải (i965, iHD, nouveau, r600, radeonsi, Vv).
  • MOZ_X11_EGL / MOZ_ENABLE_WAYLAND: các chỉ báo số nguyên (0/1) để cho phép sử dụng EGL và tuyến đường cụ thể tùy thuộc vào việc bạn đang sử dụng Xorg hay Wayland.

Ví dụ, để khởi chạy Firefox trong phiên X11 sử dụng Intel HD với trình điều khiển iHD, bạn có thể sử dụng lệnh như sau: MOZ_WAYLAND_DRM_DEVICE=/dev/dri/renderD128 LIBVA_DRIVER_NAME=iHD MOZ_X11_EGL=1 firefoxTại Wayland, biến thể sẽ tương tự nhưng với... MOZ_ENABLE_WAYLAND=1 thay vì MOZ_X11_EGL.

Như vậy tôi không cần phải viết điều này mỗi lần nữa. khởi độngnhiều người dùng thêm LIBVA_DRIVER_NAME=iHD (hoặc bất cứ ai) vào tệp toàn cầu /etc/environmentđể toàn bộ hệ thống có trình điều khiển VA-API đó theo mặc định. Tuy nhiên, vẫn giữ MOZ_WAYLAND_DRM_DEVICE và MOZ_X11_EGL/MOZ_ENABLE_WAYLAND trong trình khởi chạy hoặc kịch bản Firefox vẫn được khuyến nghị sử dụng trên các máy tính xách tay lai.

Trên các hệ điều hành máy tính để bàn như KDE Plasma, bạn có thể chỉnh sửa trình khởi chạy Firefox và thêm "env" theo sau là các biến vào lệnh thực thi để không phải lúc nào cũng phụ thuộc vào terminal. Đại loại như... Exec=env MOZ_WAYLAND_DRM_DEVICE=/dev/dri/renderD128 LIBVA_DRIVER_NAME=iHD MOZ_X11_EGL=1 firefox %u Phương pháp này thường hiệu quả.

Bật tính năng tăng tốc phần cứng trong Firefox (VA-API + WebRender)

Mozilla đã giới thiệu hỗ trợ VA-API chính thức trong Firefox cho Linux bắt đầu từ Wayland và sau đó mở rộng sang X11, nhưng trong một thời gian dài, nó đã bị vô hiệu hóa theo mặc định hoặc chỉ được triển khai một phần. Đó là lý do tại sao nhiều hướng dẫn khuyên nên điều chỉnh một số tùy chọn nội bộ để tận dụng tối đa khả năng của nó.

Việc đầu tiên cần làm là truy cập vào trang cài đặt nâng cao nổi tiếng: gõ about:config Trong thanh địa chỉ, hãy chấp nhận cảnh báo và sử dụng thanh tìm kiếm ở phía trên. Từ đó, có một số nhóm điều chỉnh có liên quan.

Để kích hoạt trình biên dịch dựa trên GPU hiện đại, bạn nên kích hoạt công cụ WebRender hoặc buộc sử dụng OpenGL: busca gfx.webrender.all và đưa nó vào đúngVà nếu bạn muốn, bạn cũng có thể ép buộc. layers.acceleration.force-enabled a đúng Để đảm bảo Firefox cố gắng tận dụng GPU.

Thứ hai, bạn cần đảm bảo rằng Firefox sử dụng FFmpeg với VA-API thay vì các bộ giải mã nội bộ của nó khi cần thiết. Để thực hiện việc này, hãy tìm các khóa này và điều chỉnh giá trị của chúng:

  • media.ffmpeg.vaapi.enabledđúng (Cho phép sử dụng VA-API thông qua FFmpeg).
  • media.ffvpx.enabledsai (Vô hiệu hóa bộ giải mã FFVPX nội bộ để buộc sử dụng FFmpeg).
  • media.av1.enabledsai Nếu GPU của bạn không hỗ trợ AV1 bằng phần cứng, trang web sẽ ưu tiên đề xuất các codec khác, "thân thiện" hơn.
  • media.rdd-vpx.enabled → Trên các GPU hiện đại có hỗ trợ phần cứng VP9, ​​bạn có thể truy cập đúng; trong các đồ họa cũ hơn, tốt hơn hết là nên để nguyên như vậy. sai.
  Cách lưu bất kỳ trang web nào dưới dạng PDF trên bất kỳ trình duyệt hoặc thiết bị nào

Trên các máy có nhiều GPU và trình điều khiển mã nguồn mở (ví dụ: Intel + AMD), bạn cũng có thể điều chỉnh các biến MOZ_WAYLAND_DRM_DEVICE và LIBVA_DRIVER_NAME để quyết định xem video được giải mã trên iGPU hay dGPU. Ví dụ, chỉ vào /dev/dri/renderD129 Sử dụng LIBVA_DRIVER_NAME=r600 hoặc radeonsi để dùng Radeon làm bộ tăng tốc video.

Trong các hệ thống mà ngay cả sau khi điều chỉnh các tham số này, VP9 và AV1 vẫn tiêu tốn quá nhiều tài nguyên, một giải pháp thiết thực là buộc sử dụng H.264 với các phần mở rộng như... h264ify o Nâng cao h264ify. Các tiện ích mở rộng này chặn VP8/VP9/AV1 trên các trang web như YouTube và yêu cầu cụ thể luồng AVC1 (H.264), mà hầu hết các GPU có API VA đều giải mã dễ dàng.

Sau khi thực hiện các thay đổi, hãy đóng hoàn toàn Firefox, khởi động lại với các biến môi trường thích hợp và thử phát video YouTube ở độ phân giải 1080p60 trong khi theo dõi tải CPU và GPU. Bạn sẽ đặc biệt nhận thấy sự cải thiện trên những máy tính đã hơn một thập kỷ tuổi, nơi CPU đã bắt đầu gặp khó khăn trong việc xử lý video độ phân giải cao thông qua phần mềm.

Hãy kiểm tra xem Firefox có đang sử dụng GPU để giải mã video hay không.

Việc trình duyệt "có vẻ" hoạt động mượt mà hơn là chưa đủ: cần phải xác minh một cách khách quan rằng VA-API đang được sử dụng và các khung hình đang được giải mã trên GPU. Có một số cách để thực hiện việc này trong Firefox trên hệ điều hành Linux.

Cách đầu tiên là chỉ cần xem kết quả hiển thị trên cửa sổ terminal mà bạn đã dùng để khởi chạy Firefox với các biến môi trường đã được cấu hình. Nếu mọi việc suôn sẻ, bạn sẽ nhận được tin nhắn từ... libva info chỉ ra rằng va_openDriver() returns 0 và các tham chiếu đến trình điều khiển đã được tải (ví dụ: i965 hoặc iHD) mà không có lỗi tiếp theo.

Nếu bạn sử dụng GPU của Intel, bạn có thể sử dụng phương pháp sau: intel_gpu_top (một phần của intel-gpu-tools) để xem các phần hoạt động cụ thể, chẳng hạn như "Video", thể hiện tỷ lệ sử dụng công cụ giải mã. Nếu không có VA-API, bạn sẽ thấy cột đó hiển thị số 0 ngay cả khi video bị giật; khi VA-API được kích hoạt, nó sẽ hiển thị phần trăm đáng chú ý trong khi video đang phát.

Trên các card đồ họa Radeon, công cụ tương đương là radeontop, hiển thị thanh hiển thị mức sử dụng GPU và VRAM. Mặc dù không phải lúc nào cũng có một phần riêng biệt, rõ ràng dành cho việc giải mã video, nhưng rất dễ nhận thấy hoạt động tăng lên khi VA-API đang chạy và trình điều khiển (ví dụ: r600 hoặc radeonsi) được chỉ định chính xác đến thiết bị Radeon DRI.

Trong môi trường có nhiều GPU, bạn cũng có thể cần thêm các tùy chọn như sau: --bus Trong radeontop, chỉ giám sát card đồ họa phù hợp. Dù sao thì quy luật vẫn giống nhau: nếu tải CPU giảm và GPU có nhiều việc phải làm hơn khi chúng ta phát video, thì chúng ta đang đi đúng hướng.

Cuối cùng, việc lặp lại bài kiểm tra tương tự với các tiện ích mở rộng h264ify được bật và tắt cho phép bạn kiểm tra tác động thực sự của việc chuyển đổi từ VP9/AV1 sang H.264 đối với mức tiêu thụ tài nguyên. Các phép đo được thực hiện trên các hệ thống với bộ xử lý i5-2450M và i7-7700HQ cho thấy mức sử dụng CPU giảm đáng kể, trên các bộ xử lý tầm trung, con số này có thể lên đến một nửa khi VA-API được kích hoạt.

Tăng tốc phần cứng trong Chromium, Chrome và các phiên bản phái sinh (VA-API + flags)

Chromium 88 đánh dấu một bước ngoặt bằng việc giới thiệu hỗ trợ VA-API "nghiêm túc" trong Linux, mặc dù vẫn còn một số điểm khác biệt: phụ thuộc nhiều vào Xorg, cần sử dụng một số cờ nhất định và hỗ trợ tốt hơn cho Intel và NVIDIA so với Radeon. Dù vậy, sự hỗ trợ đó đã được truyền lại cho toàn bộ gia đình: Google Chrome, Edge, Brave, Vivaldi, Opera, v.v.

Bước đầu tiên trong bất kỳ trình duyệt nào dựa trên Chromium là kiểm tra trang cờ nội bộ, có thể truy cập bằng lệnh chrome://flags trong Chrome và Chromium, brave://flags trong Brave, edge://flags tại Edge, vivaldi://flags trong Vivaldi hoặc opera://flags trong Opera. Sau khi vào bên trong, hãy tìm và kích hoạt ít nhất các mục sau:

  • Ghi đè danh sách hiển thị phần mềm → Đã bật (buộc bỏ qua danh sách đen GPU và buộc sử dụng các tính năng tăng tốc).
  • Giải mã video tăng tốc phần cứng → Đã bật (cho phép giải mã video bằng phần cứng).

Sau khi kích hoạt các tùy chọn này, trình duyệt của bạn sẽ yêu cầu bạn khởi động lại để áp dụng các thay đổi; hãy làm như vậy và sau đó truy cập lại. chrome://gpu (hoặc phiên bản dành cho trình duyệt của bạn) để kiểm tra trạng thái của “Trạng thái tính năng đồ họa” và “Thông tin tăng tốc video”. Lý tưởng nhất là mọi thứ liên quan nên được hiển thị là "Đã tăng tốc phần cứng".

Điểm quan trọng tiếp theo trong Chromium và các phiên bản phái sinh là cách ứng dụng được khởi chạy từ dòng lệnh. lệnh. Trong các phiên Xorg, thông thường nên thêm cờ này. --use-gl=desktopTrong khi đó, ở các phiên Wayland, nơi trình duyệt chạy trên XWayland, nó thường được sử dụng --use-gl=egl để tránh các vấn đề.

Ngoài ra, có một tập hợp các cờ liên quan đến VA-API trong Chromium cần được thêm vào, hoặc vào lệnh thực thi hoặc vào tệp cấu hình cờ:

  • --enable-accelerated-video-decode
  • --enable-accelerated-video-encode
  • --enable-features=VaapiVideoDecoder
  • --disable-features=UseChromeOSDirectVideoDecoder

Ví dụ, trong Xorg với Google Bạn có thể khởi chạy một ứng dụng tương tự như thế này trên Chrome phiên bản ổn định: google-chrome-stable --use-gl=desktop --enable-accelerated-video-decode --enable-accelerated-video-encode --enable-features=VaapiVideoDecoder --disable-features=UseChromeOSDirectVideoDecoderMô hình tương tự cũng áp dụng cho Brave (brave-browser), Vivaldi (vivaldi), Opera (opera) hoặc Cạnh (microsoft-edge).

Trong các bản phân phối như CacheOS, Arch và các hệ thống tương tự, nhiều trình duyệt cho phép tập trung các cờ này vào các tệp như... ~/.config/chromium-flags.conf, ~/.config/brave-flags.conf hoặc tương tự. Một giải pháp thay thế phổ biến khác là chỉnh sửa tệp tin. .desktop Từ trình duyệt, sao chép nó từ /usr/share/applications a ~/.local/share/applications và thêm cờ vào dòng Exec=.

Một lần nữa, nếu bạn muốn mọi thứ được lưu trữ liên tục và không phụ thuộc vào thiết bị đầu cuối, tốt nhất là nên chỉnh sửa phần đó. .desktop hoặc trình khởi chạy trong menu môi trường máy tính để bàn để nó luôn thêm các cờ chính xác. Bằng cách này, khi mở trình duyệt từ menu hoặc thanh dock, các tùy chọn VA-API luôn được tôn trọng.

Kiểm tra khả năng giải mã phần cứng trong trình duyệt Chromium

Trong hệ sinh thái Chromium, có hai cách chính để xác minh rằng quá trình giải mã video đang được thực hiện bằng phần cứng. Một phương pháp mang tính tổng quát hơn, còn phương pháp kia tận dụng các công cụ phát triển.

Cách nhanh nhất là truy cập chrome://gpu (hoặc lệnh tương đương trong trình duyệt của bạn) và kiểm tra xem trong mục “Thông tin tăng tốc video” có mục nào có trạng thái “Tăng tốc phần cứng” hay không. Điều này cung cấp cái nhìn tổng quan về khả năng, nhưng không đảm bảo rằng một video cụ thể sẽ thực sự sử dụng GPU.

  Sử dụng các lệnh ifconfig và route trong Linux và lệnh thay thế iproute2.

Để kiểm tra một ví dụ thực tế, hãy mở một video (ví dụ: trên YouTube), sau đó vào công cụ dành cho nhà phát triển bằng phím F12 hoặc Ctrl+Shift+I và tìm tab đó. Phương tiện truyền thông (Nếu không thấy, bạn sẽ tìm thấy nó trong menu các tab bổ sung). Trong mục Media, hãy chọn trình phát cho video bạn đang xem.

Trong thông tin chi tiết của người chơi, bạn sẽ thấy một trường cho biết loại bộ giải mã video được sử dụng và liệu "Bộ giải mã phần cứng" có được đặt thành true hay không. Lý tưởng nhất là bạn sẽ thấy một bộ giải mã được liên kết với VA-API/GL và bộ giải mã phần cứng đã được kích hoạt; nếu thay vào đó bạn thấy các tên như VpxVideoDecoder, FFmpegVideoDecoder o Dav1dVideoDecoder Nếu không đề cập đến phần cứng, rất có thể phần mềm đang được sử dụng.

Trong một số phiên bản cũ hơn, người ta khuyến nghị nên sử dụng chrome://media-internals Đối với cùng một thao tác kiểm tra này, hãy xem xét các trường như sau: kVideoDecoderName, trong đó một giá trị thuộc loại MojoVideoDecoder Điều này cho thấy việc sử dụng tăng tốc phần cứng so với các bộ giải mã hoàn toàn bằng phần mềm. Với các công cụ hiện đại, tab Media trong DevTools đã thay thế phần lớn trang đó.

Cuối cùng, bạn có thể kết hợp việc xác minh này với các công cụ giám sát GPU tương tự như trong Firefox (intel_gpu_top, radeontop, amdgpu_top, nvtop, v.v.), đảm bảo rằng khi trình duyệt phát video, các công cụ xử lý video của GPU sẽ thể hiện hoạt động thực sự.

Mã hóa và codec: H.264, VP9, ​​​​AV1 và các phần mở rộng như h264ify

Một chi tiết thường bị bỏ qua là, ngay cả khi GPU hỗ trợ VA-API, nếu bộ mã hóa video không được tích hợp trong phần cứng, bạn chắc chắn sẽ phải sử dụng giải mã bằng phần mềm. Đây là lúc các tiện ích mở rộng và cấu hình bổ sung phát huy tác dụng.

H.264/AVC1 là codec "đa năng" mà hầu hết các GPU vài năm tuổi đều xử lý tốt thông qua VA-API, trong khi VP8, VP9 và AV1 chỉ được tăng tốc phần cứng trên các thế hệ GPU tương đối hiện đại. Điều này được thể hiện rõ ràng ở lối ra của vainfoTrong khi đó, các GPU đời cũ chỉ hỗ trợ H.264 và một số định dạng khác.

Tuy nhiên, các nền tảng như YouTube lại ưu tiên VP9 hoặc thậm chí AV1 cho các trình duyệt hiện đại, coi H.264 là tùy chọn thứ yếu hoặc chỉ dành cho các độ phân giải cụ thể. Do đó, ngay cả khi bạn đã cấu hình VA-API, nếu YouTube quyết định cung cấp cho bạn VP9 và GPU của bạn không hỗ trợ, CPU sẽ phải chịu tải.

Đó là nơi mà các tiện ích mở rộng như... h264ify và các phiên bản phái sinh của nó (Enhanced h264ify, v.v.) vô cùng hữu ích: chúng chặn VP8/VP9/AV1 và buộc trang web sử dụng cấu hình H.264 có sẵn khi nó tồn tại. Tuy nhiên, nếu không có phiên bản H.264 của một video cụ thể, họ sẽ không thể tạo ra phiên bản đó.

Điều đáng chú ý là YouTube, khi buộc phải sử dụng H.264, thường giới hạn độ phân giải tối đa ở mức 1080p với tốc độ 60 khung hình/giây, trong khi với VP9/AV1, nó có thể cung cấp độ phân giải 1440p, 4K và tốc độ khung hình cao hơn. Do đó, việc bật h264ify đôi khi đồng nghĩa với việc phải hy sinh độ phân giải tối đa để đổi lấy khả năng phát lại mượt mà hơn và ít gây áp lực lên CPU hơn.

Đối với các codec thế hệ mới như AV1, chỉ những GPU rất hiện đại mới có hỗ trợ giải mã phần cứng thực sự, vì vậy trên hầu hết các PC hiện nay, tốt nhất vẫn nên tắt tính năng này trong trình duyệt nếu bạn nhận thấy quạt máy tính hoạt động mạnh như tua bin khi xem video.

Tác động thực sự đến hiệu năng: khi nào nên tận dụng VA-API

Các thử nghiệm thực nghiệm trên máy tính xách tay có CPU 2 lõi, 4 luồng (ví dụ: i5-2450M từ nhiều năm trước) cho thấy việc bật VA-API và ủy thác việc giải mã H.264 cho GPU có thể giảm gần một nửa mức sử dụng CPU trung bình trong quá trình phát video 1080p60 trên Firefox. Điều này giúp thiết bị hoạt động mát hơn, êm hơn và mang lại trải nghiệm ổn định hơn nhiều.

Trên các máy tính đời mới hơn với bộ xử lý 4 nhân/8 luồng trở lên (chẳng hạn như i7-7700HQ), sự khác biệt về tỷ lệ sử dụng CPU không quá rõ rệt, đôi khi chỉ thấp hơn khoảng 3-6%. Mặc dù vậy, tải trọng có xu hướng được phân bổ tốt hơn và các đỉnh sử dụng cực đoan có thể gây ra những giật nhỏ cũng được giảm thiểu.

Điều thú vị là, nếu bạn so sánh việc phát lại trên trình duyệt với VA-API với một trình phát như VLC cũng được cấu hình với VA-API, bạn sẽ thấy rằng mức tiêu thụ CPU của trình duyệt thường cao hơn đáng kể. Điều này cho thấy vẫn còn chỗ để cải thiện cách các trình duyệt tích hợp VA-API và quản lý việc truyền dữ liệu giữa CPU và GPU trên Linux.

Trong mọi trường hợp, đối với những chiếc laptop cấu hình khiêm tốn hoặc đời cũ, việc dành thời gian tinh chỉnh khả năng tăng tốc phần cứng có thể tạo nên sự khác biệt giữa việc phải từ bỏ xem video 1080p và việc có thể thưởng thức nội dung độ phân giải cao mà không làm hệ thống bị quá tải. Trên các hệ thống mạnh mẽ, sự cải thiện là có, nhưng nó tinh tế hơn và trong nhiều trường hợp, việc làm phức tạp thêm mọi thứ có thể không đáng nếu bạn đã hoạt động "đủ tốt".

Điều rõ ràng là sự kết hợp giữa Linux, các trình duyệt hiện đại và VA-API vẫn còn hơi thua kém so với trải nghiệm đạt được trên Windows, nơi các phương thức ủy thác xử lý video cho GPU được hoàn thiện và chuẩn hóa hơn. Tuy nhiên, nếu thực hiện đúng các bước, người dùng vẫn có thể thể hiện hành vi rất lịch sự trên màn hình máy tính của chú chim cánh cụt.

Nếu bạn đã đọc đến đây, bạn hẳn đã biết rằng việc bật tăng tốc video phần cứng trong Linux không chỉ đơn thuần là tích vào một ô trong trình duyệt, mà còn là việc căn chỉnh đúng cách các trình điều khiển VA-API, biến môi trường, cờ nội bộ và lựa chọn codec để Firefox, Chrome, Brave và các trình duyệt khác hoạt động trơn tru với GPU của bạn thay vì gây tải không cần thiết cho CPU.

Bài viết liên quan:
Tăng tốc phần cứng Chrome (CHA) là gì? Thật dễ hiểu