Kiigaji cha RISC-V katika umbo la pikseli shader inayokuruhusu kuendesha Linux katika VRChat.

Matokeo ya jaribio la kuandaa uzinduzi wa Linux ndani ya nafasi pepe ya 3D ya mchezo wa mtandaoni wa VRChat wa wachezaji wengi, ambao huruhusu upakiaji wa miundo ya 3D kwa vivuli vyao wenyewe, yamechapishwa. Ili kutekeleza wazo lililoundwa, emulator ya usanifu wa RISC-V iliundwa, kutekelezwa kwa upande wa GPU kwa namna ya shader ya pixel (fragment) (VRChat haitumii vivuli vya computational na UAV). Nambari ya emulator inachapishwa chini ya leseni ya MIT.

Emulator inategemea utekelezaji katika lugha ya C, uundaji ambao, kwa upande wake, ulitumia maendeleo ya emulator minimalistic riscv-rust, iliyokuzwa katika lugha ya Rust. Msimbo wa C uliotayarishwa hutafsiriwa kuwa kipenyo cha pikseli katika HLSL, kinachofaa kupakiwa kwenye VRChat. Emulator hutoa usaidizi kamili kwa usanifu wa seti ya maagizo ya rv32imasu, kitengo cha usimamizi wa kumbukumbu cha SV32, na seti ndogo ya vifaa vya pembeni (UART na kipima muda). Uwezo ulioandaliwa ni wa kutosha kupakia Linux kernel 5.13.5 na mazingira ya msingi ya mstari wa amri ya BusyBox, ambayo unaweza kuingiliana moja kwa moja kutoka kwa ulimwengu wa VRChat.

Kiigaji cha RISC-V katika umbo la pikseli shader inayokuruhusu kuendesha Linux katika VRChat.
Kiigaji cha RISC-V katika umbo la pikseli shader inayokuruhusu kuendesha Linux katika VRChat.

Emulator inatekelezwa katika shader kwa namna ya muundo wake unaobadilika (Unity Custom Render Texture), ikiongezewa na hati za Udon zinazotolewa kwa VRChat, zinazotumiwa kudhibiti emulator wakati wa utekelezaji wake. Yaliyomo kwenye RAM na hali ya kichakataji cha mfumo ulioigwa huhifadhiwa katika mfumo wa umbile, saizi 2048x2048 kwa saizi. Processor iliyoigwa inafanya kazi kwa mzunguko wa 250 kHz. Mbali na Linux, emulator pia inaweza kuendesha Micropython.

Kiigaji cha RISC-V katika umbo la pikseli shader inayokuruhusu kuendesha Linux katika VRChat.

Ili kuunda hifadhi ya data inayoendelea kwa usaidizi wa kusoma na kuandika, hila ni kutumia kitu cha Kamera kilichounganishwa kwenye eneo la mstatili linalozalishwa na shader na kuelekeza matokeo ya unamu uliotolewa kwa ingizo la shader. Kwa njia hii, pikseli yoyote iliyoandikwa wakati wa utekelezaji wa shader ya pixel inaweza kusomwa wakati fremu inayofuata inachakatwa.

Wakati wa kutumia vivuli vya pikseli, mfano tofauti wa shader huzinduliwa sambamba kwa kila pikseli ya unamu. Kipengele hiki kinatatiza sana utekelezaji na kinahitaji uratibu tofauti wa hali ya mfumo mzima ulioigwa na kulinganisha nafasi ya pikseli iliyochakatwa na hali ya CPU iliyosimbwa ndani yake au yaliyomo kwenye RAM ya mfumo ulioigwa (kila pikseli inaweza kusimba 128). habari kidogo). Nambari ya shader inahitaji kujumuishwa kwa idadi kubwa ya hundi, ili kurahisisha utekelezaji ambao perl preprocessor perlpp ilitumika.



Chanzo: opennet.ru

Kuongeza maoni