Hỗ trợ OpenGL 4.6 và OpenGL® ES 3.2
- M1 trong thời gian dài chỉ hỗ trợ OpenGL 4.1, nhưng giờ đây đã hỗ trợ đầy đủ OpenGL® 4.6 và OpenGL® ES 3.2.
- Chỉ cần cài Fedora để dùng driver mới nhất cho dòng M1/M2.
- Nếu đã cài sẵn, chỉ cần nâng cấp bằng lệnh
dnf upgrade --refresh.
- Khác với các driver 4.1 không chuẩn của các nhà cung cấp hiện có, các driver Linux mã nguồn mở này được chứng nhận theo các phiên bản OpenGL mới nhất, hứa hẹn khả năng tương thích rộng rãi với các khối lượng công việc OpenGL hiện đại như Blender, Ryujinx và Citra.
Chứng nhận driver và hỗ trợ tiêu chuẩn
- Driver 4.6/3.2 được chứng nhận phải vượt qua hơn 100.000 bài kiểm tra để đảm bảo tính chính xác.
- Danh sách driver được chứng nhận chính thức giờ đây đã bao gồm OpenGL 4.6 và ES 3.2.
- Các nhà cung cấp vẫn chưa hỗ trợ các tiêu chuẩn đồ họa hiện đại như OpenGL hiện đại, nhưng công ty này thì có.
- Công ty này công khai thể hiện sự yêu thích đối với các tiêu chuẩn mở có khả năng tương tác, và muốn mang lại cho người dùng cũng như nhà phát triển sự tự do chạy ứng dụng ở nơi họ muốn mà không cần các bản port đặc biệt.
Tính năng mới của OpenGL 4.6
- So với 4.1, OpenGL 4.6 bổ sung hàng chục tính năng bắt buộc:
- Robustness (độ bền vững)
- SPIR-V
- Clip control
- Cull distance
- Compute shaders
- Transform feedback được nâng cấp
Vấn đề tương thích giữa M1 và các tiêu chuẩn đồ họa
- M1 không thực sự phù hợp với các tiêu chuẩn đồ họa mới hơn OpenGL ES 3.1.
- Vulkan biến một số tính năng thành tùy chọn, nhưng các lớp cho DirectX và OpenGL lại thiếu những tính năng cần thiết.
- Trên M1, không có giải pháp sẵn có nào vượt qua bộ tính năng OpenGL 4.1.
Cách vượt qua rào cản 4.1
- Cần những phương pháp mới để triển khai các tính năng mới mà không có hỗ trợ phần cứng.
- Geometry shader, tessellation và transform feedback được thay thế bằng compute shader.
- Cull distance được thay bằng các giá trị nội suy đã biến đổi.
- Clip control được thay bằng phần epilogue của vertex shader.
Thách thức về độ bền vững
- Theo truyền thống, GPU ưu tiên hiệu năng thô hơn là an toàn.
- Với các ứng dụng như trình duyệt web, sự đánh đổi này là không mong muốn.
- Các tính năng robustness cho phép ứng dụng chọn hành vi được xác định khi shader truy cập vượt phạm vi bộ đệm, từ đó giảm bề mặt tấn công với cái giá là hy sinh một phần nhỏ hiệu năng.
Độ bền vững của bộ đệm
- Các API khác nhau có định nghĩa khác nhau về giá trị mà thao tác tải vượt phạm vi bộ đệm trả về khi robustness được bật.
- OpenGL quy định rằng tải vượt phạm vi sẽ trả về phần tử cuối cùng của bộ đệm.
- Phần tính toán bổ sung cho robustness được chuyển vào phần preamble của shader, nên không tạo thêm chi phí cho shader chính.
Độ bền vững của ảnh
- Image robustness yêu cầu thao tác tải ảnh vượt phạm vi phải trả về 0.
- Trên GPU M1, có một bài kiểm tra đơn lẻ bị lỗi với thao tác tải ảnh đã mipmap.
- Các cách обход cho robustness gồm không tải ở mức không hợp lệ, hoặc tải suy đoán trước rồi dùng phép so sánh và chọn.
Ý kiến của GN⁺
- Bài viết này đề cập đến một bước tiến quan trọng trong việc hỗ trợ tiêu chuẩn OpenGL hiện đại trên thiết bị M1. Điều này sẽ mang lại khả năng tương thích rộng hơn và cải thiện hiệu năng cho người dùng Linux cũng như nhà phát triển.
- Các tính năng mới của OpenGL 4.6 có thể cải thiện đáng kể hiệu năng và độ bền vững của các ứng dụng đồ họa, điều này đặc biệt quan trọng trong lĩnh vực phát triển game và tính toán hiệu năng cao.
- Bài viết là một ví dụ tốt cho thấy driver mã nguồn mở có thể mang lại khả năng tuân thủ tiêu chuẩn và tương thích tốt hơn như thế nào so với các giải pháp thương mại.
1 bình luận
Ý kiến trên Hacker News