gpu: internalize Surface types

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-07-30 00:00:05 -07:00 committed by Stephen Gutekanst
parent 23fb836ce8
commit 9d367c3957
3 changed files with 52 additions and 53 deletions

View file

@ -1,7 +1,6 @@
const ChainedStruct = @import("types.zig").ChainedStruct; const ChainedStruct = @import("types.zig").ChainedStruct;
const RequestAdapterStatus = @import("types.zig").RequestAdapterStatus; const RequestAdapterStatus = @import("types.zig").RequestAdapterStatus;
const Surface = @import("surface.zig").Surface; const Surface = @import("surface.zig").Surface;
const SurfaceDescriptor = @import("surface.zig").SurfaceDescriptor;
const Adapter = @import("adapter.zig").Adapter; const Adapter = @import("adapter.zig").Adapter;
const RequestAdapterOptions = @import("main.zig").RequestAdapterOptions; const RequestAdapterOptions = @import("main.zig").RequestAdapterOptions;
const RequestAdapterCallback = @import("callbacks.zig").RequestAdapterCallback; const RequestAdapterCallback = @import("callbacks.zig").RequestAdapterCallback;
@ -12,7 +11,7 @@ pub const Instance = opaque {
next_in_chain: ?*const ChainedStruct = null, next_in_chain: ?*const ChainedStruct = null,
}; };
pub inline fn createSurface(instance: *Instance, descriptor: *const SurfaceDescriptor) *Surface { pub inline fn createSurface(instance: *Instance, descriptor: *const Surface.Descriptor) *Surface {
return Impl.instanceCreateSurface(instance, descriptor); return Impl.instanceCreateSurface(instance, descriptor);
} }

View file

@ -117,7 +117,7 @@ pub fn Interface(comptime T: type) type {
assertDecl(T, "externalTextureSetLabel", fn (external_texture: *gpu.ExternalTexture, label: [*:0]const u8) callconv(.Inline) void); assertDecl(T, "externalTextureSetLabel", fn (external_texture: *gpu.ExternalTexture, label: [*:0]const u8) callconv(.Inline) void);
assertDecl(T, "externalTextureReference", fn (external_texture: *gpu.ExternalTexture) callconv(.Inline) void); assertDecl(T, "externalTextureReference", fn (external_texture: *gpu.ExternalTexture) callconv(.Inline) void);
assertDecl(T, "externalTextureRelease", fn (external_texture: *gpu.ExternalTexture) callconv(.Inline) void); assertDecl(T, "externalTextureRelease", fn (external_texture: *gpu.ExternalTexture) callconv(.Inline) void);
assertDecl(T, "instanceCreateSurface", fn (instance: *gpu.Instance, descriptor: *const gpu.SurfaceDescriptor) callconv(.Inline) *gpu.Surface); assertDecl(T, "instanceCreateSurface", fn (instance: *gpu.Instance, descriptor: *const gpu.Surface.Descriptor) callconv(.Inline) *gpu.Surface);
assertDecl(T, "instanceRequestAdapter", fn (instance: *gpu.Instance, options: *const gpu.RequestAdapterOptions, callback: gpu.RequestAdapterCallback, userdata: *anyopaque) callconv(.Inline) void); assertDecl(T, "instanceRequestAdapter", fn (instance: *gpu.Instance, options: *const gpu.RequestAdapterOptions, callback: gpu.RequestAdapterCallback, userdata: *anyopaque) callconv(.Inline) void);
assertDecl(T, "instanceReference", fn (instance: *gpu.Instance) callconv(.Inline) void); assertDecl(T, "instanceReference", fn (instance: *gpu.Instance) callconv(.Inline) void);
assertDecl(T, "instanceRelease", fn (instance: *gpu.Instance) callconv(.Inline) void); assertDecl(T, "instanceRelease", fn (instance: *gpu.Instance) callconv(.Inline) void);
@ -739,7 +739,7 @@ pub fn Export(comptime T: type) type {
} }
// WGPU_EXPORT WGPUSurface wgpuInstanceCreateSurface(WGPUInstance instance, WGPUSurfaceDescriptor const * descriptor); // WGPU_EXPORT WGPUSurface wgpuInstanceCreateSurface(WGPUInstance instance, WGPUSurfaceDescriptor const * descriptor);
export fn wgpuInstanceCreateSurface(instance: *gpu.Instance, descriptor: *const gpu.SurfaceDescriptor) *gpu.Surface { export fn wgpuInstanceCreateSurface(instance: *gpu.Instance, descriptor: *const gpu.Surface.Descriptor) *gpu.Surface {
return T.instanceCreateSurface(instance, descriptor); return T.instanceCreateSurface(instance, descriptor);
} }
@ -1844,7 +1844,7 @@ pub const StubInterface = Interface(struct {
unreachable; unreachable;
} }
pub inline fn instanceCreateSurface(instance: *gpu.Instance, descriptor: *const gpu.SurfaceDescriptor) *gpu.Surface { pub inline fn instanceCreateSurface(instance: *gpu.Instance, descriptor: *const gpu.Surface.Descriptor) *gpu.Surface {
_ = instance; _ = instance;
_ = descriptor; _ = descriptor;
unreachable; unreachable;

View file

@ -2,6 +2,54 @@ const ChainedStruct = @import("types.zig").ChainedStruct;
const Impl = @import("interface.zig").Impl; const Impl = @import("interface.zig").Impl;
pub const Surface = opaque { pub const Surface = opaque {
pub const Descriptor = extern struct {
next_in_chain: ?*const ChainedStruct = null,
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 inline fn reference(surface: *Surface) void { pub inline fn reference(surface: *Surface) void {
Impl.surfaceReference(surface); Impl.surfaceReference(surface);
} }
@ -10,51 +58,3 @@ pub const Surface = opaque {
Impl.surfaceRelease(surface); Impl.surfaceRelease(surface);
} }
}; };
pub const SurfaceDescriptor = extern struct {
next_in_chain: ?*const ChainedStruct = null,
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,
};