Collabora розвиває надбудову для роботи OpenCL та OpenGL поверх DirectX

Компанія Collabora представила новий Gallium-драйвер для Mesa, що реалізує прошарок для організації роботи API OpenCL 1.2 та OpenGL 3.3 поверх драйверів з підтримкою DirectX 12 (D3D12). Код опубліковано під ліцензією MIT.

Запропонований драйвер дозволяє використовувати Mesa на пристроях, що спочатку не підтримують OpenCL і OpenGL, а також як стартову позицію для портування OpenGL/OpenCL-додатків для роботи поверх D3D12. Для виробників GPU підсистема дає можливість надати підтримку OpenCL та OpenGL, за наявності драйверів лише за допомогою D3D12.

З найближчих планів відзначається досягнення повного проходження тестів на сумісність OpenCL 1.2 та OpenGL 3.3, перевірка сумісності з додатками та включення напрацювань до основного складу Mesa. Розробка ведеться спільно з інженерами Microsoft, що розвивають відкритий інструментарій D3D11On12 для перекладу ігор з D3D11 на D3D12 та бібліотеку D3D12TranslationLayer, що реалізує типові графічні примітиви поверх D3D12

Реалізація включає Gallium-драйвер, компілятор OpenCL, OpenCL runtime і компілятор шейдерів NIR-to-DXIL, що перетворює застосовується в Mesa проміжне представлення шейдерів NIR в бінарний формат DXIL (DirectX Intermediate Language), що підтримується в DirectX 12 і заснований на біт.Компілятор шейдерів DirectX від Microsoft насправді розширений форк LLVM 3.7). Компілятор OpenCL підготовлений на основі напрацювань проекту LLVM та інструментарію SPIRV-LLVM.

Вихідні тексти з розширеннями OpenCL компілюються за допомогою clang у проміжний псевдокод LLVM (LLVM IR), який потім перетворюється на проміжне представлення OpenCL-ядер у форматі SPIR-V. Ядра в поданні SPIR-V передаються Mesa, транслюються у формат NIR, оптимізуються і передаються NIR-to-DXIL для генерації обчислювальних шейдерів у форматі DXIL, придатному для виконання на GPU з використанням runtime на базі DirectX 12.
Замість Clover, що застосовується в Mesa реалізації OpenCL, запропонований новий OpenCL runtime, що дозволяє більше прямих перетворень в API DirectX 12.

Collabora розвиває надбудову для роботи OpenCL та OpenGL поверх DirectX

OpenCL і OpenGL драйвери підготовлені з використанням інтерфейсу Gallium, що надається в Mesa, що дозволяє при створенні драйверів не заглиблюватися в специфічні для OpenGL деталі і транслювати виклики OpenGL по суті, ближчі до графічних примітивів, якими оперують сучасні GPU. Gallium-драйвер приймає команди OpenGL і при залученні транслятора NIR-to-DXIL
формує буфери команд, що виконуються на GPU, використовуючи драйвер D3D12.

Джерело: opennet.ru

Додати коментар або відгук