Collabora phát triển tiện ích bổ sung để chạy OpenCL và OpenGL trên DirectX

Công ty cộng tác trình bày trình điều khiển Gallium mới cho Mesa, triển khai một lớp để tổ chức công việc của API OpenCL 1.2 và OpenGL 3.3 trên các trình điều khiển hỗ trợ DirectX 12 (D3D12). Mã số xuất bản theo giấy phép MIT.

Trình điều khiển được đề xuất cho phép bạn sử dụng Mesa trên các thiết bị không hỗ trợ OpenCL và OpenGL, đồng thời cũng là điểm khởi đầu để chuyển các ứng dụng OpenGL/OpenCL sang chạy trên D3D12. Đối với các nhà sản xuất GPU, hệ thống con có thể cung cấp hỗ trợ cho OpenCL và OpenGL, nếu chỉ có trình điều khiển có hỗ trợ D3D12.

Trong số các kế hoạch trước mắt là đạt được việc vượt qua đầy đủ các bài kiểm tra khả năng tương thích của OpenCL 1.2 và OpenGL 3.3, kiểm tra tính tương thích với các ứng dụng và đưa các phát triển vào thành phần chính của Mesa. Việc phát triển được thực hiện cùng với các kỹ sư của Microsoft đang phát triển mở công cụ D3D11On12 để chuyển trò chơi từ D3D11 sang D3D12 và thư viện Lớp dịch D3D12, triển khai các nguyên hàm đồ họa tiêu chuẩn trên D3D12.

Việc triển khai 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 trình đổ bóng NIR-to-DXIL, giúp chuyển đổi biểu diễn trung gian của các trình đổ bóng NIR được sử dụng trong Mesa thành định dạng nhị phân DXIL (Ngôn ngữ trung gian DirectX), được hỗ trợ trong DirectX 12 và dựa trên Mã bit LLVM 3.7 (Trình biên dịch DirectX Shader từ Microsoft 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 sự phát triển của dự án và công cụ LLVM SPIRV-LLVM.

Các nguồn có phần mở rộng OpenCL được biên dịch bằng cách sử dụng clang thành mã giả trung gian LLVM (LLVM IR), sau đó được chuyển đổi thành dạng 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 vào Mesa, dịch sang định dạng NIR, được tối ưu hóa và chuyển sang NIR-to-DXIL để tạo các bộ đổ bóng điện toán ở định dạng DXIL, phù hợp để thực thi trên GPU sử dụng thời gian chạy dựa trên DirectX 12.
Thay vì Clover, triển khai OpenCL được sử dụng trong Mesa, thời gian chạy OpenCL mới được đề xuất, cho phép chuyển đổi trực tiếp nhiều hơn sang API DirectX 12.

Collabora phát triển tiện ích bổ sung để chạy OpenCL và OpenGL trên DirectX

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 tạo trình điều khiển mà không cần đi sâu vào chi tiết dành riêng cho OpenGL và dịch các lệnh gọi OpenGL về cơ bản gần hơn với các nguyên tắc đồ họa mà GPU hiện đại vận hành. Trình điều khiển Gallium, chấp nhận các lệnh OpenGL và khi sử dụng trình dịch NIR-to-DXIL
tạo bộ đệm lệnh được thực thi trên GPU bằng trình điều khiển D3D12.

Nguồn: opennet.ru

Thêm một lời nhận xét