From a541bf4fa15835264b7f69d81c4ac8f61d99b97b Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Fri, 11 Mar 2022 15:09:13 -0700 Subject: [PATCH] gpu: add BindGroupEntry Signed-off-by: Stephen Gutekanst --- gpu/src/TODO | 10 ---------- gpu/src/data.zig | 14 ++++++++++++++ gpu/src/main.zig | 5 ++++- gpu/src/structs.zig | 17 +++++++++++++++++ 4 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 gpu/src/structs.zig diff --git a/gpu/src/TODO b/gpu/src/TODO index 904ff577..34b27793 100644 --- a/gpu/src/TODO +++ b/gpu/src/TODO @@ -187,16 +187,6 @@ typedef struct WGPURenderPipelineDescriptor { -typedef struct WGPUBindGroupEntry { - WGPUChainedStruct const * nextInChain; - uint32_t binding; - WGPUBuffer buffer; - uint64_t offset; - uint64_t size; - WGPUSampler sampler; - WGPUTextureView textureView; -} WGPUBindGroupEntry; - typedef struct WGPUBufferBindingLayout { WGPUChainedStruct const * nextInChain; WGPUBufferBindingType type; diff --git a/gpu/src/data.zig b/gpu/src/data.zig index 7ecece1a..bb3d8d9f 100644 --- a/gpu/src/data.zig +++ b/gpu/src/data.zig @@ -4,6 +4,8 @@ const BlendOperation = @import("enums.zig").BlendOperation; const BlendFactor = @import("enums.zig").BlendFactor; const CompareFunction = @import("enums.zig").CompareFunction; const StencilOperation = @import("enums.zig").StencilOperation; +const VertexFormat = @import("enums.zig").VertexFormat; +const VertexStepMode = @import("enums.zig").VertexStepMode; // TODO: docs pub const Limits = extern struct { @@ -84,3 +86,15 @@ pub const VertexBufferLayout = extern struct { attribute_count: u32, attributes: *const VertexAttribute, }; + +test "syntax" { + _ = Limits; + _ = Color; + _ = Extent3D; + _ = Origin3D; + _ = StencilFaceState; + _ = VertexAttribute; + _ = BlendComponent; + _ = BlendState; + _ = VertexBufferLayout; +} diff --git a/gpu/src/main.zig b/gpu/src/main.zig index 53641e19..527748ab 100644 --- a/gpu/src/main.zig +++ b/gpu/src/main.zig @@ -74,7 +74,7 @@ pub const CommandEncoder = @import("CommandEncoder.zig"); pub const ComputePassEncoder = @import("ComputePassEncoder.zig"); pub const ComputePipeline = @import("ComputePipeline.zig"); -// Data structures +// Data structures ABI-compatible with webgpu.h pub const Limits = @import("data.zig").Limits; pub const Color = @import("data.zig").Color; pub const Extent3D = @import("data.zig").Extent3D; @@ -85,6 +85,9 @@ pub const BlendComponent = @import("data.zig").BlendComponent; pub const BlendState = @import("data.zig").BlendState; pub const VertexBufferLayout = @import("data.zig").VertexBufferLayout; +// Data structures not ABI-compatible with webgpu.h +pub const BindGroupEntry = @import("structs.zig").BindGroupEntry; + // Enumerations pub const Feature = @import("enums.zig").Feature; pub const TextureUsage = @import("enums.zig").TextureUsage; diff --git a/gpu/src/structs.zig b/gpu/src/structs.zig new file mode 100644 index 00000000..b9669a59 --- /dev/null +++ b/gpu/src/structs.zig @@ -0,0 +1,17 @@ +//! Structures which are not ABI compatible with webgpu.h +const Buffer = @import("Buffer.zig"); +const Sampler = @import("Sampler.zig"); +const TextureView = @import("TextureView.zig"); + +pub const BindGroupEntry = struct { + binding: u32, + buffer: Buffer, + offset: u64, + size: u64, + sampler: Sampler, + texture_view: TextureView, +}; + +test "syntax" { + _ = BindGroupEntry; +}