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 ΠΈ основанный Π½Π° Π±ΠΈΡ‚ΠΊΠΎΠ΄Π΅ LLVM 3.7 (DirectX Shader Compiler ΠΎΡ‚ 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 c использованиСм runtime Π½Π° Π±Π°Π·Π΅ DirectX 12.
ВмСсто Clover, примСняСмой Π² Mesa Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ OpenCL, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ OpenCL runtime, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ большС прямых ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² API DirectX 12.

Collabora Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ надстройку для Ρ€Π°Π±ΠΎΡ‚Ρ‹ OpenCL ΠΈ OpenGL ΠΏΠΎΠ²Π΅Ρ€Ρ… DirectX

OpenCL ΠΈ OpenGL Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ с использованиСм прСдоставляСмого Π² Mesa интСрфСйса Gallium, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈ создании Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π΅ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² спСцифичныС для OpenGL Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ OpenGL Π² сущности, Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΊ графичСским ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ соврСмСнныС GPU. Gallium-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ OpenGL ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ транслятора NIR-to-DXIL
Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΡƒΡ„Π΅Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° GPU, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ D3D12.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru