gpu: implement CommandEncoder .popDebugGroup, .pushDebugGroup, .writeTimestamp
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
d2a0bc3b68
commit
a4901343bb
2 changed files with 43 additions and 8 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
const RenderPassEncoder = @import("RenderPassEncoder.zig");
|
const RenderPassEncoder = @import("RenderPassEncoder.zig");
|
||||||
const CommandBuffer = @import("CommandBuffer.zig");
|
const CommandBuffer = @import("CommandBuffer.zig");
|
||||||
|
const QuerySet = @import("QuerySet.zig");
|
||||||
|
|
||||||
const CommandEncoder = @This();
|
const CommandEncoder = @This();
|
||||||
|
|
||||||
|
|
@ -29,17 +30,14 @@ pub const VTable = struct {
|
||||||
// injectValidationError: fn (ptr: *anyopaque, message: [*:0]const u8) void,
|
// injectValidationError: fn (ptr: *anyopaque, message: [*:0]const u8) void,
|
||||||
// WGPU_EXPORT void wgpuCommandEncoderInjectValidationError(WGPUCommandEncoder commandEncoder, char const * message);
|
// WGPU_EXPORT void wgpuCommandEncoderInjectValidationError(WGPUCommandEncoder commandEncoder, char const * message);
|
||||||
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,
|
||||||
// WGPU_EXPORT void wgpuCommandEncoderPopDebugGroup(WGPUCommandEncoder commandEncoder);
|
pushDebugGroup: fn (ptr: *anyopaque, group_label: [*:0]const u8) void,
|
||||||
// pushDebugGroup: fn (ptr: *anyopaque, group_label: [*:0]const u8) void,
|
|
||||||
// WGPU_EXPORT void wgpuCommandEncoderPushDebugGroup(WGPUCommandEncoder commandEncoder, char const * groupLabel);
|
|
||||||
// resolveQuerySet: fn (ptr: *anyopaque, query_set: QuerySet, first_query: u32, query_count: u32, destination: Buffer, destination_offset: u64) void,
|
// resolveQuerySet: fn (ptr: *anyopaque, query_set: QuerySet, first_query: u32, query_count: u32, destination: Buffer, destination_offset: u64) void,
|
||||||
// WGPU_EXPORT void wgpuCommandEncoderResolveQuerySet(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t firstQuery, uint32_t queryCount, WGPUBuffer destination, uint64_t destinationOffset);
|
// WGPU_EXPORT void wgpuCommandEncoderResolveQuerySet(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t firstQuery, uint32_t queryCount, WGPUBuffer destination, uint64_t destinationOffset);
|
||||||
setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void,
|
setLabel: fn (ptr: *anyopaque, label: [:0]const u8) void,
|
||||||
// TODO: typed buffer pointer?
|
// TODO: typed buffer pointer?
|
||||||
// WGPU_EXPORT void wgpuCommandEncoderWriteBuffer(WGPUCommandEncoder commandEncoder, WGPUBuffer buffer, uint64_t bufferOffset, uint8_t const * data, uint64_t size);
|
// WGPU_EXPORT void wgpuCommandEncoderWriteBuffer(WGPUCommandEncoder commandEncoder, WGPUBuffer buffer, uint64_t bufferOffset, uint8_t const * data, uint64_t size);
|
||||||
// writeTimestamp: fn (ptr: *anyopaque, query_set: QuerySet, query_index: u32) void,
|
writeTimestamp: fn (ptr: *anyopaque, query_set: QuerySet, query_index: u32) void,
|
||||||
// WGPU_EXPORT void wgpuCommandEncoderWriteTimestamp(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t queryIndex);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pub inline fn reference(enc: CommandEncoder) void {
|
pub inline fn reference(enc: CommandEncoder) void {
|
||||||
|
|
@ -50,6 +48,10 @@ pub inline fn release(enc: CommandEncoder) void {
|
||||||
enc.vtable.release(enc.ptr);
|
enc.vtable.release(enc.ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub inline fn beginRenderPass(enc: CommandEncoder, descriptor: *const RenderPassEncoder.Descriptor) RenderPassEncoder {
|
||||||
|
return enc.vtable.beginRenderPass(enc.ptr, descriptor);
|
||||||
|
}
|
||||||
|
|
||||||
pub inline fn finish(enc: CommandEncoder, descriptor: ?*const CommandBuffer.Descriptor) CommandBuffer {
|
pub inline fn finish(enc: CommandEncoder, descriptor: ?*const CommandBuffer.Descriptor) CommandBuffer {
|
||||||
return enc.vtable.finish(enc.ptr, descriptor);
|
return enc.vtable.finish(enc.ptr, descriptor);
|
||||||
}
|
}
|
||||||
|
|
@ -58,12 +60,20 @@ pub inline fn insertDebugMarker(enc: CommandEncoder, marker_label: [*:0]const u8
|
||||||
enc.vtable.insertDebugMarker(enc.ptr, marker_label);
|
enc.vtable.insertDebugMarker(enc.ptr, marker_label);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub inline fn popDebugGroup(enc: CommandEncoder) void {
|
||||||
|
enc.vtable.popDebugGroup(enc.ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub inline fn pushDebugGroup(enc: CommandEncoder, group_label: [*:0]const u8) void {
|
||||||
|
enc.vtable.pushDebugGroup(enc.ptr, group_label);
|
||||||
|
}
|
||||||
|
|
||||||
pub inline fn setLabel(enc: CommandEncoder, label: [:0]const u8) void {
|
pub inline fn setLabel(enc: CommandEncoder, label: [:0]const u8) void {
|
||||||
enc.vtable.setLabel(enc.ptr, label);
|
enc.vtable.setLabel(enc.ptr, label);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub inline fn beginRenderPass(enc: CommandEncoder, descriptor: *const RenderPassEncoder.Descriptor) RenderPassEncoder {
|
pub inline fn writeTimestamp(pass: RenderPassEncoder, query_set: QuerySet, query_index: u32) void {
|
||||||
return enc.vtable.beginRenderPass(enc.ptr, descriptor);
|
pass.vtable.writeTimestamp(pass.ptr, query_set, query_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const Descriptor = struct {
|
pub const Descriptor = struct {
|
||||||
|
|
@ -75,5 +85,11 @@ test {
|
||||||
_ = reference;
|
_ = reference;
|
||||||
_ = release;
|
_ = release;
|
||||||
_ = beginRenderPass;
|
_ = beginRenderPass;
|
||||||
|
_ = finish;
|
||||||
|
_ = insertDebugMarker;
|
||||||
|
_ = popDebugGroup;
|
||||||
|
_ = pushDebugGroup;
|
||||||
|
_ = setLabel;
|
||||||
|
_ = writeTimestamp;
|
||||||
_ = Descriptor;
|
_ = Descriptor;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1571,6 +1571,25 @@ const command_encoder_vtable = CommandEncoder.VTable{
|
||||||
return wrapRenderPassEncoder(c.wgpuCommandEncoderBeginRenderPass(@ptrCast(c.WGPUCommandEncoder, ptr), &desc));
|
return wrapRenderPassEncoder(c.wgpuCommandEncoderBeginRenderPass(@ptrCast(c.WGPUCommandEncoder, ptr), &desc));
|
||||||
}
|
}
|
||||||
}).beginRenderPass,
|
}).beginRenderPass,
|
||||||
|
.popDebugGroup = (struct {
|
||||||
|
pub fn popDebugGroup(ptr: *anyopaque) void {
|
||||||
|
c.wgpuCommandEncoderPopDebugGroup(@ptrCast(c.WGPUCommandEncoder, ptr));
|
||||||
|
}
|
||||||
|
}).popDebugGroup,
|
||||||
|
.pushDebugGroup = (struct {
|
||||||
|
pub fn pushDebugGroup(ptr: *anyopaque, group_label: [*:0]const u8) void {
|
||||||
|
c.wgpuCommandEncoderPushDebugGroup(@ptrCast(c.WGPUCommandEncoder, ptr), group_label);
|
||||||
|
}
|
||||||
|
}).pushDebugGroup,
|
||||||
|
.writeTimestamp = (struct {
|
||||||
|
pub fn writeTimestamp(ptr: *anyopaque, query_set: QuerySet, query_index: u32) void {
|
||||||
|
c.wgpuCommandEncoderWriteTimestamp(
|
||||||
|
@ptrCast(c.WGPUCommandEncoder, ptr),
|
||||||
|
@ptrCast(c.WGPUQuerySet, query_set.ptr),
|
||||||
|
query_index,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}).writeTimestamp,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn wrapComputePassEncoder(enc: c.WGPUComputePassEncoder) ComputePassEncoder {
|
fn wrapComputePassEncoder(enc: c.WGPUComputePassEncoder) ComputePassEncoder {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue