Valve нь Линукс дээр Windows тоглоом ажиллуулахад зориулагдсан Proton 4.11-ийг гаргасан

Valve компани Нийтлэгдсэн төслийн шинэ салбар Протон 4.11, Wine төслийн бүтээн байгуулалтад үндэслэсэн бөгөөд Windows-д зориулж бүтээсэн, Линукс дээрх Steam каталогид танилцуулсан тоглоомын програмуудыг эхлүүлэхэд чиглэгдсэн. Төслийн хөгжүүлэлт тархалт BSD лицензийн дагуу. Тэд бэлэн болсон тул Proton-д боловсруулсан өөрчлөлтүүд нь анхны Wine болон DXVK, vkd3d зэрэг холбогдох төслүүд рүү шилждэг.

Proton нь Steam Linux клиент дээр зөвхөн Windows үйлдлийн системтэй тоглоомын програмуудыг шууд ажиллуулах боломжийг олгодог. Багц нь DirectX 10/11-ийн хэрэгжилтийг агуулдаг (үндсэн DXVK) ба 12 (үндсэн vkd3d), Vulkan API-д DirectX дуудлага хийх замаар тоглоомын удирдлагыг сайжруулж, тоглоомонд дэмждэг дэлгэцийн нягтралаас үл хамааран бүтэн дэлгэцийн горимыг ашиглах боломжийг олгодог. Анхны Wine-тай харьцуулахад олон урсгалтай тоглоомуудын гүйцэтгэл нь засваруудыг ашигласны ачаар мэдэгдэхүйц нэмэгдсэн "синхрончлол"(Eventfd Синхрончлол) эсвэл "futex/fsync".

Үндсэн Протон 4.11-ийн өөрчлөлт:

  • Wine 4.11 кодын баазтай синхрончлол хийгдсэн бөгөөд үүнээс 3300 гаруй өөрчлөлтийг шилжүүлсэн (өмнөх салбар нь дарс 4.2 дээр суурилсан). Proton 154-ын 4.2 нөхөөсийг урсгал руу шилжүүлсэн бөгөөд одоо үндсэн Wine багцад багтсан болно;
  • Futex() системийн дуудлагад суурилсан синхрончлолын командуудад туршилтын дэмжлэг нэмсэн бөгөөд энэ нь esync-тэй харьцуулахад CPU-ийн ачааллыг бууруулдаг. Нэмж дурдахад, шинэ хэрэгжилт нь ашиглах шаардлагатай асуудлуудыг шийддэг тусгай тохиргоо синхрончлол болон боломжтой файлын тодорхойлогчдын шавхагдах боломжтой.

    Хийж буй ажлын мөн чанар нь урсгалын санг оновчтой синхрончлоход шаардлагатай боломжуудтай Линуксийн цөм дэх стандарт futex() системийн дуудлагын функцийг өргөжүүлэх явдал юм. Proton-д шаардлагатай FUTEX_WAIT_MULTIPLE тугийг дэмжих засварууд аль хэдийн бэлэн болсон байна шилжүүлсэн Линуксийн үндсэн цөмд оруулахын тулд болон glibc. Бэлтгэсэн өөрчлөлтүүд нь үндсэн цөмд хараахан ороогүй байгаа тул одоогоор шаардлагатай байна байгуулах эдгээр командуудыг дэмждэг тусгай цөм;

    Valve нь Линукс дээр Windows тоглоом ажиллуулахад зориулагдсан Proton 4.11-ийг гаргасан

  • Давхарга DXVK (Vulkan API дээр DXGI, Direct3D 10 болон Direct3D 11-ийн хэрэгжилт) хувилбарт шинэчлэгдсэн. 1.3болон D9VK (Vulkan дээрх Direct3D 9-ийн туршилтын хэрэгжилт) 0.13f хувилбар хүртэл. Proton-д D9VK дэмжлэгийг идэвхжүүлэхийн тулд PROTON_USE_D9VK тугийг ашиглана уу;
  • Одоогийн дэлгэцийн сэргээх хурдыг тоглоом руу дамжуулдаг;
  • Хулганы фокус болон цонхны менежментийг зохицуулах засварууд хийгдсэн;
  • Зарим тоглоомуудад, ялангуяа Unity хөдөлгүүр дээр суурилсан тоглоомуудад тохиолддог оролтын хоцрогдол, чичиргээний дэмжлэгтэй холбоотой асуудлуудыг зассан;
  • OpenVR SDK-ийн хамгийн сүүлийн хувилбарын дэмжлэгийг нэмсэн;
  • DirectX дууны сангуудыг хэрэгжүүлсэн FAudio бүрэлдэхүүн хэсгүүд (API XAudio2, X3DAudio, XAPO болон XACT3) 19.07-нд гарахаар шинэчлэгдсэн;
  • GameMaker дээрх тоглоомуудын сүлжээний дэд системтэй холбоотой асуудлууд шийдэгдсэн;
  • Олон Wine модулийг одоо Линукс номын сангийн оронд Windows PE файл хэлбэрээр бүтээжээ. Энэ чиглэлийн ажил урагшлахын хэрээр PE ашиглах нь зарим DRM болон хууран мэхлэлтийн эсрэг системд туслах болно. Хэрэв та захиалгат Proton бүтээц ашигладаг бол PE файлуудыг бүтээхийн тулд Vagrant виртуал машиныг дахин үүсгэх шаардлагатай болно.

Valve-ийн засваруудыг Линуксийн үндсэн цөмд нэвтрүүлэхээс өмнө esync-ийн оронд futex()-г ашиглахын тулд багц нөхөөсүүдэд хэрэгжсэн урсгалын синхрончлолын санд дэмжлэг үзүүлэх тусгай цөм суулгах шаардлагатай. fsync. AUR дахь Arch Linux-ийн хувьд аль хэдийн нийтэлсэн fsync засваруудаар эмхэтгэсэн бэлэн цөмийн багц. Ubuntu 18.04 болон 19.04 дээр та linux-mfutex-valve туршилтын цөмийн PPA-г ашиглаж болно (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);

Хэрэв танд fsync дэмжлэгтэй цөм байгаа бол Proton 4.11-ийг ажиллуулахад консол "fsync: ажиллаж байна" гэсэн мессежийг харуулах болно. Та PROTON_NO_FSYNC=1 тугийг ашиглан fsync-ийг хүчээр унтрааж болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх