web: Enable webgpu
This commit is contained in:
parent
78963ba15b
commit
c63f51f823
|
@ -59,14 +59,22 @@ pub struct WgpuRenderBackend<T: RenderTarget> {
|
|||
|
||||
impl WgpuRenderBackend<SwapChainTarget> {
|
||||
#[cfg(target_family = "wasm")]
|
||||
pub async fn for_canvas(canvas: web_sys::HtmlCanvasElement) -> Result<Self, Error> {
|
||||
pub async fn for_canvas(
|
||||
canvas: web_sys::HtmlCanvasElement,
|
||||
webgpu: bool,
|
||||
) -> Result<Self, Error> {
|
||||
let backends = if webgpu {
|
||||
wgpu::Backends::BROWSER_WEBGPU
|
||||
} else {
|
||||
wgpu::Backends::GL
|
||||
};
|
||||
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
|
||||
backends: wgpu::Backends::BROWSER_WEBGPU | wgpu::Backends::GL,
|
||||
backends,
|
||||
..Default::default()
|
||||
});
|
||||
let surface = instance.create_surface(wgpu::SurfaceTarget::Canvas(canvas))?;
|
||||
let (adapter, device, queue) = request_adapter_and_device(
|
||||
wgpu::Backends::BROWSER_WEBGPU | wgpu::Backends::GL,
|
||||
backends,
|
||||
&instance,
|
||||
Some(&surface),
|
||||
wgpu::PowerPreference::HighPerformance,
|
||||
|
|
|
@ -16,7 +16,7 @@ workspace = true
|
|||
crate-type = ["cdylib", "rlib"]
|
||||
|
||||
[features]
|
||||
default = ["canvas", "console_error_panic_hook", "webgl", "wgpu-webgl"]
|
||||
default = ["canvas", "console_error_panic_hook", "webgl", "wgpu-webgl", "webgpu"]
|
||||
|
||||
# core features
|
||||
avm_debug = ["ruffle_core/avm_debug"]
|
||||
|
|
|
@ -1628,7 +1628,7 @@ async fn create_renderer(
|
|||
|
||||
let _is_transparent = config.wmode.as_deref() == Some("transparent");
|
||||
|
||||
let mut renderer_list = vec!["webgpu", "wgpu-webgl", "webgl", "canvas"];
|
||||
let mut renderer_list = vec!["wgpu-webgl", "webgpu", "webgl", "canvas"];
|
||||
if let Some(preferred_renderer) = &config.preferred_renderer {
|
||||
if let Some(pos) = renderer_list.iter().position(|&r| r == preferred_renderer) {
|
||||
renderer_list.remove(pos);
|
||||
|
@ -1660,7 +1660,10 @@ async fn create_renderer(
|
|||
.dyn_into()
|
||||
.map_err(|_| "Expected HtmlCanvasElement")?;
|
||||
|
||||
match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas(canvas.clone())
|
||||
match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas(
|
||||
canvas.clone(),
|
||||
true,
|
||||
)
|
||||
.await
|
||||
{
|
||||
Ok(renderer) => {
|
||||
|
@ -1681,7 +1684,10 @@ async fn create_renderer(
|
|||
.dyn_into()
|
||||
.map_err(|_| "Expected HtmlCanvasElement")?;
|
||||
|
||||
match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas(canvas.clone())
|
||||
match ruffle_render_wgpu::backend::WgpuRenderBackend::for_canvas(
|
||||
canvas.clone(),
|
||||
false,
|
||||
)
|
||||
.await
|
||||
{
|
||||
Ok(renderer) => {
|
||||
|
|
Loading…
Reference in New Issue