3. Nhân Linux và driver card màn hình
(tiếp theo phần 1)
3.3-Ảnh phẳng hai chiều (2D computer graphics, 2D acceleration)
Trong những máy tính đầu tiên, việc tạo ảnh trên màn hình do bộ xử lý trung tâm (CPU – Central Processing Unit) dùng bộ nhớ RAM của máy thực hiện song song với việc chạy các phần mềm, do đó chậm. Các card màn hình ra đời với bộ xử lý đồ họa riêng (GPU – Graphic Processing Unit) và RAM đồ họa riêng đã làm tăng tốc (acceleration) việc tạo và hiển thị ảnh trên màn hình. Do đó mới có từ Graphics accelerators (bộ gia tốc đồ họa), hardware acceleration, 3D acceleration và 2D acceleration.
Kiến trúc driver tạo ảnh phẳng đầu tiên trong Linux là XFree86 Acceleration Architecture ( XAA) và vẫn được dùng trong một số version Xserver sau này.
Đến đời Xserver 6.9/7, một kiến trúc mới là EXA được dùng thay thế cho XAA. Điều đặc biệt là cái tên tắt EXA được chính X.Org Foundation định nghĩa là “ acceleration architecture with no well-defined acronym.”, tức là không có định nghĩa rõ ràng EXA là viết tắt của những từ nào.
Sau khi GEM ra đời, Intel cũng xây dựng một kiến trúc driver mới là UXA để các driver màn hình hỗ trợ GEM. Hiện tại, driver card màn hình Intel xf86 -video-intel dùng UXA thay cho EXA.
3.4-Ảnh khối ba chiều (3D computer graphics, 3D acceleration)
OpenGL ( Open G raphics L ibrary) là chuẩn giao diện lập trình ứng dụng (API) cho các phần mềm tạo ảnh phằng và khối, chủ yếu là khối (tương tự Direct3D của Microsoft). Giao diện này gồm hơn 250 lời gọi hàm để tạo các ảnh 3D phức tạp từ các phác thảo hình học.
Mesa3D là bộ phần mềm nguồn mở thực hiện chuẩn OpenGL, được dùng làm lõi (core) cho các driver của X.org.
Direct Rendering Infrastructure ( DRI ) – Hạ tầng tạo ảnh trực tiếp , là giao diện và phần mềm nguồn mở dùng trong X Window System cho phép các phần mềm ứng dụng truy cập trực tiếp đến card màn hình không cần truyền dữ liệu qua X server . Nó được dùng chủ yếu trong Mesa . Các phiên bản cũ còn được gọi là DRI1 để phân biệt với phiên bản mới DRI2 bắt đầu xuất hiện vào đầu năm 2008. Trong thành phần DRI có module Direct Rendering Manager (DRM) và một số thứ khác nữa.
4. Sơ lược về tình hình hiện tại
Như vậy, để thay thế cho các công nghệ cũ của X.org có từ thời XFree86, chỉ từ năm 2008 đến nay, một loạt công nghệ đồ họa mới ra đời và được đưa vào ứng dụng theo hướng chuyển các chức năng đồ họa từ Xserver vào kernel:
-
Đầu tiên là nhân Linux có bộ quản lý bộ nhớ card màn hình GEM.
-
Do có GEM nên việc đặt độ phân giải và chiều sâu màu màn hình giao cho nhân (kernel modesetting).
-
Kiến trúc driver màn hình cũng thay đổi liên tục từ XAA → EXA → UXA.
-
Hạ tầng tạo ảnh DRI cũng chuyển từ DRI1 sang DRI2.
Tuy nhiên, trong giai đoạn giao thời, cái mới và cũ đan xen nhau lẫn lộn, phần do cái mới còn có lỗi, chưa hoàn chỉnh, phần khác các driver cho các card màn hình cũ chưa thể viết lại để áp dụng công nghệ mới.
Đan xen ở đây có nghĩa:
-
Một bản Linux có thể quyết định dùng một phần hay toàn bộ, dùng cả hai công nghệ mới và cũ cho từng trường hợp cụ thể. Ví dụ Ubuntu 10.04 tắt kernel modesetting với driver i915, nhưng trong thực tế một số card cũ lại phải bật nó lên. Mandriva 2010.1 Beta2 không rõ dùng công nghệ nào nhưng cài lên máy có card Intel cũ vẫn trơn tru không phải tác động gì.
-
Các driver màn hình đời mới nhất có thể không dùng được nếu không khớp với các công nghệ được chọn trong bản Linux (ví dụ driver chính hãng NVIDIA với Ubuntu 10.04). Khi đó phải dùng driver cũ hơn.
4.1-Card màn hình Intel.
Intel là hãng hăng hái đi đầu trong phần mềm nguồn mở. Các driver do hãng phát triển đều là PMNM nằm trong dự án X.org. Theo thông tin ở đây :
-
Tháng 11/2007, driver Intel 2.2.0 chính thức bỏ XAA thay bằng EXA.
-
Tháng 10/2008, driver Intel 2.5.0 bắt đầu hỗ trợ GEM và kernel modesetting nhưng vẫn dùng EXA.
-
Tháng 7/2009, driver Intel 2.8.0 chính thức bỏ XAA/EXA chỉ hỗ trợ UXA.
-
Tháng 1/2010, driver Intel 2.10.0 bỏ user modesetting chỉ dùng kernel modesetting.
-
Tháng 4/2010, driver Intel ra bản mới nhất là xf86-video-intel 2.11.0
Chỉ cần nhìn các mốc thời gian cũng thấy giai đoạn gần đây driver thay đổi nhanh đến thế nào. Và vì vậy các trục trặc là không tránh khỏi.
Trong Mandriva 2010.1, driver Intel có tên là x11-driver-video-intel. Trong Ubuntu 10.04 là xserver-xorg-video-intel 2.9.1 đều cùng từ xf86-video-intel.
Intel đi tiên phong nên cũng gặp nhiều rắc rối như đã nói ở đây.
4.2-Card màn hình AMD/ATI
Từ năm 2004, ATI thuê chuyên gia Linux viết driver fglrx vừa nguồn mở vừa nguồn đóng. Driver này chất lượng không tốt, còn nhiều lỗi. Hiện nay, ATI Linux driver có tên là ATI Catalyst như Windows.
Driver nguồn mở của ATI hiện có:
-
Radeon (xf86-video-ati) dành cho các card Radeon 7000 đến Radeon HD 4890, FireGL, FireMV, FirePro and FireStream. Trong Ubuntu, driver này có tên là xserver-xorg-video-radeon. Hỗ trợ EXA, KMS, DRI2.
-
Radeonhd do Novell viết dành cho các card r5xx và mới hơn. Trong kho Ubuntu, driver này có tên xserver-xorg-video-radeonhd và danh sách các card hỗ trợ đi kèm. Mandriva có x11-driver-video-radeonhd.
-
R128 driver cổ từ thời XFree86 dành cho các card Rage 128.
-
Mach64 dành cho các card March64.
Trong kho Ubuntu có gói xserver-xorg-video-ati. Khi cài gói này, tùy theo card hiện có nó sẽ cài một trong các driver nguồn mở nói trên.
4.3-Card màn hình NVIDIA.
Nvidia cung cấp hồ sơ kỹ thuật về card cho X.org phát triển driver nguồn mở nv (xserver-xorg-video-nv trong Ubuntu). Driver này chỉ có 2D, không 3D. Nhưng từ 3/2010, Nvidia tuyên bố ngừng hỗ trợ nv.
Nouveau là driver nguồn mở dành cho card Nvidia (Riva, TNT, GeForce, and Quadro) có hỗ trợ 3D nhưng viết dựa trên kỹ thuật “dò ngược – reverse engineering”, không phải dựa trên hồ sơ do Nvidia cung cấp. Dự án này còn mới, chưa hoàn thiện, được Fedora 11, Mandriva 2010.1 (x11-driver-video-nouveau) và Ubuntu 10.04 (xserver-xorg-video-nouveau có ghi chú là experimental) dùng làm driver mặc định .
Nvidia tự phát triển riêng một driver nvidia nguồn đóng, tải về tại đây. Danh sách các card dùng driver đó có tại địa chỉ trên. Tài liệu hướng dẫn khá dài xem ở đây. Nhưng ngay tại trang download, Nvidia khuyến nghị rằng “ Nhiều bản Linux cung cấp driver NVIDIA theo dạng đóng gói riêng. Nó sẽ tương tác tốt hơn với bản Linux đó vì vậy nên dùng nó hơn là dùng gói phần mềm chính thức”
Ví dụ Ubuntu cài driver nguồn đóng này từ System → Administration → Hardware Drivers. Mandriva có trong kho x11-driver-video-nvidia-current