10์„ธ๋Œ€ Mali GPU์šฉ ์˜คํ”ˆ ์†Œ์Šค ๋“œ๋ผ์ด๋ฒ„ Panthor๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Collabora๋Š” CSF(Command Stream Frontend) ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” 310์„ธ๋Œ€ Mali GPU(G510, G710, G6.10)์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ์˜คํ”ˆ ํŒฌํ„ฐ ๋“œ๋ผ์ด๋ฒ„์˜ ์ค€๋น„ ์ƒํƒœ๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋“œ๋ผ์ด๋ฒ„ ๊ธฐ๋Šฅ์€ ์ผ๋ถ€ ๋“œ๋ผ์ด๋ฒ„ ๊ธฐ๋Šฅ์„ ํŽŒ์›จ์–ด ์ธก์œผ๋กœ ์ „์†กํ•˜์—ฌ ๋ถ€ํ•˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. CPU์—์„œ ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. DRM ๋“œ๋ผ์ด๋ฒ„(Direct Rendering Manager) panthor๊ฐ€ drm-misc ๋ธŒ๋žœ์น˜์— ์Šน์ธ๋˜์—ˆ์œผ๋ฉฐ Linux XNUMX ์ปค๋„์— ํฌํ•จ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋„ Mesa์—์„œ ์ฑ„ํƒ๋˜์—ˆ์œผ๋ฉฐ Mali GPU์šฉ panfrost Gallium ๋“œ๋ผ์ด๋ฒ„์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐจ์„ธ๋Œ€ Mali GPU์—์„œ๋Š” ์ž‘์—… ๊ด€๋ฆฌ์ž ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ CSF(Command Stream Frontend) ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋Š” ์ž‘์—… ์ฒด์ธ ์ „์†ก ๊ธฐ๋ฐ˜ ๋ชจ๋ธ ๋Œ€์‹  ๋ช…๋ น ์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์ด ์Šค์ผ€์ค„๋ง๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŽŒ์›จ์–ด ์ธก์˜ ๋ช…๋ น ์ŠคํŠธ๋ฆผ ๋Œ€๊ธฐ์—ด. ์Šค์ผ€์ค„๋Ÿฌ์˜ ์ž‘์—…์„ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด GPU์—๋Š” ๋ณ„๋„์˜ Cortex-M7 ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ, CSF ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ˆ˜ ๋ช…๋ น ์‹คํ–‰ ์žฅ์น˜(Command Execution Unit)๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ GPU๋กœ ์ž‘์—…์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์กฐ์ง์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” Panfrost DRM ๋“œ๋ผ์ด๋ฒ„์—์„œ CSF ๊ธฐ๋ฐ˜ Mali GPU์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋Š” ์ด๊ฒƒ์ด ๊ธฐ์กด ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํฌ๊ฒŒ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋ฉฐ CSF์˜ ๊ฒฝ์šฐ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ํ•ฉํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ ์ƒˆ ๋“œ๋ผ์ด๋ฒ„. Panhor ๋“œ๋ผ์ด๋ฒ„๋Š” ์™„์ „ํžˆ ์ƒˆ๋กœ์šด uAPI, ์ƒˆ๋กœ์šด ์ž‘์—… ์˜ˆ์•ฝ ๋…ผ๋ฆฌ ๋ฐ ์ƒˆ๋กœ์šด MMU/GPU-VA ์ œ์–ด ๋…ผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋“œ๋ผ์ด๋ฒ„๋Š” Panfrost์˜ ๊ธฐ์กด DRM ๋“œ๋ผ์ด๋ฒ„ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์ด ์ฝ”๋“œ์—์„œ ์ผ๋ฐ˜์ ์ธ ๋“œ๋ผ์ด๋ฒ„ ์ดˆ๊ธฐํ™”, ์ฃผํŒŒ์ˆ˜ ์ œ์–ด ๋ฐ ์ „์› ๊ด€๋ฆฌ ํŒจํ„ด์„ ์ฐจ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋“œ๋ผ์ด๋ฒ„ ๊ฐœ๋ฐœ์„ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ARM์ด ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜์—ฌ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ฝ”๋“œ ๊ฒ€ํ† ์— ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ช…์˜ ARM ์ง์›์ด Linux ์ปค๋„์˜ ๋“œ๋ผ์ด๋ฒ„ ๊ณต๋™ ์œ ์ง€๊ด€๋ฆฌ์ž๋กœ ์Šน์ง„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ OpenGL ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ค€๋น„๋˜๋ฉด ์ƒˆ๋กœ์šด Mali GPU์šฉ Vulkan ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๊ธฐ์กด Mali GPU์šฉ Vulkan ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ์ž‘์—…์— ์ค‘์ ์„ ๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ค€๋น„๋œ Panthor ๋“œ๋ผ์ด๋ฒ„๋Š” Rockchip RK3588 SoC๊ฐ€ ์žˆ๋Š” ๋ณด๋“œ์—์„œ GPU ์ง€์›์„ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. Collabora๋Š” ๋˜ํ•œ ์™„์ „ํžˆ ๊ฐœ๋ฐฉ๋œ ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์—ฌ Rockchip RK3588 ๊ธฐ๋ฐ˜ ๋ณด๋“œ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. Rockchip RK3588์˜ ๊ฒฝ์šฐ ๋…์  BL31 ๊ตฌ์„ฑ ์š”์†Œ(๋ถ€ํŠธ ๋กœ๋” ๋‹จ๊ณ„ 3.1)๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด Debian ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€์™€ ๊ฐœ๋ฐฉํ˜• ๋ถ€ํŠธ๋กœ๋”๊ฐ€ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€