рдХреЛрд▓рд╛рдмреЛрд░рд╛ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕рдЪреНрдпрд╛ рд╡рд░ OpenCL рдЖрдгрд┐ OpenGL рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЕреЕрдб-рдСрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ

рд╕рд╣рдпреЛрдЧ рдХрдВрдкрдиреА рд╕рд╛рджрд░ Mesa рд╕рд╛рдареА рдирд╡реАрди Gallium рдбреНрд░рд╛рдЗрд╡реНрд╣рд░, рдЬреЗ DirectX 1.2 (D3.3D12) рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕рдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА OpenCL 3 рдЖрдгрд┐ OpenGL 12 API рдЪреЗ рдХрд╛рд░реНрдп рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕реНрддрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ. рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд MIT рдкрд░рд╡рд╛рдиреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд.

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╢рд╛ рдЙрдкрдХрд░рдгрд╛рдВрд╡рд░ Mesa рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ рдЬреЗ OpenCL рдЖрдгрд┐ OpenGL рд▓рд╛ рдореВрд│ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реАрдд, рддрд╕реЗрдЪ D3D12 рд╡рд░ рдЪрд╛рд▓рдгреНрдпрд╛рд╕рд╛рдареА OpenGL/OpenCL рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдкреЛрд░реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рд╛рд░рдВрдн рдмрд┐рдВрджреВ рдореНрд╣рдгреВрди. GPU рдЙрддреНрдкрд╛рджрдХрд╛рдВрд╕рд╛рдареА, рдЙрдкрдкреНрд░рдгрд╛рд▓реА OpenCL рдЖрдгрд┐ OpenGL рд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдгреЗ рд╢рдХреНрдп рдХрд░рддреЗ, рдЬрд░ рдлрдХреНрдд D3D12 рд╕рдорд░реНрдерди рдЕрд╕рд▓реЗрд▓реЗ рдбреНрд░рд╛рдЗрд╡реНрд╣рд░реНрд╕ рдЙрдкрд▓рдмреНрдз рдЕрд╕рддреАрд▓.

рддрд╛рддреНрдХрд╛рд│ рдпреЛрдЬрдирд╛рдВрдордзреНрдпреЗ OpenCL 1.2 рдЖрдгрд┐ OpenGL 3.3 рдЪреНрдпрд╛ рд╕реБрд╕рдВрдЧрддрддрд╛ рдЪрд╛рдЪрдгреНрдпрд╛ рдкреВрд░реНрдг рдЙрддреНрддреАрд░реНрдг рд╣реЛрдгреЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╣ рд╕реБрд╕рдВрдЧрддрддрд╛ рддрдкрд╛рд╕рдгреЗ рдЖрдгрд┐ Mesa рдЪреНрдпрд╛ рдореБрдЦреНрдп рд░рдЪрдиреЗрдд рдШрдбрд╛рдореЛрдбреАрдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдХрд░рдгреЗ рд╣реЗ рдЖрд╣реЗ. рд╡рд┐рдХрд╛рд╕ рдорд╛рдпрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдЕрднрд┐рдпрдВрддрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╣ рд╕рдВрдпреБрдХреНрддрдкрдгреЗ рдЪрд╛рд▓рддреЗ рдЙрдШрдбрд╛ рд╕рд╛рдзрдиреЗ D3D11On12 D3D11 рд╡рд░реВрди D3D12 рдЖрдгрд┐ рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рдЧреЗрдо рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА D3D12 рднрд╛рд╖рд╛рдВрддрд░ рд╕реНрддрд░, рдЬреЗ D3D12 рдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рдорд╛рдирдХ рдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╣ рд▓рд╛рдЧреВ рдХрд░рддреЗ.

рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ рдЧреЕрд▓рд┐рдпрдо рдбреНрд░рд╛рдпрд╡реНрд╣рд░, рдУрдкрдирд╕реАрдПрд▓ рдХрдВрдкрд╛рдЗрд▓рд░, рдУрдкрдирд╕реАрдПрд▓ рд░рдирдЯрд╛рдЗрдо рдЖрдгрд┐ рдПрдирдЖрдпрдЖрд░-рдЯреВ-рдбреАрдПрдХреНрд╕рдЖрдпрдПрд▓ рд╢реЗрдбрд░ рдХрдВрдкрд╛рдЗрд▓рд░рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ, рдЬреЗ рдореЗрд╕рд╛рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдПрдирдЖрдпрдЖрд░ рд╢реЗрдбрд░реНрд╕рдЪреЗ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдбреАрдПрдХреНрд╕рдЖрдпрдПрд▓ (рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд▓рдБрдЧреНрд╡реЗрдЬ) рдмрд╛рдпрдирд░реА рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ, рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 12 рдордзреНрдпреЗ рд╕рдорд░реНрдерд┐рдд рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд LLVM 3.7 рдмрд┐рдЯрдХреЛрдб (рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ рд╢реЗрдбрд░ рдХрдВрдкрд╛рдпрд▓рд░ Microsoft рдХрдбреВрди рдореВрд▓рдд: LLVM 3.7 рдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд╛рдЯрд╛ рдЖрд╣реЗ). OpenCL рдХрдВрдкрд╛рдпрд▓рд░ LLVM рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рд╕рд╛рдзрдирд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ SPIRV-LLVM.

рдУрдкрдирд╕реАрдПрд▓ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрд╕рд╣ рд╕реНрддреНрд░реЛрдд LLVM рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд╕реНрдпреВрдбреЛрдХреЛрдб (LLVM IR) рдордзреНрдпреЗ рдХреНрд▓реЕрдВрдЧ рд╡рд╛рдкрд░реВрди рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдЬреЗ рдирдВрддрд░ SPIR-V рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ OpenCL рдХрд░реНрдирд▓рдЪреНрдпрд╛ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рдирдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. SPIR-V рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рдирдордзреАрд▓ рдХреЛрд░ Mesa рдордзреНрдпреЗ рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, NIR рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рднрд╛рд╖рд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ DXIL рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдХреЙрдореНрдкреНрдпреБрдЯ рд╢реЗрдбрд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА NIR-рдЯреВ-DXIL рд▓рд╛ рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 12-рдЖрдзрд╛рд░рд┐рдд рд░рдирдЯрд╛рдЗрдо рд╡рд╛рдкрд░реВрди GPU рд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп.
рдХреНрд▓реЛрд╡реНрд╣рд░рдРрд╡рдЬреА, рдореЗрд╕рд╛ рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реА рдУрдкрдирд╕реАрдПрд▓ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА, рдПрдХ рдирд╡реАрди рдУрдкрдирд╕реАрдПрд▓ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЖрд╣реЗ, рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 12 API рдордзреНрдпреЗ рдЕрдзрд┐рдХ рдереЗрдЯ рд░реВрдкрд╛рдВрддрд░рдгрд╛рдВрдирд╛ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рдХреЛрд▓рд╛рдмреЛрд░рд╛ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕рдЪреНрдпрд╛ рд╡рд░ OpenCL рдЖрдгрд┐ OpenGL рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЕреЕрдб-рдСрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ

рдУрдкрдирд╕реАрдПрд▓ рдЖрдгрд┐ рдУрдкрдирдЬреАрдПрд▓ рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕ рдореЗрд╕рд╛рдордзреНрдпреЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЧреЕрд▓рд┐рдпрдо рдЗрдВрдЯрд░рдлреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдУрдкрдирдЬреАрдПрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрдкрд╢реАрд▓рд╛рдВрдордзреНрдпреЗ рди рдЬрд╛рддрд╛ рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рдЖрдзреБрдирд┐рдХ GPUs рд╡рд░ рдЪрд╛рд▓рдгрд╛рд▒реНрдпрд╛ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕рдЪреНрдпрд╛ рдЕрдЧрджреА рдЬрд╡рд│ OpenGL рдХреЙрд▓реНрд╕рдЪреЗ рднрд╛рд╖рд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд. рдЧреЕрд▓рд┐рдпрдо рдбреНрд░рд╛рдпрд╡реНрд╣рд░, OpenGL рдХрдорд╛рдВрдб рд╕реНрд╡реАрдХрд╛рд░рддреЛ рдЖрдгрд┐ NIR-to-DXIL рдЯреНрд░рд╛рдиреНрд╕рд▓реЗрдЯрд░ рд╡рд╛рдкрд░рдд рдЕрд╕рддрд╛рдирд╛
рдХрдорд╛рдВрдб рдмрдлрд░ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддреЗ рдЬреЗ D3D12 рдбреНрд░рд╛рдЗрд╡реНрд╣рд░ рд╡рд╛рдкрд░реВрди GPU рд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛