Rust์—์„œ VGEM ๋“œ๋ผ์ด๋ฒ„ ์žฌ์ž‘์—…

Igalia์˜ Maรญra Canal์€ Rust์—์„œ VGEM(Virtual GEM Provider) ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. VGEM์€ ์•ฝ 400์ค„์˜ ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ์†Œํ”„ํŠธ์›จ์–ด ๋ž˜์Šคํ„ฐํ™” ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด LLVMpipe์™€ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด 3D ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ๋ฒ„ํผ ์•ก์„ธ์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•˜๋“œ์›จ์–ด์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” GEM(Graphics Execution Manager) ๋ฐฑ์—”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

VGEM์€ ์ปค๋„ ์ˆ˜์ค€์—์„œ ์‹คํ–‰๋˜๋Š” ๋‘ ๋ฒˆ์งธ Rust ๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ฒซ ๋ฒˆ์งธ๋Š” Apple M1/M2 ์นฉ์— ์‚ฌ์šฉ๋˜๋Š” Apple AGX GPU์šฉ Asahi DRM(Direct Rendering Manager) ๋“œ๋ผ์ด๋ฒ„์˜€์Šต๋‹ˆ๋‹ค). ๊ฐœ๋ฐœ์„ ์œ„ํ•ด์„œ๋Š” ํ”Œ๋žซํผ ์žฅ์น˜, XArray ์œ ํ˜• ๋ฐ DMA ์šธํƒ€๋ฆฌ์™€ ๊ฐ™์€ DMA ๊ด€๋ จ ์ถ”์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Rust ์ฝ”๋“œ์—์„œ ์ž‘๋™ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐ”์ธ๋”ฉ์„ ์ƒ์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋“œ๋ผ์ด๋ฒ„๋Š” ๊ฑฐ์˜ ์ค€๋น„๋˜์—ˆ์œผ๋ฉฐ ๋‘ ๊ฐ€์ง€ ๊ฒ€์‚ฌ(vgem_slow ๋ฐ vgem_basic@unload)๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ IGT ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜์ง€๋งŒ IOCTL ์ง€์› ๊ฐœ์„ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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