diff --git a/gpu/src/command_encoder.zig b/gpu/src/command_encoder.zig index 0d8889e3..a2de1ac1 100644 --- a/gpu/src/command_encoder.zig +++ b/gpu/src/command_encoder.zig @@ -3,8 +3,8 @@ const RenderPassEncoder = @import("render_pass_encoder.zig").RenderPassEncoder; const CommandBuffer = @import("command_buffer.zig").CommandBuffer; const Buffer = @import("buffer.zig").Buffer; const QuerySet = @import("query_set.zig").QuerySet; -const RenderPassDescriptor = @import("main.zig").RenderPassDescriptor; -const ComputePassDescriptor = @import("main.zig").ComputePassDescriptor; +const RenderPassDescriptor = @import("types.zig").RenderPassDescriptor; +const ComputePassDescriptor = @import("types.zig").ComputePassDescriptor; const ChainedStruct = @import("types.zig").ChainedStruct; const ImageCopyBuffer = @import("types.zig").ImageCopyBuffer; const ImageCopyTexture = @import("types.zig").ImageCopyTexture; diff --git a/gpu/src/instance.zig b/gpu/src/instance.zig index 2ef4db48..8dfd814d 100644 --- a/gpu/src/instance.zig +++ b/gpu/src/instance.zig @@ -2,7 +2,7 @@ const ChainedStruct = @import("types.zig").ChainedStruct; const RequestAdapterStatus = @import("types.zig").RequestAdapterStatus; const Surface = @import("surface.zig").Surface; const Adapter = @import("adapter.zig").Adapter; -const RequestAdapterOptions = @import("main.zig").RequestAdapterOptions; +const RequestAdapterOptions = @import("types.zig").RequestAdapterOptions; const RequestAdapterCallback = @import("callbacks.zig").RequestAdapterCallback; const Impl = @import("interface.zig").Impl; diff --git a/gpu/src/main.zig b/gpu/src/main.zig index d7761e1d..2ae99596 100644 --- a/gpu/src/main.zig +++ b/gpu/src/main.zig @@ -39,81 +39,16 @@ pub const dawn = @import("dawn.zig"); pub usingnamespace @import("types.zig"); pub usingnamespace @import("interface.zig"); -const types = @import("types.zig"); -const query_set = @import("query_set.zig"); -const texture_view = @import("texture_view.zig"); -const surface = @import("surface.zig"); -const compute_pipeline = @import("compute_pipeline.zig"); -const render_pipeline = @import("render_pipeline.zig"); const instance = @import("instance.zig"); const device = @import("device.zig"); const interface = @import("interface.zig"); - -/// Generic function pointer type, used for returning API function pointers. Must be -/// cast to the right `fn (...) callconv(.C) T` type before use. -pub const Proc = fn () callconv(.C) void; - -pub const ComputePassTimestampWrite = extern struct { - query_set: *query_set.QuerySet, - query_index: u32, - location: types.ComputePassTimestampLocation, -}; - -pub const RenderPassDepthStencilAttachment = extern struct { - view: *texture_view.TextureView, - depth_load_op: types.LoadOp = .undef, - depth_store_op: types.StoreOp = .undef, - /// deprecated - clear_depth: f32 = std.math.nan(f32), - depth_clear_value: f32 = 0, - depth_read_only: bool = false, - stencil_load_op: types.LoadOp = .undef, - stencil_store_op: types.StoreOp = .undef, - /// deprecated - clear_stencil: u32 = 0, - stencil_clear_value: u32 = 0, - stencil_read_only: bool = false, -}; - -pub const RenderPassTimestampWrite = extern struct { - query_set: *query_set.QuerySet, - query_index: u32, - location: types.RenderPassTimestampLocation, -}; - -pub const RequestAdapterOptions = extern struct { - next_in_chain: *const types.ChainedStruct, - compatible_surface: ?*surface.Surface, - power_preference: types.PowerPreference = .undef, - force_fallback_adapter: bool = false, -}; - -pub const ComputePassDescriptor = extern struct { - next_in_chain: *const types.ChainedStruct, - label: ?[*:0]const u8 = null, - timestamp_write_count: u32 = 0, - // TODO: file a bug on Dawn, this is not marked as nullable but in fact is. - timestamp_writes: ?[*]const ComputePassTimestampWrite = null, -}; - -pub const RenderPassDescriptor = extern struct { - next_in_chain: *const types.ChainedStruct, - label: ?[*:0]const u8 = null, - color_attachment_count: u32, - // TODO: file a bug on Dawn, this is not marked as nullable but in fact is. - color_attachments: ?[*]const types.RenderPassColorAttachment, - depth_stencil_attachment: ?[*]const RenderPassDepthStencilAttachment, - occlusion_query_set: ?*query_set.QuerySet, - timestamp_write_count: u32 = 0, - // TODO: file a bug on Dawn, this is not marked as nullable but in fact is. - timestamp_writes: ?[*]const RenderPassTimestampWrite = null, -}; +const types = @import("types.zig"); pub inline fn createInstance(descriptor: ?*const instance.Instance.Descriptor) ?*instance.Instance { return interface.Impl.createInstance(descriptor); } -pub inline fn getProcAddress(_device: *device.Device, proc_name: [*:0]const u8) ?Proc { +pub inline fn getProcAddress(_device: *device.Device, proc_name: [*:0]const u8) ?types.Proc { return interface.Impl.getProcAddress(_device, proc_name); } diff --git a/gpu/src/types.zig b/gpu/src/types.zig index 43a8d974..0d237a1a 100644 --- a/gpu/src/types.zig +++ b/gpu/src/types.zig @@ -4,9 +4,71 @@ const Texture = @import("texture.zig").Texture; const TextureView = @import("texture_view.zig").TextureView; const Buffer = @import("buffer.zig").Buffer; const ShaderModule = @import("shader_module.zig").ShaderModule; +const QuerySet = @import("query_set.zig").QuerySet; +const Surface = @import("surface.zig").Surface; const limit_u32_undef = @import("main.zig").limit_u32_undef; const limit_u64_undef = @import("main.zig").limit_u64_undef; +/// Generic function pointer type, used for returning API function pointers. Must be +/// cast to the right `fn (...) callconv(.C) T` type before use. +pub const Proc = fn () callconv(.C) void; + +pub const ComputePassTimestampWrite = extern struct { + query_set: *QuerySet, + query_index: u32, + location: ComputePassTimestampLocation, +}; + +pub const RenderPassDepthStencilAttachment = extern struct { + view: *TextureView, + depth_load_op: LoadOp = .undef, + depth_store_op: StoreOp = .undef, + /// deprecated + clear_depth: f32 = std.math.nan(f32), + depth_clear_value: f32 = 0, + depth_read_only: bool = false, + stencil_load_op: LoadOp = .undef, + stencil_store_op: StoreOp = .undef, + /// deprecated + clear_stencil: u32 = 0, + stencil_clear_value: u32 = 0, + stencil_read_only: bool = false, +}; + +pub const RenderPassTimestampWrite = extern struct { + query_set: *QuerySet, + query_index: u32, + location: RenderPassTimestampLocation, +}; + +pub const RequestAdapterOptions = extern struct { + next_in_chain: *const ChainedStruct, + compatible_surface: ?*Surface, + power_preference: PowerPreference = .undef, + force_fallback_adapter: bool = false, +}; + +pub const ComputePassDescriptor = extern struct { + next_in_chain: *const ChainedStruct, + label: ?[*:0]const u8 = null, + timestamp_write_count: u32 = 0, + // TODO: file a bug on Dawn, this is not marked as nullable but in fact is. + timestamp_writes: ?[*]const ComputePassTimestampWrite = null, +}; + +pub const RenderPassDescriptor = extern struct { + next_in_chain: *const ChainedStruct, + label: ?[*:0]const u8 = null, + color_attachment_count: u32, + // TODO: file a bug on Dawn, this is not marked as nullable but in fact is. + color_attachments: ?[*]const RenderPassColorAttachment, + depth_stencil_attachment: ?[*]const RenderPassDepthStencilAttachment, + occlusion_query_set: ?*QuerySet, + timestamp_write_count: u32 = 0, + // TODO: file a bug on Dawn, this is not marked as nullable but in fact is. + timestamp_writes: ?[*]const RenderPassTimestampWrite = null, +}; + pub const AlphaMode = enum(u32) { premultiplied = 0x00000000, unpremultiplied = 0x00000001,