gpu: begin implementing Surface
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
64e023c992
commit
89b1f31de8
4 changed files with 96 additions and 86 deletions
|
|
@ -37,8 +37,67 @@ pub fn interface(native: *const NativeInstance) Interface {
|
|||
}
|
||||
|
||||
pub fn createSurface(native: *const NativeInstance, descriptor: *const Surface.Descriptor) Surface {
|
||||
// typedef enum WGPUSType {
|
||||
// WGPUSType_Invalid = 0x00000000,
|
||||
// WGPUSType_SurfaceDescriptorFromMetalLayer = 0x00000001,
|
||||
// WGPUSType_SurfaceDescriptorFromWindowsHWND = 0x00000002,
|
||||
// WGPUSType_SurfaceDescriptorFromXlibWindow = 0x00000003,
|
||||
// WGPUSType_SurfaceDescriptorFromCanvasHTMLSelector = 0x00000004,
|
||||
// WGPUSType_SurfaceDescriptorFromWindowsCoreWindow = 0x00000008,
|
||||
// WGPUSType_SurfaceDescriptorFromWindowsSwapChainPanel = 0x0000000B,
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptor {
|
||||
// WGPUChainedStruct const * nextInChain;
|
||||
// char const * label;
|
||||
// } WGPUSurfaceDescriptor;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromCanvasHTMLSelector {
|
||||
// WGPUChainedStruct chain;
|
||||
// char const * selector;
|
||||
// } WGPUSurfaceDescriptorFromCanvasHTMLSelector;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromMetalLayer {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * layer;
|
||||
// } WGPUSurfaceDescriptorFromMetalLayer;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromWindowsCoreWindow {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * coreWindow;
|
||||
// } WGPUSurfaceDescriptorFromWindowsCoreWindow;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromWindowsHWND {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * hinstance;
|
||||
// void * hwnd;
|
||||
// } WGPUSurfaceDescriptorFromWindowsHWND;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromWindowsSwapChainPanel {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * swapChainPanel;
|
||||
// } WGPUSurfaceDescriptorFromWindowsSwapChainPanel;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromXlibWindow {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * display;
|
||||
// uint32_t window;
|
||||
// } WGPUSurfaceDescriptorFromXlibWindow;
|
||||
|
||||
//c.wgpuInstanceCreateSurface(native.instance, )
|
||||
_ = native;
|
||||
_ = descriptor;
|
||||
// TODO:
|
||||
// WGPU_EXPORT WGPUSurface wgpuInstanceCreateSurface(WGPUInstance instance, WGPUSurfaceDescriptor const * descriptor);
|
||||
}
|
||||
|
||||
// var desc: c.WGPUSurfaceDescriptorFromWindowsHWND = undefined;
|
||||
// desc.chain.next = null;
|
||||
// desc.chain.sType = c.WGPUSType_SurfaceDescriptorFromWindowsHWND;
|
||||
|
||||
// desc.hinstance = std.os.windows.kernel32.GetModuleHandleW(null);
|
||||
// desc.hwnd = glfw_native.getWin32Window(window);
|
||||
|
||||
// var descriptor: c.WGPUSurfaceDescriptor = undefined;
|
||||
// descriptor.nextInChain = @ptrCast(*c.WGPUChainedStruct, &desc);
|
||||
// descriptor.label = "basic surface";
|
||||
// return c.wgpuInstanceCreateSurface(instance, &descriptor);
|
||||
|
|
|
|||
|
|
@ -1,46 +1,39 @@
|
|||
//! A native WebGPU surface
|
||||
|
||||
// typedef enum WGPUSType {
|
||||
// WGPUSType_Invalid = 0x00000000,
|
||||
// WGPUSType_SurfaceDescriptorFromMetalLayer = 0x00000001,
|
||||
// WGPUSType_SurfaceDescriptorFromWindowsHWND = 0x00000002,
|
||||
// WGPUSType_SurfaceDescriptorFromXlibWindow = 0x00000003,
|
||||
// WGPUSType_SurfaceDescriptorFromCanvasHTMLSelector = 0x00000004,
|
||||
pub const DescriptorTag = enum {
|
||||
metal_layer,
|
||||
windows_hwnd,
|
||||
windows_core_window,
|
||||
windows_swap_chain_panel,
|
||||
xlib_window,
|
||||
canvas_html_selector,
|
||||
};
|
||||
|
||||
const Descriptor = struct {};
|
||||
// typedef struct WGPUSurfaceDescriptor {
|
||||
// WGPUChainedStruct const * nextInChain;
|
||||
// char const * label;
|
||||
// } WGPUSurfaceDescriptor;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromCanvasHTMLSelector {
|
||||
// WGPUChainedStruct chain;
|
||||
// char const * selector;
|
||||
// } WGPUSurfaceDescriptorFromCanvasHTMLSelector;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromMetalLayer {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * layer;
|
||||
// } WGPUSurfaceDescriptorFromMetalLayer;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromWindowsCoreWindow {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * coreWindow;
|
||||
// } WGPUSurfaceDescriptorFromWindowsCoreWindow;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromWindowsHWND {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * hinstance;
|
||||
// void * hwnd;
|
||||
// } WGPUSurfaceDescriptorFromWindowsHWND;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromWindowsSwapChainPanel {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * swapChainPanel;
|
||||
// } WGPUSurfaceDescriptorFromWindowsSwapChainPanel;
|
||||
|
||||
// typedef struct WGPUSurfaceDescriptorFromXlibWindow {
|
||||
// WGPUChainedStruct chain;
|
||||
// void * display;
|
||||
// uint32_t window;
|
||||
// } WGPUSurfaceDescriptorFromXlibWindow;
|
||||
pub const Descriptor = union(DescriptorTag) {
|
||||
metal_layer: struct {
|
||||
label: ?[]const u8,
|
||||
layer: *anyopaque,
|
||||
},
|
||||
windows_hwnd: struct {
|
||||
label: ?[]const u8,
|
||||
hinstance: *anyopaque,
|
||||
hwnd: *anyopaque,
|
||||
},
|
||||
windows_core_window: struct {
|
||||
label: ?[]const u8,
|
||||
core_window: *anyopaque,
|
||||
},
|
||||
windows_swap_chain_panel: struct {
|
||||
label: ?[]const u8,
|
||||
swap_chain_panel: *anyopaque,
|
||||
},
|
||||
xlib_window: struct {
|
||||
label: ?[]const u8,
|
||||
display: *anyopaque,
|
||||
window: u32,
|
||||
},
|
||||
canvas_html_selector: struct {
|
||||
label: ?[]const u8,
|
||||
selector: []const u8,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
43
gpu/src/TODO
43
gpu/src/TODO
|
|
@ -299,16 +299,10 @@ typedef enum WGPURequestDeviceStatus {
|
|||
|
||||
typedef enum WGPUSType {
|
||||
WGPUSType_Invalid = 0x00000000,
|
||||
WGPUSType_SurfaceDescriptorFromMetalLayer = 0x00000001,
|
||||
WGPUSType_SurfaceDescriptorFromWindowsHWND = 0x00000002,
|
||||
WGPUSType_SurfaceDescriptorFromXlibWindow = 0x00000003,
|
||||
WGPUSType_SurfaceDescriptorFromCanvasHTMLSelector = 0x00000004,
|
||||
WGPUSType_ShaderModuleSPIRVDescriptor = 0x00000005,
|
||||
WGPUSType_ShaderModuleWGSLDescriptor = 0x00000006,
|
||||
WGPUSType_SurfaceDescriptorFromWindowsCoreWindow = 0x00000008,
|
||||
WGPUSType_ExternalTextureBindingEntry = 0x00000009,
|
||||
WGPUSType_ExternalTextureBindingLayout = 0x0000000A,
|
||||
WGPUSType_SurfaceDescriptorFromWindowsSwapChainPanel = 0x0000000B,
|
||||
WGPUSType_DawnTextureInternalUsageDescriptor = 0x000003E8,
|
||||
WGPUSType_PrimitiveDepthClampingState = 0x000003E9,
|
||||
WGPUSType_DawnTogglesDeviceDescriptor = 0x000003EA,
|
||||
|
|
@ -872,43 +866,6 @@ typedef struct WGPUStorageTextureBindingLayout {
|
|||
WGPUTextureViewDimension viewDimension;
|
||||
} WGPUStorageTextureBindingLayout;
|
||||
|
||||
typedef struct WGPUSurfaceDescriptor {
|
||||
WGPUChainedStruct const * nextInChain;
|
||||
char const * label;
|
||||
} WGPUSurfaceDescriptor;
|
||||
|
||||
typedef struct WGPUSurfaceDescriptorFromCanvasHTMLSelector {
|
||||
WGPUChainedStruct chain;
|
||||
char const * selector;
|
||||
} WGPUSurfaceDescriptorFromCanvasHTMLSelector;
|
||||
|
||||
typedef struct WGPUSurfaceDescriptorFromMetalLayer {
|
||||
WGPUChainedStruct chain;
|
||||
void * layer;
|
||||
} WGPUSurfaceDescriptorFromMetalLayer;
|
||||
|
||||
typedef struct WGPUSurfaceDescriptorFromWindowsCoreWindow {
|
||||
WGPUChainedStruct chain;
|
||||
void * coreWindow;
|
||||
} WGPUSurfaceDescriptorFromWindowsCoreWindow;
|
||||
|
||||
typedef struct WGPUSurfaceDescriptorFromWindowsHWND {
|
||||
WGPUChainedStruct chain;
|
||||
void * hinstance;
|
||||
void * hwnd;
|
||||
} WGPUSurfaceDescriptorFromWindowsHWND;
|
||||
|
||||
typedef struct WGPUSurfaceDescriptorFromWindowsSwapChainPanel {
|
||||
WGPUChainedStruct chain;
|
||||
void * swapChainPanel;
|
||||
} WGPUSurfaceDescriptorFromWindowsSwapChainPanel;
|
||||
|
||||
typedef struct WGPUSurfaceDescriptorFromXlibWindow {
|
||||
WGPUChainedStruct chain;
|
||||
void * display;
|
||||
uint32_t window;
|
||||
} WGPUSurfaceDescriptorFromXlibWindow;
|
||||
|
||||
typedef struct WGPUSwapChainDescriptor {
|
||||
WGPUChainedStruct const * nextInChain;
|
||||
char const * label;
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ test "syntax" {
|
|||
_ = Adapter;
|
||||
_ = Device;
|
||||
_ = Surface;
|
||||
_ = Surface.Descriptor;
|
||||
|
||||
_ = FeatureName;
|
||||
_ = SupportedLimits;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue