์ฝ๋ผ๋ณด ํ์ฌ
์ ์๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ฉด OpenCL ๋ฐ OpenGL์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๋ ์ฅ์น์์ Mesa๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ OpenGL/OpenCL ์์ฉ ํ๋ก๊ทธ๋จ์ D3D12 ์์์ ์คํํ๊ธฐ ์ํ ์์์ ์ผ๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. GPU ์ ์กฐ์ ์ฒด์ ๊ฒฝ์ฐ D3D12๋ฅผ ์ง์ํ๋ ๋๋ผ์ด๋ฒ๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ํ์ ์์คํ ์ ํตํด OpenCL ๋ฐ OpenGL์ ๋ํ ์ง์์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ฆ๊ฐ์ ์ธ ๊ณํ ์ค์๋ OpenCL 1.2 ๋ฐ OpenGL 3.3์ ํธํ์ฑ ํ
์คํธ๋ฅผ ์์ ํ ํต๊ณผํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์
๊ณผ์ ํธํ์ฑ์ ํ์ธํ๊ณ , Mesa์ ์ฃผ์ ๊ตฌ์ฑ์ ๊ฐ๋ฐ ๋ด์ฉ์ ํฌํจ์ํค๋ ๊ฒ์ด ์์ต๋๋ค. ๊ฐ๋ฐ์ Microsoft ์์ง๋์ด์ ๊ณต๋์ผ๋ก ์ํ๋ฉ๋๋ค.
๊ตฌํ์๋ Gallium ๋๋ผ์ด๋ฒ, OpenCL ์ปดํ์ผ๋ฌ, OpenCL ๋ฐํ์ ๋ฐ NIR-DXIL ์
ฐ์ด๋ ์ปดํ์ผ๋ฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด๋ Mesa์์ ์ฌ์ฉ๋๋ NIR ์
ฐ์ด๋์ ์ค๊ฐ ํํ์ DirectX 12์์ ์ง์๋๊ณ ๊ธฐ๋ฐ์ผ๋ก ํ๋ DXIL(DirectX Intermediate Language) ๋ฐ์ด๋๋ฆฌ ํ์์ผ๋ก ๋ณํํฉ๋๋ค. LLVM 3.7 ๋นํธ์ฝ๋(
OpenCL ํ์ฅ์ด ํฌํจ๋ ์์ค๋ clang์ ์ฌ์ฉํ์ฌ LLVM IR(์ค๊ฐ ์์ฌ ์ฝ๋)๋ก ์ปดํ์ผ๋ ๋ค์ SPIR-V ํ์์ OpenCL ์ปค๋์ ์ค๊ฐ ํํ์ผ๋ก ๋ณํ๋ฉ๋๋ค. SPIR-V ํํ์ ์ฝ์ด๋ Mesa๋ก ์ ๋ฌ๋์ด NIR ํ์์ผ๋ก ๋ณํ๋๊ณ ์ต์ ํ๋์ด NIR-DXIL๋ก ์ ๋ฌ๋์ด DirectX 12 ๊ธฐ๋ฐ ๋ฐํ์์ ์ฌ์ฉํ๋ GPU์์ ์คํํ๊ธฐ์ ์ ํฉํ DXIL ํ์์ ์ปดํจํ
์
ฐ์ด๋๋ฅผ ์์ฑํฉ๋๋ค.
Mesa์์ ์ฌ์ฉ๋๋ OpenCL ๊ตฌํ์ธ Clover ๋์ DirectX 12 API๋ก ๋ ์ง์ ์ ์ผ๋ก ๋ณํํ ์ ์๋ ์๋ก์ด OpenCL ๋ฐํ์์ด ์ ์๋์์ต๋๋ค.
OpenCL ๋ฐ OpenGL ๋๋ผ์ด๋ฒ๋ Mesa์์ ์ ๊ณต๋๋ Gallium ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋น๋ฉ๋๋ค. ์ด๋ฅผ ํตํด OpenGL ๊ด๋ จ ์ธ๋ถ ์ ๋ณด๋ฅผ ์
๋ ฅํ์ง ์๊ณ ๋ ๋๋ผ์ด๋ฒ๋ฅผ ์์ฑํ๊ณ ๋ณธ์ง์ ์ผ๋ก OpenGL ํธ์ถ์ ์ต์ GPU๊ฐ ์๋ํ๋ ๊ทธ๋ํฝ ๊ธฐ๋ณธ ์์์ ๋ ๊ฐ๊น๊ฒ ๋ณํํ ์ ์์ต๋๋ค. Gallium ๋๋ผ์ด๋ฒ๋ OpenGL ๋ช
๋ น์ ํ์ฉํ๊ณ NIR-DXIL ๋ณํ๊ธฐ๋ฅผ ์ฌ์ฉํ ๋
D3D12 ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ GPU์์ ์คํ๋๋ ๋ช
๋ น ๋ฒํผ๋ฅผ ์์ฑํฉ๋๋ค.
์ถ์ฒ : opennet.ru