Janë publikuar rezultatet e një eksperimenti për organizimin e nisjes së Linux-it brenda një hapësire 3D virtuale të një loje online shumëlojtëshe VRChat, e cila lejon ngarkimin e modeleve 3D me shaderat e saj. Për realizimin e idesë së planifikuar, u krijua një emulator i arkitekturës RISC-V, që ekzekutohet në anën e GPU si një shader piksel (fragment). (VRChat nuk mbështet shaderat e llogaritësve dhe UAV). Kodi i emulatorit është publikuar nën licencën MIT.
Në bazë të emulatorit është një realizim në gjuhën C, ku për krijimin e tij janë përdorur njohuritë nga një emulator minimalist riscv-rust, i zhvilluar në gjuhën Rust. Kodi i përgatitur në gjuhën C transponohet në një shader pikseli në gjuhën HLSL, i përshtatshëm për ngarkim në VRChat. Emulatori ofron mbështetje të plotë për arkitekturën e setit të instrukcioneve rv32imasu, bllokun e kontrollit të kujtesës SV32 dhe një grup minimal periferikësh (UART dhe timer). Kapacitetet e përgatitura janë të mjaftueshme për ngarkimin e bërthamës Linux 5.13.5 dhe mjedisit bazë të komandave BusyBox, me të cilin mund të ndërveprohet drejtpërdrejt nga bota virtuale VRChat.


Emulatori Ă«shtĂ« realizuar nĂ« shader nĂ« formĂ«n e njĂ« teksture dinamike tĂ« personalizuar (Unity Custom Render Texture), e plotĂ«suar me skriptet Udon tĂ« ofruara pĂ«r VRChat, tĂ« angazhuara pĂ«r tĂ« kontrolluar emulatorin gjatĂ« ekzekutimit tĂ« tij. PĂ«rmbajtja e memorie operative dhe gjendja e procesorit tĂ« sistemit tĂ« emuluar ruhen nĂ« formĂ«n e njĂ« teksture me pĂ«rmasa 2048Ă2048 piksel. Procesori i emuluar punon me frekuencĂ« 250 kHz. PĂ«rveç Linux-it, nĂ« emulator mund tĂ« startohet edhe Micropython.

Për organizimin e ruajtjes së përhershme të të dhënave me mbështetje për lexim dhe shkruajtur aplikohet një truk, i lidhur me përdorimin e objektit Camera, i lidhur me një zonë katrore, e gjeneruar nga shaderi, dhe drejtimin e daljeve të teksturës së vizatuar në hyrje të shaderit. Kështu, çdo piksel i shkruar gjatë ekzekutimit të shaderit të pikselit mund të lexohet gjatë përpunimit të kadrit të ardhshëm.
Me përdorimin e shaderave të pikselit, për çdo piksel të teksteve startohet një instancë e veçantë e shaderit. Ky veçori e bën realizimin ndjeshëm më kompleks dhe kërkon koordinim të veçantë të gjendjes së tërë sistemit të emuluar dhe përshtatjen e pozita së pikselit të procesuar me gjendjen e koduar në të CPU ose përmbajtjen e RAM-it të sistemit të emuluar (çdo piksel mund të kodojë 128 bit informacion). Kodi i shaderit në këtë rast kërkon përfshirjen e një numri të madh kontrollesh, për lehtësimin e realizimit të të cilave është angazhuar perl-preprocessor perlpp.

Burimi: opennet.ru
