Closed Bug 1765155 Opened 3 years ago Closed 3 years ago

Examples on wgpu.rs no longer render

Categories

(Core :: Graphics: WebGPU, defect)

defect

Tracking

()

RESOLVED DUPLICATE of bug 1765462
Tracking Status
firefox-esr91 --- unaffected
firefox99 --- unaffected
firefox100 --- unaffected
firefox101 --- disabled

People

(Reporter: aosmond, Unassigned)

References

(Regression)

Details

(Keywords: regression)

Go to any wgpu.rs example with dom.webgpu.enabled set to true and it will fail to load, e.g. https://wgpu.rs/examples-gpu/?example=shadow

FWIW, it also panics in my debug build, but simply does not load in nightly:

#17 0x00007f44d7ada12d in core::panicking::panic () at library/core/src/panicking.rs:48
#18 0x00007f44d6471d32 in core::option::Option<T>::unwrap (self=...) at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/option.rs:752
#19 <wgpu_core::id::Id<T> as wgpu_core::id::TypedId>::zip (index=<optimized out>, epoch=1, backend=<optimized out>)
    at /home/aosmond/dev/gecko-2/third_party/rust/wgpu-core/src/id.rs:151
#20 <wgpu_core::id::Id<T> as core::convert::From<wgpu_core::id::SerialId>>::from (id=...) at /home/aosmond/dev/gecko-2/third_party/rust/wgpu-core/src/id.rs:61
#21 core::ops::function::FnOnce::call_once () at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/ops/function.rs:227
#22 core::result::Result<T,E>::map (self=..., op=<optimized out>) at /rustc/7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c/library/core/src/result.rs:756
#23 wgpu_core::id::_::<impl serde::de::Deserialize for wgpu_core::id::Id<T>>::deserialize (__deserializer=<optimized out>)
    at /home/aosmond/dev/gecko-2/third_party/rust/wgpu-core/src/id.rs:29
#24 0x00007f44d64378eb in <core::marker::PhantomData<T> as serde::de::DeserializeSeed>::deserialize (deserializer=0x7f44b33f6f50, self=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/serde/src/de/mod.rs:785
#25 <<&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_tuple::Access<R,O> as serde::de::SeqAccess>::next_element_seed
    (self=<optimized out>, seed=...) at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:314
#26 serde::de::SeqAccess::next_element (self=<optimized out>) at /home/aosmond/dev/gecko-2/third_party/rust/serde/src/de/mod.rs:1721
#27 <wgpu_core::command::render::_::<impl serde::de::Deserialize for wgpu_core::command::render::RenderPassColorAttachment>::deserialize::__Visitor as serde::de::Visitor>::visit_seq (__seq=..., self=...) at /home/aosmond/dev/gecko-2/third_party/rust/wgpu-core/src/command/render.rs:109
#28 <&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_tuple (len=3, self=<optimized out>, visitor=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:326
#29 <&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_struct (self=0x0, _name=..., fields=..., visitor=...)
--Type <RET> for more, q to quit, c to continue without paging--
    at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:411
#30 0x00007f44d64c43a7 in wgpu_core::command::render::_::<impl serde::de::Deserialize for wgpu_core::command::render::RenderPassColorAttachment>::deserialize
    (__deserializer=0x0) at /home/aosmond/dev/gecko-2/third_party/rust/wgpu-core/src/command/render.rs:109
#31 0x00007f44d64341e9 in <core::marker::PhantomData<T> as serde::de::DeserializeSeed>::deserialize (deserializer=0x0, self=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/serde/src/de/mod.rs:785
#32 <<&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_tuple::Access<R,O> as serde::de::SeqAccess>::next_element_seed
    (self=<optimized out>, seed=...) at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:314
#33 0x00007f44d644c985 in serde::de::SeqAccess::next_element (self=0x7f44b33f6b50) at /home/aosmond/dev/gecko-2/third_party/rust/serde/src/de/mod.rs:1721
#34 <serde::de::impls::<impl serde::de::Deserialize for alloc::vec::Vec<T>>::deserialize::VecVisitor<T> as serde::de::Visitor>::visit_seq (self=..., seq=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/serde/src/de/impls.rs:928
#35 0x00007f44d6435c79 in <&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_tuple (self=0x7f44b33f6f50, len=<optimized out>, visitor=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:326
#36 <&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_seq (self=0x7f44b33f6f50, visitor=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:350
#37 0x00007f44d6478f3e in serde::de::impls::<impl serde::de::Deserialize for alloc::vec::Vec<T>>::deserialize (deserializer=0x0)
    at /home/aosmond/dev/gecko-2/third_party/rust/serde/src/de/impls.rs:939
#38 0x00007f44d6440d11 in <core::marker::PhantomData<T> as serde::de::DeserializeSeed>::deserialize (deserializer=0x7f44b33f6f50, self=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/serde/src/de/mod.rs:785
#39 <<&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_tuple::Access<R,O> as serde::de::SeqAccess>::next_element_seed
    (self=<optimized out>, seed=...) at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:314
#40 serde::de::SeqAccess::next_element (self=<optimized out>) at /home/aosmond/dev/gecko-2/third_party/rust/serde/src/de/mod.rs:1721
#41 <<wgpu_core::device::trace::_::<impl serde::de::Deserialize for wgpu_core::device::trace::Command>::deserialize::__Visitor as serde::de::Visitor>::visit_enum::__Visitor as serde::de::Visitor>::visit_seq (__seq=..., self=...) at /home/aosmond/dev/gecko-2/third_party/rust/wgpu-core/src/device/trace.rs:127
#42 <&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_tuple (len=<optimized out>, self=<optimized out>, visitor=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:326
#43 <&mut bincode::de::Deserializer<R,O> as serde::de::VariantAccess>::struct_variant (self=0x7f44b33f6f50, fields=..., visitor=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:490
#44 0x00007f44d645829e in <wgpu_core::device::trace::_::<impl serde::de::Deserialize for wgpu_core::device::trace::Command>::deserialize::__Visitor as serde::de::Visitor>::visit_enum (self=..., __data=<optimized out>) at /home/aosmond/dev/gecko-2/third_party/rust/wgpu-core/src/device/trace.rs:127
#45 0x00007f44d6431a6e in <&mut bincode::de::Deserializer<R,O> as serde::de::Deserializer>::deserialize_enum (self=0x0, _enum=..., _variants=..., visitor=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/de/mod.rs:290
#46 0x00007f44d64580d7 in wgpu_core::device::trace::_::<impl serde::de::Deserialize for wgpu_core::device::trace::Command>::deserialize (__deserializer=0x0)
    at /home/aosmond/dev/gecko-2/third_party/rust/wgpu-core/src/device/trace.rs:127
#47 0x00007f44d646a140 in <core::marker::PhantomData<T> as serde::de::DeserializeSeed>::deserialize (deserializer=0x7f44b33f6f50, self=...)
    at /home/aosmond/dev/gecko-2/third_party/rust/serde/src/de/mod.rs:785
#48 bincode::internal::deserialize_seed (bytes=..., seed=..., options=...) at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/internal.rs:118
#49 bincode::internal::deserialize (bytes=..., options=...) at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/internal.rs:106
#50 0x00007f44d648c0a1 in bincode::config::Options::deserialize (bytes=..., self=...) at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/config/mod.rs:200
#51 bincode::deserialize (bytes=...) at /home/aosmond/dev/gecko-2/third_party/rust/bincode/src/lib.rs:181
#52 0x00007f44d63af447 in wgpu_bindings::server::wgpu_server_command_encoder_action (global=0x7f44ac322000, self_id=..., byte_buf=<optimized out>, error_buf=...)
    at gfx/wgpu_bindings/src/server.rs:534
#53 0x00007f44d2725215 in mozilla::webgpu::WebGPUParent::RecvCommandEncoderAction(unsigned long, unsigned long, mozilla::ipc::ByteBuf const&) (this=
--Type <RET> for more, q to quit, c to continue without paging--
    0x7f44a16b2200, aSelf=0, aDevice=2305843013508661248, aByteBuf=...) at /home/aosmond/dev/gecko-2/dom/webgpu/ipc/WebGPUParent.cpp:836

I used mozregression to pinpoint it on bug 1762730:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=a2aa25965e8b7d0450fa21cf9635306e31745dd6&tochange=40231b38fa73f59255c2f5ad07743705b5a629b8

Flags: needinfo?(jimb)

Set release status flags based on info from the regressing bug 1762730

Has Regression Range: --- → yes

Okay, this is very interesting. Thank you for bisecting that. I'll take a look today.

Flags: needinfo?(jimb)

This seems to be because the wgpu.rs examples haven't been updated for the new changes to WGSL syntax. For the shadows example, I get the following error in the console:

Shader '' parsing error: expected ',', found ';'
  ┌─ wgsl:2:27
  │
2 │     view_proj: mat4x4<f32>;
  │                           ^ expected ','

, caused by: expected ',', found ';'
error matching VERTEX shader requirements against the pipeline, caused by: shader module is invalid 

Could you confirm that you get an error like this in a nightly non-debug build, and not a crash?

Flags: needinfo?(aosmond)

Oh - please wait for bug 1765462 to land before trying again.

Andrew confirms fixed by wgpu update.

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → DUPLICATE
Flags: needinfo?(aosmond)
You need to log in before you can comment on or make changes to this bug.