Open
Description
I just updated to wgpu-native v22.1.0.1. If I don't call wgpuRenderPassEncoderRelease()
before wgpuQueueSubmit()
, I get an error:
thread '<unnamed>' panicked at /Users/runner/.cargo/git/checkouts/wgpu-53e70f8674b08dd4/5c5c8b1/wgpu-core/src/command/mod.rs:522:14:
CommandBuffer cannot be destroyed because is still in use
The code looks like this:
wgpuRenderPassEncoderEnd( render_pass );
wgpuRenderPassEncoderRelease( render_pass ); // crashes without this line
WGPUCommandBuffer command = wgpuCommandEncoderFinish( encoder, nullptr );
wgpuQueueSubmit( queue, 1, &command );
The relevant part of the backtrace:
3: core::option::expect_failed
at /rustc/3f5fd8dd41153bc5fdca9427e9e05be2c767ba23/library/core/src/option.rs:1995:5
4: wgpu_core::command::CommandBuffer<A>::from_arc_into_baked
5: wgpu_core::device::queue::<impl wgpu_core::global::Global>::queue_submit
6: _wgpuQueueSubmit
Here is a runnable fairly minimal crashing example: https://github.com/yig/LearnWebGPU-Code/blob/step030-vanilla/main.cpp#L233
I hacked the CMakeLists.txt
to run on macos-aarch64. (It hard-codes the macos-aarch64
release and adds -framework Metal
linker flags. Otherwise, it should be easy to modify to reproduce on other platforms.)
git clone git@github.com:yig/LearnWebGPU-Code.git
cd LearnWebGPU-Code
git switch step030-vanilla
cmake -B build
cmake --build build -j 6
./build/App
Metadata
Metadata
Assignees
Labels
No labels