gpu: implement Device.createQuerySet

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-03-18 17:37:26 -07:00 committed by Stephen Gutekanst
parent acb3049739
commit 8c48c3a436
2 changed files with 19 additions and 13 deletions

View file

@ -21,6 +21,7 @@ const BindGroupLayout = @import("BindGroupLayout.zig");
const Buffer = @import("Buffer.zig"); const Buffer = @import("Buffer.zig");
const ExternalTexture = @import("ExternalTexture.zig"); const ExternalTexture = @import("ExternalTexture.zig");
const PipelineLayout = @import("PipelineLayout.zig"); const PipelineLayout = @import("PipelineLayout.zig");
const QuerySet = @import("QuerySet.zig");
const Device = @This(); const Device = @This();
@ -45,7 +46,7 @@ pub const VTable = struct {
createErrorBuffer: fn (ptr: *anyopaque) Buffer, createErrorBuffer: fn (ptr: *anyopaque) Buffer,
createExternalTexture: fn (ptr: *anyopaque, descriptor: *const ExternalTexture.Descriptor) ExternalTexture, createExternalTexture: fn (ptr: *anyopaque, descriptor: *const ExternalTexture.Descriptor) ExternalTexture,
createPipelineLayout: fn (ptr: *anyopaque, descriptor: *const PipelineLayout.Descriptor) PipelineLayout, createPipelineLayout: fn (ptr: *anyopaque, descriptor: *const PipelineLayout.Descriptor) PipelineLayout,
// createQuerySet: fn (ptr: *anyopaque, descriptor: *const QuerySet.Descriptor) QuerySet, createQuerySet: fn (ptr: *anyopaque, descriptor: *const QuerySet.Descriptor) QuerySet,
// createRenderBundleEncoder: fn (ptr: *anyopaque, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder, // createRenderBundleEncoder: fn (ptr: *anyopaque, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder,
createRenderPipeline: fn (ptr: *anyopaque, descriptor: *const RenderPipeline.Descriptor) RenderPipeline, createRenderPipeline: fn (ptr: *anyopaque, descriptor: *const RenderPipeline.Descriptor) RenderPipeline,
createRenderPipelineAsync: fn ( createRenderPipelineAsync: fn (
@ -158,11 +159,9 @@ pub inline fn createPipelineLayout(device: Device, descriptor: *const PipelineLa
return device.vtable.createPipelineLayout(device.ptr, descriptor); return device.vtable.createPipelineLayout(device.ptr, descriptor);
} }
// pub inline fn createQuerySet(device: Device, descriptor: *const QuerySet.Descriptor) QuerySet { pub inline fn createQuerySet(device: Device, descriptor: *const QuerySet.Descriptor) QuerySet {
// return device.vtable.createQuerySet(device.ptr, descriptor); return device.vtable.createQuerySet(device.ptr, descriptor);
// } }
// createQuerySet: fn (ptr: *anyopaque, descriptor: *const QuerySet.Descriptor) QuerySet,
// WGPU_EXPORT WGPUQuerySet wgpuDeviceCreateQuerySet(WGPUDevice device, WGPUQuerySetDescriptor const * descriptor);
// pub inline fn createRenderBundleEncoder(device: Device, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder { // pub inline fn createRenderBundleEncoder(device: Device, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder {
// return device.vtable.createRenderBundleEncoder(device.ptr, descriptor); // return device.vtable.createRenderBundleEncoder(device.ptr, descriptor);
@ -215,7 +214,7 @@ test {
_ = createErrorBuffer; _ = createErrorBuffer;
_ = createExternalTexture; _ = createExternalTexture;
_ = createPipelineLayout; _ = createPipelineLayout;
// _ = createQuerySet; _ = createQuerySet;
// _ = createRenderBundleEncoder; // _ = createRenderBundleEncoder;
_ = createRenderPipeline; _ = createRenderPipeline;
_ = createRenderPipelineAsync; _ = createRenderPipelineAsync;

View file

@ -549,12 +549,19 @@ const device_vtable = Device.VTable{
return wrapPipelineLayout(c.wgpuDeviceCreatePipelineLayout(@ptrCast(c.WGPUDevice, ptr), &desc)); return wrapPipelineLayout(c.wgpuDeviceCreatePipelineLayout(@ptrCast(c.WGPUDevice, ptr), &desc));
} }
}).createPipelineLayout, }).createPipelineLayout,
.createQuerySet = (struct {
// pub inline fn createQuerySet(device: Device, descriptor: *const QuerySet.Descriptor) QuerySet { pub fn createQuerySet(ptr: *anyopaque, descriptor: *const QuerySet.Descriptor) QuerySet {
// return device.vtable.createQuerySet(device.ptr); const desc = c.WGPUQuerySetDescriptor{
// } .nextInChain = null,
// createQuerySet: fn (ptr: *anyopaque, descriptor: *const QuerySet.Descriptor) QuerySet, .label = if (descriptor.label) |l| l else null,
// WGPU_EXPORT WGPUQuerySet wgpuDeviceCreateQuerySet(WGPUDevice device, WGPUQuerySetDescriptor const * descriptor); .type = @enumToInt(descriptor.type),
.count = descriptor.count,
.pipelineStatistics = @ptrCast(*const c.WGPUPipelineStatisticName, &descriptor.pipeline_statistics[0]),
.pipelineStatisticsCount = @intCast(u32, descriptor.pipeline_statistics.len),
};
return wrapQuerySet(c.wgpuDeviceCreateQuerySet(@ptrCast(c.WGPUDevice, ptr), &desc));
}
}).createQuerySet,
// pub inline fn createRenderBundleEncoder(device: Device, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder { // pub inline fn createRenderBundleEncoder(device: Device, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder {
// return device.vtable.createRenderBundleEncoder(device.ptr); // return device.vtable.createRenderBundleEncoder(device.ptr);