webgpu: Parse and forward backend prefs to wgpu (#32410)

Signed-off-by: Hieu Do <hieudn.uh@gmail.com>
This commit is contained in:
Hieu Do 2024-06-01 00:51:36 +07:00 committed by GitHub
parent 500a475217
commit 3d70243438
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 2 deletions

View file

@ -206,6 +206,8 @@ mod gen {
webgpu: {
/// Enable WebGPU APIs.
enabled: bool,
/// List of comma-separated backends to be used by wgpu
wgpu_backend: String,
},
bluetooth: {
enabled: bool,

View file

@ -13,7 +13,8 @@ use arrayvec::ArrayVec;
use base::id::PipelineId;
use euclid::default::Size2D;
use ipc_channel::ipc::{IpcReceiver, IpcSender, IpcSharedMemory};
use log::{error, warn};
use log::{error, info, warn};
use servo_config::pref;
use webrender::{RenderApi, RenderApiSender, Transaction};
use webrender_api::{DirtyRect, DocumentId};
use webrender_traits::{WebrenderExternalImageRegistry, WebrenderImageHandlerType};
@ -21,6 +22,7 @@ use wgc::command::{ImageCopyBuffer, ImageCopyTexture};
use wgc::device::queue::SubmittedWorkDoneClosure;
use wgc::device::{DeviceDescriptor, HostMap, ImplicitPipelineIds};
use wgc::id::DeviceId;
use wgc::instance::parse_backends_from_comma_list;
use wgc::pipeline::ShaderModuleDescriptor;
use wgc::resource::{BufferMapCallback, BufferMapOperation};
use wgc::{gfx_select, id};
@ -88,10 +90,20 @@ impl WGPU {
external_images: Arc<Mutex<WebrenderExternalImageRegistry>>,
wgpu_image_map: Arc<Mutex<HashMap<u64, PresentationData>>>,
) -> Self {
let backend_pref = pref!(dom.webgpu.wgpu_backend);
let backends = if backend_pref.is_empty() {
wgt::Backends::PRIMARY
} else {
info!(
"Selecting backends based on dom.webgpu.wgpu_backend pref: {:?}",
backend_pref
);
parse_backends_from_comma_list(&backend_pref)
};
let global = Arc::new(wgc::global::Global::new(
"wgpu-core",
InstanceDescriptor {
backends: wgt::Backends::PRIMARY,
backends,
..Default::default()
},
));

View file

@ -32,6 +32,7 @@
"dom.testing.htmlinputelement.select_files.enabled": false,
"dom.webgl2.enabled": false,
"dom.webgpu.enabled": false,
"dom.webgpu.wgpu_backend": "",
"dom.webrtc.enabled": false,
"dom.webrtc.transceiver.enabled": false,
"dom.webvr.enabled": false,