Компанія Collabora
Запропонований драйвер дозволяє використовувати Mesa на пристроях, що спочатку не підтримують OpenCL і OpenGL, а також як стартову позицію для портування OpenGL/OpenCL-додатків для роботи поверх D3D12. Для виробників GPU підсистема дає можливість надати підтримку OpenCL та OpenGL, за наявності драйверів лише за допомогою D3D12.
З найближчих планів відзначається досягнення повного проходження тестів на сумісність OpenCL 1.2 та OpenGL 3.3, перевірка сумісності з додатками та включення напрацювань до основного складу Mesa. Розробка ведеться спільно з інженерами Microsoft, що розвивають
Реалізація включає Gallium-драйвер, компілятор OpenCL, OpenCL runtime і компілятор шейдерів NIR-to-DXIL, що перетворює застосовується в Mesa проміжне представлення шейдерів NIR в бінарний формат DXIL (DirectX Intermediate Language), що підтримується в DirectX 12 і заснований на біт.
Вихідні тексти з розширеннями 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.
OpenCL і OpenGL драйвери підготовлені з використанням інтерфейсу Gallium, що надається в Mesa, що дозволяє при створенні драйверів не заглиблюватися в специфічні для OpenGL деталі і транслювати виклики OpenGL по суті, ближчі до графічних примітивів, якими оперують сучасні GPU. Gallium-драйвер приймає команди OpenGL і при залученні транслятора NIR-to-DXIL
формує буфери команд, що виконуються на GPU, використовуючи драйвер D3D12.
Джерело: opennet.ru