gpu: Added helpers to BindGroup.Entry; make dynamic_offset a const slice (#215)
Helps hexops/mach#
This commit is contained in:
parent
8c8534e609
commit
f2ce208aa1
3 changed files with 33 additions and 5 deletions
|
|
@ -35,6 +35,34 @@ pub const Entry = struct {
|
||||||
size: u64,
|
size: u64,
|
||||||
sampler: ?Sampler = null,
|
sampler: ?Sampler = null,
|
||||||
texture_view: ?TextureView = null,
|
texture_view: ?TextureView = null,
|
||||||
|
|
||||||
|
/// Helper to create a buffer BindGroup.Entry.
|
||||||
|
pub fn buffer(binding: u32, buf: Buffer, offset: u64, size: u64) Entry {
|
||||||
|
return .{
|
||||||
|
.binding = binding,
|
||||||
|
.buffer = buf,
|
||||||
|
.offset = offset,
|
||||||
|
.size = size,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Helper to create a sampler BindGroup.Entry.
|
||||||
|
pub fn sampler(binding: u32, sam: Sampler) Entry {
|
||||||
|
return .{
|
||||||
|
.binding = binding,
|
||||||
|
.sampler = sam,
|
||||||
|
.size = 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Helper to create a texture view BindGroup.Entry.
|
||||||
|
pub fn textureView(binding: u32, texview: TextureView) Entry {
|
||||||
|
return .{
|
||||||
|
.binding = binding,
|
||||||
|
.texture_view = texview,
|
||||||
|
.size = 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const Descriptor = struct {
|
pub const Descriptor = struct {
|
||||||
|
|
|
||||||
|
|
@ -1298,7 +1298,7 @@ const render_pass_encoder_vtable = RenderPassEncoder.VTable{
|
||||||
ptr: *anyopaque,
|
ptr: *anyopaque,
|
||||||
group_index: u32,
|
group_index: u32,
|
||||||
group: BindGroup,
|
group: BindGroup,
|
||||||
dynamic_offsets: []u32,
|
dynamic_offsets: []const u32,
|
||||||
) void {
|
) void {
|
||||||
c.wgpuRenderPassEncoderSetBindGroup(
|
c.wgpuRenderPassEncoderSetBindGroup(
|
||||||
@ptrCast(c.WGPURenderPassEncoder, ptr),
|
@ptrCast(c.WGPURenderPassEncoder, ptr),
|
||||||
|
|
@ -1495,7 +1495,7 @@ const render_bundle_encoder_vtable = RenderBundleEncoder.VTable{
|
||||||
ptr: *anyopaque,
|
ptr: *anyopaque,
|
||||||
group_index: u32,
|
group_index: u32,
|
||||||
group: BindGroup,
|
group: BindGroup,
|
||||||
dynamic_offsets: []u32,
|
dynamic_offsets: []const u32,
|
||||||
) void {
|
) void {
|
||||||
c.wgpuRenderBundleEncoderSetBindGroup(
|
c.wgpuRenderBundleEncoderSetBindGroup(
|
||||||
@ptrCast(c.WGPURenderBundleEncoder, ptr),
|
@ptrCast(c.WGPURenderBundleEncoder, ptr),
|
||||||
|
|
@ -2157,7 +2157,7 @@ const compute_pass_encoder_vtable = ComputePassEncoder.VTable{
|
||||||
ptr: *anyopaque,
|
ptr: *anyopaque,
|
||||||
group_index: u32,
|
group_index: u32,
|
||||||
group: BindGroup,
|
group: BindGroup,
|
||||||
dynamic_offsets: []u32,
|
dynamic_offsets: []const u32,
|
||||||
) void {
|
) void {
|
||||||
c.wgpuComputePassEncoderSetBindGroup(
|
c.wgpuComputePassEncoderSetBindGroup(
|
||||||
@ptrCast(c.WGPUComputePassEncoder, ptr),
|
@ptrCast(c.WGPUComputePassEncoder, ptr),
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ pub const VTable = struct {
|
||||||
insertDebugMarker: fn (ptr: *anyopaque, marker_label: [*:0]const u8) void,
|
insertDebugMarker: fn (ptr: *anyopaque, marker_label: [*:0]const u8) void,
|
||||||
popDebugGroup: fn (ptr: *anyopaque) void,
|
popDebugGroup: fn (ptr: *anyopaque) void,
|
||||||
pushDebugGroup: fn (ptr: *anyopaque, group_label: [*:0]const u8) void,
|
pushDebugGroup: fn (ptr: *anyopaque, group_label: [*:0]const u8) void,
|
||||||
setBindGroup: fn (ptr: *anyopaque, group_index: u32, group: BindGroup, dynamic_offsets: []u32) void,
|
setBindGroup: fn (ptr: *anyopaque, group_index: u32, group: BindGroup, dynamic_offsets: []const u32) void,
|
||||||
setBlendConstant: fn (ptr: *anyopaque, color: *const Color) void,
|
setBlendConstant: fn (ptr: *anyopaque, color: *const Color) void,
|
||||||
setIndexBuffer: fn (ptr: *anyopaque, buffer: Buffer, format: IndexFormat, offset: u64, size: u64) void,
|
setIndexBuffer: fn (ptr: *anyopaque, buffer: Buffer, format: IndexFormat, offset: u64, size: u64) void,
|
||||||
setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void,
|
setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void,
|
||||||
|
|
@ -118,7 +118,7 @@ pub inline fn setBindGroup(
|
||||||
pass: RenderPassEncoder,
|
pass: RenderPassEncoder,
|
||||||
group_index: u32,
|
group_index: u32,
|
||||||
group: BindGroup,
|
group: BindGroup,
|
||||||
dynamic_offsets: []u32,
|
dynamic_offsets: []const u32,
|
||||||
) void {
|
) void {
|
||||||
pass.vtable.setBindGroup(pass.ptr, group_index, group, dynamic_offsets);
|
pass.vtable.setBindGroup(pass.ptr, group_index, group, dynamic_offsets);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue