Binaan Firefox setiap malam kini termasuk sokongan WebGPU

Π’ malam Firefox membina muncul sokongan spesifikasi WebGPU, yang menyediakan antara muka pengaturcaraan untuk pemprosesan grafik 3D dan pengkomputeran sebelah GPU, secara konsepnya serupa dengan API Vulkan, Logam ΠΈ Direct3d 12. Spesifikasi sedang dibangunkan oleh Mozilla, Google, Apple, Microsoft dan ahli komuniti di kerja berkumpulan, dicipta oleh organisasi W3C.

Matlamat utama WebGPU adalah untuk menyediakan antara muka pengaturcaraan yang selamat, mesra pengguna, mudah alih dan berprestasi tinggi untuk platform Web untuk memanfaatkan teknologi dan keupayaan grafik 3D yang disediakan oleh API grafik sistem moden, seperti Direct3D 12 pada Windows, Metal. pada macOS dan Vulkan pada Linux. Dari segi konsep, WebGPU berbeza daripada WebGL dengan cara yang sama seperti Vulkan berbeza daripada OpenGL, dan pada masa yang sama ia tidak berdasarkan API grafik tertentu, tetapi merupakan lapisan universal yang umumnya menggunakan primitif peringkat rendah yang sama yang terdapat dalam Vulkan, Logam dan Direct3D.

WebGPU menyediakan aplikasi JavaScript dengan kawalan peringkat rendah ke atas organisasi, pemprosesan dan penghantaran arahan kepada GPU, mengurus sumber yang berkaitan, memori, penimbal, objek tekstur dan pelorek grafik yang disusun. Pendekatan ini membolehkan anda mencapai prestasi yang lebih tinggi untuk aplikasi grafik dengan mengurangkan kos overhed dan meningkatkan kecekapan bekerja dengan GPU.

WebGPU memungkinkan untuk mencipta projek 3D kompleks lengkap untuk Web yang berfungsi tidak lebih buruk daripada program kendiri yang mengakses terus Vulkan, Metal atau Direct3D, tetapi tidak terikat pada platform tertentu. WebGPU juga menyediakan keupayaan tambahan apabila mengalihkan program grafik asli ke dalam bentuk yang didayakan web melalui penggunaan teknologi WebAssembly. Selain grafik 3D, WebGPU juga meliputi keupayaan yang berkaitan dengan pemuatan pengiraan ke GPU dan menyokong pembangunan shader. Shaders boleh dibuat dalam Bahasa Lorek WebGPU atau dinyatakan dalam format SPIR-V perantaraan, dan kemudian diterjemahkan ke dalam bahasa peneduh yang disokong oleh pemacu semasa.

WebGPU menggunakan pengurusan sumber yang berasingan, kerja persediaan dan penghantaran arahan kepada GPU (dalam WebGL, satu objek bertanggungjawab untuk semuanya sekaligus). Tiga konteks berasingan disediakan:
GPUDevice untuk mencipta sumber seperti tekstur dan penimbal; GPUCommandEncoder untuk pengekodan perintah individu, termasuk peringkat pemaparan dan pengiraan; GPUCommandBuffer akan dibariskan untuk pelaksanaan pada GPU. Hasilnya boleh dipaparkan dalam kawasan yang dikaitkan dengan satu atau lebih elemen kanvas, atau diproses tanpa output (contohnya, semasa menjalankan tugas pengiraan). Mengasingkan peringkat memudahkan untuk mengasingkan penciptaan sumber dan operasi penyediaan kepada pengendali yang berbeza yang boleh dijalankan pada urutan yang berbeza.

Perbezaan kedua antara WebGPU dan WebGL ialah pendekatan yang berbeza untuk mengendalikan keadaan. WebGPU menawarkan dua objek - GPURenderPipeline dan GPUComputePipeline, yang membolehkan anda menggabungkan pelbagai keadaan yang telah ditetapkan oleh pembangun, yang membolehkan penyemak imbas untuk tidak membazirkan sumber untuk kerja tambahan, seperti menyusun semula shader. Keadaan yang disokong termasuk: pelorek, buffer buffer dan reka letak atribut, reka letak kumpulan melekit, pengadunan, kedalaman dan corak serta format output selepas pemaparan.

Ciri ketiga WebGPU dipanggil model mengikat, sebahagian besarnya
mengingatkan alat pengumpulan sumber yang terdapat dalam Vulkan.
Untuk mengumpulkan sumber bersama, WebGPU menyediakan objek GPUBindGroup, yang boleh dikaitkan dengan objek lain yang serupa untuk digunakan dalam pelorek semasa menulis arahan. Mencipta kumpulan sedemikian membolehkan pemandu melakukan tindakan persediaan yang diperlukan lebih awal, dan membolehkan penyemak imbas menukar pengikatan sumber antara panggilan cabutan dengan lebih pantas. Reka letak pengikatan sumber boleh dipratentukan menggunakan objek GPUBindGroupLayout.

Binaan Firefox setiap malam kini termasuk sokongan WebGPU

Dalam Firefox, tetapan "dom.webgpu.enabled" disediakan dalam about:config untuk mendayakan WebGPU. Perenderan CanvasContext juga memerlukan penggubahan untuk didayakan WebRender (β€œgfx.webrender.all” dalam about:config), ditulis dalam Rust dan operasi pemaparan kandungan halaman penyumberan luar kepada GPU. Pelaksanaan WebGPU adalah berdasarkan kod projek
wgpu, ditulis dalam Rust dan mampu berjalan di atas API DX12, Vulkan dan Metal pada Linux, Android, Windows dan macOS (sokongan DX11 dan OpenGL ES 3.0 juga sedang dibangunkan). Secara selari, Google sedang membangunkan pelaksanaan lain, yang tersedia dalam Cawangan kenari Chromium dan didayakan menggunakan bendera "chrome://flags/#enable-unsafe-webgpu", tetapi setakat ini hanya berfungsi pada macOS dan Windows.

Sumber: opennet.ru

Tambah komen