Valve merilis Proton 4.11, suite untuk menjalankan game Windows di Linux

Perusahaan Katup ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° cabang proyek baru Proton 4.11, berdasarkan pengembangan proyek Wine dan bertujuan untuk memastikan peluncuran aplikasi game yang dibuat untuk Windows dan disajikan dalam katalog Steam di Linux. Perkembangan proyek sebaran di bawah lisensi BSD. Saat sudah siap, perubahan yang dikembangkan di Proton ditransfer ke Wine asli dan proyek terkait, seperti DXVK dan vkd3d.

Proton memungkinkan Anda menjalankan langsung aplikasi game khusus Windows di klien Steam Linux. Paket ini mencakup implementasi DirectX 10/11 (berdasarkan Dxvk) dan 12 (berdasarkan vkd3d), bekerja melalui terjemahan panggilan DirectX ke Vulkan API, memberikan peningkatan dukungan untuk pengontrol game dan kemampuan untuk menggunakan mode layar penuh terlepas dari resolusi layar yang didukung dalam game. Dibandingkan dengan Wine asli, performa game multi-thread telah meningkat secara signifikan berkat penggunaan patch"esync"(Sinkronisasi Acarafd) atau "futex/fsync".

Utama perubahan pada Proton 4.11:

  • Sinkronisasi dengan basis kode Wine 4.11 telah dilakukan, yang darinya lebih dari 3300 perubahan telah ditransfer (cabang sebelumnya didasarkan pada wine 4.2). 154 patch dari Proton 4.2 telah dipindahkan ke upstream dan sekarang disertakan dalam paket Wine utama;
  • Menambahkan dukungan eksperimental untuk primitif sinkronisasi berdasarkan panggilan sistem futex(), yang mengurangi beban CPU dibandingkan dengan esync. Selain itu, implementasi baru memecahkan masalah kebutuhan penggunaan pengaturan khusus untuk esync dan kemungkinan habisnya deskriptor file yang tersedia.

    Inti dari pekerjaan yang dilakukan adalah memperluas fungsionalitas panggilan sistem futex() standar di kernel Linux dengan kemampuan yang diperlukan untuk sinkronisasi optimal kumpulan thread. Patch dengan dukungan untuk flag FUTEX_WAIT_MULTIPLE yang diperlukan untuk Proton sudah ada ditransfer untuk dimasukkan dalam kernel Linux utama dan glibc. Perubahan yang disiapkan belum disertakan dalam kernel utama, jadi saat ini diperlukan membangun kernel khusus dengan dukungan untuk primitif ini;

    Valve merilis Proton 4.11, suite untuk menjalankan game Windows di Linux

  • Interlayer Dxvk (implementasi DXGI, Direct3D 10 dan Direct3D 11 di atas Vulkan API) diperbarui ke versi 1.3Dan D9VK (implementasi eksperimental Direct3D 9 di atas Vulkan) hingga versi 0.13f. Untuk mengaktifkan dukungan D9VK di Proton, gunakan flag PROTON_USE_D9VK;
  • Kecepatan refresh monitor saat ini ditransmisikan ke game;
  • Perbaikan telah dilakukan untuk menangani fokus mouse dan manajemen jendela;
  • Memperbaiki input lag dan masalah dukungan getaran pada joystick yang terjadi di beberapa game, terutama pada game berbasis mesin Unity;
  • Menambahkan dukungan untuk OpenVR SDK versi terbaru;
  • Komponen FAudio dengan implementasi perpustakaan suara DirectX (API XAudio2, X3DAudio, XAPO dan XACT3) telah diperbarui ke rilis 19.07;
  • Masalah dengan subsistem jaringan pada game di GameMaker telah teratasi;
  • Banyak modul Wine sekarang dibuat sebagai file Windows PE, bukan perpustakaan Linux. Seiring kemajuan pekerjaan di bidang ini, penggunaan PE akan membantu beberapa sistem DRM dan anti-cheat. Jika Anda menggunakan build Proton khusus, kemungkinan besar Anda perlu membuat ulang mesin virtual Vagrant untuk membuat file PE.

Sebelum patch Valve diadopsi ke dalam kernel Linux utama, penggunaan futex() alih-alih esync memerlukan instalasi kernel khusus dengan dukungan untuk kumpulan sinkronisasi thread yang diimplementasikan dalam serangkaian patch fsync. Untuk Arch Linux sudah ada di AUR diterbitkan paket kernel siap pakai yang dikompilasi dengan patch fsync. Di Ubuntu 18.04 dan 19.04, Anda dapat menggunakan PPA kernel eksperimental linux-mfutex-valve (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);

Jika Anda memiliki kernel dengan dukungan fsync, saat Anda menjalankan Proton 4.11, konsol akan menampilkan pesan β€œfsync: up and running”. Anda dapat mematikan paksa fsync menggunakan tanda PROTON_NO_FSYNC=1.

Sumber: opennet.ru

Tambah komentar