web: Rename wgpu feature to webgpu, add wgpu-webgl feature to use webgl through wgpu
This commit is contained in:
parent
0ac2a3f361
commit
03744d46f1
|
@ -335,7 +335,7 @@ jobs:
|
||||||
env:
|
env:
|
||||||
BUILD_ID: ${{ github.run_number }}
|
BUILD_ID: ${{ github.run_number }}
|
||||||
# Build web demo with WebGPU support for testing in Chrome origin trial on ruffle.rs
|
# Build web demo with WebGPU support for testing in Chrome origin trial on ruffle.rs
|
||||||
CARGO_FEATURES: ${{ matrix.demo && 'wgpu' || '' }}
|
CARGO_FEATURES: ${{ matrix.demo && 'webgpu' || '' }}
|
||||||
FIREFOX_EXTENSION_ID: ${{ secrets.FIREFOX_EXTENSION_ID }} # Needed to inject into manifest.json
|
FIREFOX_EXTENSION_ID: ${{ secrets.FIREFOX_EXTENSION_ID }} # Needed to inject into manifest.json
|
||||||
working-directory: web
|
working-directory: web
|
||||||
shell: bash -l {0}
|
shell: bash -l {0}
|
||||||
|
|
|
@ -32,3 +32,4 @@ features = ["HtmlCanvasElement"]
|
||||||
[features]
|
[features]
|
||||||
render_debug_labels = []
|
render_debug_labels = []
|
||||||
render_trace = ["wgpu/trace"]
|
render_trace = ["wgpu/trace"]
|
||||||
|
webgl = ["wgpu/webgl"]
|
||||||
|
|
|
@ -23,7 +23,8 @@ lzma = ["ruffle_core/lzma"]
|
||||||
# web features
|
# web features
|
||||||
canvas = ["ruffle_render_canvas"]
|
canvas = ["ruffle_render_canvas"]
|
||||||
webgl = ["ruffle_render_webgl"]
|
webgl = ["ruffle_render_webgl"]
|
||||||
wgpu = ["ruffle_render_wgpu"]
|
webgpu = ["ruffle_render_wgpu"]
|
||||||
|
wgpu-webgl = ["ruffle_render_wgpu", "ruffle_render_wgpu/webgl"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
console_error_panic_hook = { version = "0.1.7", optional = true }
|
console_error_panic_hook = { version = "0.1.7", optional = true }
|
||||||
|
|
|
@ -1227,7 +1227,7 @@ async fn create_renderer(
|
||||||
document: &web_sys::Document,
|
document: &web_sys::Document,
|
||||||
config: &Config,
|
config: &Config,
|
||||||
) -> Result<(PlayerBuilder, HtmlCanvasElement), Box<dyn Error>> {
|
) -> Result<(PlayerBuilder, HtmlCanvasElement), Box<dyn Error>> {
|
||||||
#[cfg(not(any(feature = "canvas", feature = "webgl")))]
|
#[cfg(not(any(feature = "canvas", feature = "webgpu", feature = "wgpu-webgl")))]
|
||||||
std::compile_error!("You must enable one of the render backend features (e.g., webgl).");
|
std::compile_error!("You must enable one of the render backend features (e.g., webgl).");
|
||||||
|
|
||||||
let _is_transparent = config.wmode.as_deref() == Some("transparent");
|
let _is_transparent = config.wmode.as_deref() == Some("transparent");
|
||||||
|
@ -1235,7 +1235,7 @@ async fn create_renderer(
|
||||||
// Try to create a backend, falling through to the next backend on failure.
|
// Try to create a backend, falling through to the next backend on failure.
|
||||||
// We must recreate the canvas each attempt, as only a single context may be created per canvas
|
// We must recreate the canvas each attempt, as only a single context may be created per canvas
|
||||||
// with `getContext`.
|
// with `getContext`.
|
||||||
#[cfg(all(feature = "wgpu", target_family = "wasm"))]
|
#[cfg(all(feature = "webgpu", target_family = "wasm"))]
|
||||||
{
|
{
|
||||||
// Check that we have access to WebGPU (navigator.gpu should exist).
|
// Check that we have access to WebGPU (navigator.gpu should exist).
|
||||||
if web_sys::window()
|
if web_sys::window()
|
||||||
|
@ -1243,7 +1243,7 @@ async fn create_renderer(
|
||||||
.and_then(|window| js_sys::Reflect::has(&window.navigator(), &JsValue::from_str("gpu")))
|
.and_then(|window| js_sys::Reflect::has(&window.navigator(), &JsValue::from_str("gpu")))
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
{
|
{
|
||||||
log::info!("Creating wgpu renderer...");
|
log::info!("Creating wgpu webgpu renderer...");
|
||||||
let canvas: HtmlCanvasElement = document
|
let canvas: HtmlCanvasElement = document
|
||||||
.create_element("canvas")
|
.create_element("canvas")
|
||||||
.into_js_result()?
|
.into_js_result()?
|
||||||
|
@ -1254,10 +1254,26 @@ async fn create_renderer(
|
||||||
Ok(renderer) => {
|
Ok(renderer) => {
|
||||||
return Ok((builder.with_renderer(renderer), canvas));
|
return Ok((builder.with_renderer(renderer), canvas));
|
||||||
}
|
}
|
||||||
Err(error) => log::error!("Error creating wgpu renderer: {}", error),
|
Err(error) => log::error!("Error creating wgpu webgpu renderer: {}", error),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[cfg(all(feature = "wgpu-webgl", target_family = "wasm"))]
|
||||||
|
{
|
||||||
|
log::info!("Creating wgpu webgl renderer...");
|
||||||
|
let canvas: HtmlCanvasElement = document
|
||||||
|
.create_element("canvas")
|
||||||
|
.into_js_result()?
|
||||||
|
.dyn_into()
|
||||||
|
.map_err(|_| "Expected HtmlCanvasElement")?;
|
||||||
|
|
||||||
|
match ruffle_render_wgpu::WgpuRenderBackend::for_canvas(&canvas).await {
|
||||||
|
Ok(renderer) => {
|
||||||
|
return Ok((builder.with_renderer(renderer), canvas));
|
||||||
|
}
|
||||||
|
Err(error) => log::error!("Error creating wgpu webgl renderer: {}", error),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Try to create a backend, falling through to the next backend on failure.
|
// Try to create a backend, falling through to the next backend on failure.
|
||||||
// We must recreate the canvas each attempt, as only a single context may be created per canvas
|
// We must recreate the canvas each attempt, as only a single context may be created per canvas
|
||||||
|
|
Loading…
Reference in New Issue