webgpu: update dawn example to use latest mach-glfw API

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2021-11-15 19:36:34 -07:00 committed by Stephen Gutekanst
parent 8a4cbc0e5d
commit ea197f9dca

View file

@ -72,12 +72,12 @@ pub fn setup() !Setup {
const backend_type = c.WGPUBackendType_Metal; const backend_type = c.WGPUBackendType_Metal;
const cmd_buf_type = CmdBufType.none; const cmd_buf_type = CmdBufType.none;
try glfw.init(); try glfw.init(.{});
// Create the test window and discover adapters using it (esp. for OpenGL) // Create the test window and discover adapters using it (esp. for OpenGL)
try setupGLFWWindowHintsForBackend(backend_type); var hints = glfwWindowHintsForBackend(backend_type);
glfw.Window.hint(.cocoa_retina_framebuffer, 0) catch {}; // false hints.cocoa_retina_framebuffer = false;
const window = try glfw.Window.create(640, 480, "Dawn window", null, null); const window = try glfw.Window.create(640, 480, "Dawn window", null, null, hints);
const instance = c.machDawnNativeInstance_init(); const instance = c.machDawnNativeInstance_init();
try discoverAdapter(instance, window, backend_type); try discoverAdapter(instance, window, backend_type);
@ -147,28 +147,28 @@ pub fn setup() !Setup {
}; };
} }
fn setupGLFWWindowHintsForBackend(backend: c.WGPUBackendType) !void { fn glfwWindowHintsForBackend(backend: c.WGPUBackendType) glfw.Window.Hints {
switch (backend) { return switch (backend) {
c.WGPUBackendType_OpenGL => { c.WGPUBackendType_OpenGL => .{
// Ask for OpenGL 4.4 which is what the GL backend requires for compute shaders and // Ask for OpenGL 4.4 which is what the GL backend requires for compute shaders and
// texture views. // texture views.
try glfw.Window.hint(.context_version_major, 4); .context_version_major = 4,
try glfw.Window.hint(.context_version_minor, 4); .context_version_minor = 4,
try glfw.Window.hint(.opengl_forward_compat, 1); // true .opengl_forward_compat = true,
try glfw.Window.hint(.opengl_profile, glfw.opengl_core_profile); .opengl_profile = .opengl_core_profile,
}, },
c.WGPUBackendType_OpenGLES => { c.WGPUBackendType_OpenGLES => .{
try glfw.Window.hint(.context_version_major, 3); .context_version_major = 3,
try glfw.Window.hint(.context_version_minor, 1); .context_version_minor = 1,
try glfw.Window.hint(.client_api, glfw.opengl_es_api); .client_api = .opengl_es_api,
try glfw.Window.hint(.context_creation_api, glfw.egl_context_api); .context_creation_api = .egl_context_api,
}, },
else => { else => .{
// Without this GLFW will initialize a GL context on the window, which prevents using // Without this GLFW will initialize a GL context on the window, which prevents using
// the window with other APIs (by crashing in weird ways). // the window with other APIs (by crashing in weird ways).
try glfw.Window.hint(.client_api, glfw.no_api); .client_api = .no_api,
}, },
} };
} }
fn discoverAdapter(instance: c.MachDawnNativeInstance, window: glfw.Window, typ: c.WGPUBackendType) !void { fn discoverAdapter(instance: c.MachDawnNativeInstance, window: glfw.Window, typ: c.WGPUBackendType) !void {