-
Notifications
You must be signed in to change notification settings - Fork 10
Open
Description
Hi :)
I'm trying to create a surface for WGPU on a mac:
// Earlier in the code
Glfw _glfw = Glfw.GetApi();
unsafe
{
_glfw.WindowHint(WindowHintBool.Resizable, false);
_glfw.WindowHint(WindowHintClientApi.ClientApi, ClientApi.NoApi);
_window = _glfw.CreateWindow(settings.Width, settings.Height, "Window Title", null, null);
if (_window == null)
throw new Exception("Failed to create a window");
}
// Creating the window
GlfwNativeWindow native = new(_glfw, _window);
instance.CreateSurfaceFromMetalLayer(native.Cocoa!.Value);just like in the example and it gives the error
thread '<unnamed>' panicked at 'assertion failed: `(left == right)`
left: `false`,
right: `true`', /Users/runner/.cargo/git/checkouts/wgpu-53e70f8674b08dd4/628a25e/wgpu-hal/src/metal/surface.rs:96:9
stack backtrace:
0: 0x1270e7bf8 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h7f563e99e08996c8
1: 0x1270ff22c - core::fmt::write::h828d1a1d9994c0d4
2: 0x1270e5cf4 - std::io::Write::write_fmt::h5f89acb1837ba600
3: 0x1270e7a0c - std::sys_common::backtrace::print::h840392abbac6ee51
4: 0x1270e8cb4 - std::panicking::default_hook::{{closure}}::h4759ed42ee25f714
5: 0x1270e8a0c - std::panicking::default_hook::h0e3a71e8a2850720
6: 0x1270e92f0 - std::panicking::rust_panic_with_hook::h7210718e7f3b5517
7: 0x1270e9100 - std::panicking::begin_panic_handler::{{closure}}::h783370b8bddac8b4
8: 0x1270e8060 - std::sys_common::backtrace::__rust_end_short_backtrace::h33a0191324141f1f
9: 0x1270e8e54 - _rust_begin_unwind
10: 0x12711fae4 - core::panicking::panic_fmt::h8c7962154a272fe6
11: 0x1270fd304 - core::panicking::assert_failed_inner::hfc6afabce53d8387
12: 0x12710e140 - core::panicking::assert_failed::hb9b4375de7f0a30a
13: 0x126dcc614 - wgpu_hal::metal::surface::<impl wgpu_hal::metal::Surface>::from_layer::h2fd9fe1c7207aa5b
14: 0x126dcef54 - wgpu_hal::metal::Instance::create_surface_from_layer::h6b2ec2ffa1aa9ad9
15: 0x126ac6358 - wgpu_core::instance::<impl wgpu_core::hub::Global<G>>::instance_create_surface_metal::{{closure}}::h134f83a8b2b532f9
16: 0x126beb8a0 - core::option::Option<T>::map::h380bc1f5713ebcef
17: 0x126b23988 - wgpu_core::instance::<impl wgpu_core::hub::Global<G>>::instance_create_surface_metal::hb40418e2f49952bb
18: 0x126c95f2c - _wgpuInstanceCreateSurface
fatal runtime error: failed to initiate panic, error 5
So I looked at the piece of code that's causing the issue
pub unsafe fn from_layer(layer: &mtl::MetalLayerRef) -> Self {
let class = class!(CAMetalLayer);
let proper_kind: BOOL = msg_send![layer, isKindOfClass: class];
assert_eq!(proper_kind, YES); // <-- Error
Self::new(None, layer.to_owned())
}I thought maybe I was doing something wrong so I tried WGPU.Tests (the one in this repo) instead but I get the same error. I suspect it might be something to do with Metal and Cocoa not being the same thing but I'm not very familiar with Apple-specific development and online articles seem to intertwine the two. Even the winit crate uses cocoa and metal handles as the same thing.
I have no idea how to fix this, do you have any idea of what could be wrong here?
Metadata
Metadata
Assignees
Labels
No labels