From b95f0cc41a7fca8cd81bbb417999848441a25e61 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Sun, 24 Jul 2022 14:59:15 -0700 Subject: [PATCH] gpu: convert Surface from enum(usize) to *opaque Signed-off-by: Stephen Gutekanst --- gpu/src/main.zig | 2 +- gpu/src/surface.zig | 99 +++++++++++++++++++++------------------------ 2 files changed, 48 insertions(+), 53 deletions(-) diff --git a/gpu/src/main.zig b/gpu/src/main.zig index 76755ab0..48835c40 100644 --- a/gpu/src/main.zig +++ b/gpu/src/main.zig @@ -72,7 +72,7 @@ pub const RenderPassTimestampWrite = extern struct { pub const RequestAdapterOptions = extern struct { next_in_chain: *const types.ChainedStruct, - compatible_surface: surface.Surface = surface.Surface.none, // nullable + compatible_surface: ?surface.Surface, power_preference: types.PowerPreference, force_fallback_adapter: bool, }; diff --git a/gpu/src/surface.zig b/gpu/src/surface.zig index 82d871a2..03599a45 100644 --- a/gpu/src/surface.zig +++ b/gpu/src/surface.zig @@ -1,56 +1,51 @@ const ChainedStruct = @import("types.zig").ChainedStruct; -pub const Surface = enum(usize) { - _, +pub const Surface = *opaque {}; - // TODO: verify there is a use case for nullable value of this type. - pub const none: Surface = @intToEnum(Surface, 0); - - pub const Descriptor = extern struct { - next_in_chain: *const ChainedStruct, - label: ?[*:0]const u8 = null, - }; - - pub const DescriptorFromAndroidNativeWindow = extern struct { - chain: ChainedStruct, - window: *anyopaque, - }; - - pub const DescriptorFromCanvasHTMLSelector = extern struct { - chain: ChainedStruct, - selector: [*:0]const u8, - }; - - pub const DescriptorFromMetalLayer = extern struct { - chain: ChainedStruct, - layer: *anyopaque, - }; - - pub const DescriptorFromWaylandSurface = extern struct { - chain: ChainedStruct, - display: *anyopaque, - surface: *anyopaque, - }; - - pub const DescriptorFromWindowsCoreWindow = extern struct { - chain: ChainedStruct, - core_window: *anyopaque, - }; - - pub const DescriptorFromWindowsHWND = extern struct { - chain: ChainedStruct, - hinstance: *anyopaque, - hwnd: *anyopaque, - }; - - pub const DescriptorFromWindowsSwapChainPanel = extern struct { - chain: ChainedStruct, - swap_chain_panel: *anyopaque, - }; - - pub const DescriptorFromXlibWindow = extern struct { - chain: ChainedStruct, - display: *anyopaque, - window: u32, - }; +pub const SurfaceDescriptor = extern struct { + next_in_chain: *const ChainedStruct, + label: ?[*:0]const u8 = null, +}; + +pub const SurfaceDescriptorFromAndroidNativeWindow = extern struct { + chain: ChainedStruct, + window: *anyopaque, +}; + +pub const SurfaceDescriptorFromCanvasHTMLSelector = extern struct { + chain: ChainedStruct, + selector: [*:0]const u8, +}; + +pub const SurfaceDescriptorFromMetalLayer = extern struct { + chain: ChainedStruct, + layer: *anyopaque, +}; + +pub const SurfaceDescriptorFromWaylandSurface = extern struct { + chain: ChainedStruct, + display: *anyopaque, + surface: *anyopaque, +}; + +pub const SurfaceDescriptorFromWindowsCoreWindow = extern struct { + chain: ChainedStruct, + core_window: *anyopaque, +}; + +pub const SurfaceDescriptorFromWindowsHWND = extern struct { + chain: ChainedStruct, + hinstance: *anyopaque, + hwnd: *anyopaque, +}; + +pub const SurfaceDescriptorFromWindowsSwapChainPanel = extern struct { + chain: ChainedStruct, + swap_chain_panel: *anyopaque, +}; + +pub const SurfaceDescriptorFromXlibWindow = extern struct { + chain: ChainedStruct, + display: *anyopaque, + window: u32, };