Các nhà phát triển Collabora đã giới thiệu một bộ điều khiển Gallium mới cho Mesa

Bộ điều khiển cộng tác

Gần đây Các nhà phát triển cộng tác đã phát hành thông qua một bài đăng trên blog, bộ điều khiển Gallium mới cho Mesa, triển khai một lớp trung gian để tổ chức API OpenCL 1.2 và OpenGL 3.3 về trình điều khiển có hỗ trợ DirectX 12 (D3D12) và mã nguồn của chúng được phát hành theo giấy phép MIT.

Bộ điều khiển được đề xuất sẽ cho phép bạn sử dụng Mesa trên các thiết bị ban đầu không tương thích với OpenCL và OpenGL và cũng là vị trí bắt đầu để chuyển các ứng dụng OpenGL / OpenCL hoạt động trên D3D12. Đối với các nhà sản xuất GPU, hệ thống con cho phép cung cấp hỗ trợ cho OpenCL và OpenGL, với các trình điều khiển chỉ hỗ trợ D3D12.

Trong bài đăng trên blog của họ, các nhà phát triển chia sẻ:

Trong vài tháng qua, chúng tôi đã thực hiện hai dự án mới thú vị tại Collabora và cuối cùng đã đến lúc chia sẻ thông tin về chúng với thế giới ...

Kế hoạch trước mắt, người ta quan sát thấy việc đạt được sự chấp thuận hoàn toàn các bài kiểm tra của Hỗ trợ OpenCL 1.2 và OpenGL 3.3, xác minh tính tương thích với các ứng dụng và đưa các phương pháp hay nhất vào thành phần chính của Mesa.

Giới thiệu về bộ điều khiển mới

Việc phát triển bộ điều khiển mới được thực hiện cùng với các kỹ sư của Microsoft để phát triển các công cụ D3D11On12 thành bộ công cụ chuyển D3D11 và thư viện D3D12 D3D12TranslationLayer, cũng như các triển khai nguyên thủy đồ họa tiêu chuẩn trên D3D12.

Việc thực hiện bao gồm trình điều khiển Gallium, trình biên dịch OpenCL, thời gian chạy OpenCL và trình biên dịch bộ đổ bóng NIR-to-DXIL, chuyển đổi biểu diễn trung gian của bộ tạo bóng NIR được sử dụng trong Mesa sang định dạng DXIL nhị phân (ngôn ngữ trung gian DirectX), tương thích với DirectX 12 và dựa trên mã bit LLVM 3.7 (của Microsoft DirectX Shader Compiler về cơ bản là một nhánh mở rộng của LLVM 3.7). Trình biên dịch OpenCL được chuẩn bị dựa trên kinh nghiệm của dự án LLVM và bộ công cụ SPIRV-LLVM.

Tác phẩm này xây dựng dựa trên nhiều tác phẩm trước đó. Trước hết, chúng tôi đang xây dựng điều này bằng cách sử dụng Mesa 3D, với giao diện Gallium làm cơ sở cho lớp OpenGL và NIR làm cơ sở cho trình biên dịch OpenCL. Chúng tôi cũng đang sử dụng LLVM và trình dịch Khronos SPIRV-LLVM làm trình biên dịch.

Ngoài ra, chúng tôi đang tận dụng kinh nghiệm của Microsoft trong việc tạo lớp dịch D3D12 của họ, cũng như kinh nghiệm của chúng tôi trong việc phát triển Zink.

Mã nguồn OpenCL được biên dịch với clang thành mã giả LLVM trung gian (LLVM IR), mã này sau đó được chuyển đổi thành biểu diễn trung gian của hạt nhân OpenCL ở định dạng SPIR-V.

Các lõi trong biểu diễn SPIR-V được chuyển đến Mesa, được dịch sang định dạng NIR, được tối ưu hóa và chuyển sang NIR-to-DXIL để tạo ra các bộ đổ bóng tính toán DXIL phù hợp để thực thi GPU bằng cách sử dụng thời gian chạy dựa trên DirectX 12. Thay vì sử dụng Clover trong Triển khai Mesa OpenCL, một thời gian chạy OpenCL mới được đề xuất, cho phép nhiều chuyển đổi trực tiếp hơn sang API DirectX 12.

Trình điều khiển OpenCL và OpenGL được chuẩn bị bằng giao diện Gallium được cung cấp trong Mesa, cho phép bạn bỏ qua các chi tiết cụ thể của OpenGL khi tạo trình điều khiển và dịch các lệnh gọi OpenGL thành các thực thể gần với nguyên thủy đồ họa mà GPU hiện đại hoạt động.

Trình điều khiển Gallium chấp nhận các lệnh OpenGL và với sự tham gia của trình biên dịch NIR-to-DXIL, xây dựng bộ đệm lệnh chạy trên GPU bằng trình điều khiển D3D12.

Cuối cùng, các nhà phát triển đề cập rằng đây là công việc sớm và họ mong đợi bộ điều khiển sẽ cải thiện theo thời gian:

Đây chỉ là thông báo, và còn rất nhiều việc phải làm. Chúng tôi có một số thứ hoạt động trong một số trường hợp vào lúc này, nhưng chúng tôi chỉ mới bắt đầu làm xước bề mặt.

Trước hết, chúng ta cần đạt được cấp độ của các tính năng mà chúng ta đang hướng tới. Mục tiêu của chúng tôi tại thời điểm này là vượt qua thử nghiệm tuân thủ cho OpenCL 1.2 và OpenGL 3.3. Chúng ta còn một chặng đường dài phía trước, nhưng với một chút nỗ lực và mồ hôi, tôi chắc chắn rằng chúng ta sẽ đến được đó.

Nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra ghi chú gốc trong liên kết sau hoặc đối với những người quan tâm đến việc xem xét mã nguồn, họ có thể làm như vậy từ liên kết này.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.