mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
webgpu: Parse and forward backend prefs to wgpu (#32410)
Signed-off-by: Hieu Do <hieudn.uh@gmail.com>
This commit is contained in:
parent
500a475217
commit
3d70243438
3 changed files with 17 additions and 2 deletions
|
@ -206,6 +206,8 @@ mod gen {
|
||||||
webgpu: {
|
webgpu: {
|
||||||
/// Enable WebGPU APIs.
|
/// Enable WebGPU APIs.
|
||||||
enabled: bool,
|
enabled: bool,
|
||||||
|
/// List of comma-separated backends to be used by wgpu
|
||||||
|
wgpu_backend: String,
|
||||||
},
|
},
|
||||||
bluetooth: {
|
bluetooth: {
|
||||||
enabled: bool,
|
enabled: bool,
|
||||||
|
|
|
@ -13,7 +13,8 @@ use arrayvec::ArrayVec;
|
||||||
use base::id::PipelineId;
|
use base::id::PipelineId;
|
||||||
use euclid::default::Size2D;
|
use euclid::default::Size2D;
|
||||||
use ipc_channel::ipc::{IpcReceiver, IpcSender, IpcSharedMemory};
|
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::{RenderApi, RenderApiSender, Transaction};
|
||||||
use webrender_api::{DirtyRect, DocumentId};
|
use webrender_api::{DirtyRect, DocumentId};
|
||||||
use webrender_traits::{WebrenderExternalImageRegistry, WebrenderImageHandlerType};
|
use webrender_traits::{WebrenderExternalImageRegistry, WebrenderImageHandlerType};
|
||||||
|
@ -21,6 +22,7 @@ use wgc::command::{ImageCopyBuffer, ImageCopyTexture};
|
||||||
use wgc::device::queue::SubmittedWorkDoneClosure;
|
use wgc::device::queue::SubmittedWorkDoneClosure;
|
||||||
use wgc::device::{DeviceDescriptor, HostMap, ImplicitPipelineIds};
|
use wgc::device::{DeviceDescriptor, HostMap, ImplicitPipelineIds};
|
||||||
use wgc::id::DeviceId;
|
use wgc::id::DeviceId;
|
||||||
|
use wgc::instance::parse_backends_from_comma_list;
|
||||||
use wgc::pipeline::ShaderModuleDescriptor;
|
use wgc::pipeline::ShaderModuleDescriptor;
|
||||||
use wgc::resource::{BufferMapCallback, BufferMapOperation};
|
use wgc::resource::{BufferMapCallback, BufferMapOperation};
|
||||||
use wgc::{gfx_select, id};
|
use wgc::{gfx_select, id};
|
||||||
|
@ -88,10 +90,20 @@ impl WGPU {
|
||||||
external_images: Arc<Mutex<WebrenderExternalImageRegistry>>,
|
external_images: Arc<Mutex<WebrenderExternalImageRegistry>>,
|
||||||
wgpu_image_map: Arc<Mutex<HashMap<u64, PresentationData>>>,
|
wgpu_image_map: Arc<Mutex<HashMap<u64, PresentationData>>>,
|
||||||
) -> Self {
|
) -> 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(
|
let global = Arc::new(wgc::global::Global::new(
|
||||||
"wgpu-core",
|
"wgpu-core",
|
||||||
InstanceDescriptor {
|
InstanceDescriptor {
|
||||||
backends: wgt::Backends::PRIMARY,
|
backends,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
"dom.testing.htmlinputelement.select_files.enabled": false,
|
"dom.testing.htmlinputelement.select_files.enabled": false,
|
||||||
"dom.webgl2.enabled": false,
|
"dom.webgl2.enabled": false,
|
||||||
"dom.webgpu.enabled": false,
|
"dom.webgpu.enabled": false,
|
||||||
|
"dom.webgpu.wgpu_backend": "",
|
||||||
"dom.webrtc.enabled": false,
|
"dom.webrtc.enabled": false,
|
||||||
"dom.webrtc.transceiver.enabled": false,
|
"dom.webrtc.transceiver.enabled": false,
|
||||||
"dom.webvr.enabled": false,
|
"dom.webvr.enabled": false,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue