gpu: implement Device.createExternalTexture
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
1bff7e5f3c
commit
cedf734e4e
2 changed files with 59 additions and 5 deletions
|
|
@ -19,6 +19,7 @@ const ComputePipeline = @import("ComputePipeline.zig");
|
||||||
const BindGroup = @import("BindGroup.zig");
|
const BindGroup = @import("BindGroup.zig");
|
||||||
const BindGroupLayout = @import("BindGroupLayout.zig");
|
const BindGroupLayout = @import("BindGroupLayout.zig");
|
||||||
const Buffer = @import("Buffer.zig");
|
const Buffer = @import("Buffer.zig");
|
||||||
|
const ExternalTexture = @import("ExternalTexture.zig");
|
||||||
|
|
||||||
const Device = @This();
|
const Device = @This();
|
||||||
|
|
||||||
|
|
@ -41,14 +42,10 @@ pub const VTable = struct {
|
||||||
callback: *ComputePipeline.CreateCallback,
|
callback: *ComputePipeline.CreateCallback,
|
||||||
) void,
|
) void,
|
||||||
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,
|
||||||
// WGPU_EXPORT WGPUExternalTexture wgpuDeviceCreateExternalTexture(WGPUDevice device, WGPUExternalTextureDescriptor const * externalTextureDescriptor);
|
|
||||||
// createPipelineLayout: fn (ptr: *anyopaque, descriptor: *const PipelineLayout.Descriptor) PipelineLayout,
|
// createPipelineLayout: fn (ptr: *anyopaque, descriptor: *const PipelineLayout.Descriptor) PipelineLayout,
|
||||||
// WGPU_EXPORT WGPUPipelineLayout wgpuDeviceCreatePipelineLayout(WGPUDevice device, WGPUPipelineLayoutDescriptor const * descriptor);
|
|
||||||
// createQuerySet: fn (ptr: *anyopaque, descriptor: *const QuerySet.Descriptor) QuerySet,
|
// createQuerySet: fn (ptr: *anyopaque, descriptor: *const QuerySet.Descriptor) QuerySet,
|
||||||
// WGPU_EXPORT WGPUQuerySet wgpuDeviceCreateQuerySet(WGPUDevice device, WGPUQuerySetDescriptor const * descriptor);
|
|
||||||
// createRenderBundleEncoder: fn (ptr: *anyopaque, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder,
|
// createRenderBundleEncoder: fn (ptr: *anyopaque, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder,
|
||||||
// WGPU_EXPORT WGPURenderBundleEncoder wgpuDeviceCreateRenderBundleEncoder(WGPUDevice device, WGPURenderBundleEncoderDescriptor const * descriptor);
|
|
||||||
createRenderPipeline: fn (ptr: *anyopaque, descriptor: *const RenderPipeline.Descriptor) RenderPipeline,
|
createRenderPipeline: fn (ptr: *anyopaque, descriptor: *const RenderPipeline.Descriptor) RenderPipeline,
|
||||||
createRenderPipelineAsync: fn (
|
createRenderPipelineAsync: fn (
|
||||||
ptr: *anyopaque,
|
ptr: *anyopaque,
|
||||||
|
|
@ -152,6 +149,28 @@ pub inline fn createErrorBuffer(device: Device) Buffer {
|
||||||
return device.vtable.createErrorBuffer(device.ptr);
|
return device.vtable.createErrorBuffer(device.ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub inline fn createExternalTexture(device: Device, descriptor: *const ExternalTexture.Descriptor) ExternalTexture {
|
||||||
|
return device.vtable.createExternalTexture(device.ptr, descriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
// pub inline fn createPipelineLayout(device: Device, descriptor: *const PipelineLayout.Descriptor) PipelineLayout {
|
||||||
|
// return device.vtable.createPipelineLayout(device.ptr, descriptor);
|
||||||
|
// }
|
||||||
|
// createPipelineLayout: fn (ptr: *anyopaque, descriptor: *const PipelineLayout.Descriptor) PipelineLayout,
|
||||||
|
// WGPU_EXPORT WGPUPipelineLayout wgpuDeviceCreatePipelineLayout(WGPUDevice device, WGPUPipelineLayoutDescriptor const * descriptor);
|
||||||
|
|
||||||
|
// pub inline fn createQuerySet(device: Device, descriptor: *const QuerySet.Descriptor) QuerySet {
|
||||||
|
// 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 {
|
||||||
|
// return device.vtable.createRenderBundleEncoder(device.ptr, descriptor);
|
||||||
|
// }
|
||||||
|
// createRenderBundleEncoder: fn (ptr: *anyopaque, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder,
|
||||||
|
// WGPU_EXPORT WGPURenderBundleEncoder wgpuDeviceCreateRenderBundleEncoder(WGPUDevice device, WGPURenderBundleEncoderDescriptor const * descriptor);
|
||||||
|
|
||||||
pub inline fn createRenderPipeline(device: Device, descriptor: *const RenderPipeline.Descriptor) RenderPipeline {
|
pub inline fn createRenderPipeline(device: Device, descriptor: *const RenderPipeline.Descriptor) RenderPipeline {
|
||||||
return device.vtable.createRenderPipeline(device.ptr, descriptor);
|
return device.vtable.createRenderPipeline(device.ptr, descriptor);
|
||||||
}
|
}
|
||||||
|
|
@ -195,6 +214,10 @@ test {
|
||||||
_ = createComputePipeline;
|
_ = createComputePipeline;
|
||||||
_ = createComputePipelineAsync;
|
_ = createComputePipelineAsync;
|
||||||
_ = createErrorBuffer;
|
_ = createErrorBuffer;
|
||||||
|
_ = createExternalTexture;
|
||||||
|
// _ = createPipelineLayout;
|
||||||
|
// _ = createQuerySet;
|
||||||
|
// _ = createRenderBundleEncoder;
|
||||||
_ = createRenderPipeline;
|
_ = createRenderPipeline;
|
||||||
_ = createRenderPipelineAsync;
|
_ = createRenderPipelineAsync;
|
||||||
_ = tick;
|
_ = tick;
|
||||||
|
|
|
||||||
|
|
@ -511,6 +511,37 @@ const device_vtable = Device.VTable{
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}).createErrorBuffer,
|
}).createErrorBuffer,
|
||||||
|
.createExternalTexture = (struct {
|
||||||
|
pub fn createExternalTexture(ptr: *anyopaque, descriptor: *const ExternalTexture.Descriptor) ExternalTexture {
|
||||||
|
const desc = c.WGPUExternalTextureDescriptor{
|
||||||
|
.nextInChain = null,
|
||||||
|
.label = if (descriptor.label) |l| l else null,
|
||||||
|
.plane0 = @ptrCast(c.WGPUTextureView, descriptor.plane0.ptr),
|
||||||
|
.plane1 = @ptrCast(c.WGPUTextureView, descriptor.plane1.ptr),
|
||||||
|
.colorSpace = @enumToInt(descriptor.color_space),
|
||||||
|
};
|
||||||
|
return wrapExternalTexture(c.wgpuDeviceCreateExternalTexture(@ptrCast(c.WGPUDevice, ptr), &desc));
|
||||||
|
}
|
||||||
|
}).createExternalTexture,
|
||||||
|
|
||||||
|
// pub inline fn createPipelineLayout(device: Device, descriptor: *const PipelineLayout.Descriptor) PipelineLayout {
|
||||||
|
// return device.vtable.createPipelineLayout(device.ptr);
|
||||||
|
// }
|
||||||
|
// createPipelineLayout: fn (ptr: *anyopaque, descriptor: *const PipelineLayout.Descriptor) PipelineLayout,
|
||||||
|
// WGPU_EXPORT WGPUPipelineLayout wgpuDeviceCreatePipelineLayout(WGPUDevice device, WGPUPipelineLayoutDescriptor const * descriptor);
|
||||||
|
|
||||||
|
// pub inline fn createQuerySet(device: Device, descriptor: *const QuerySet.Descriptor) QuerySet {
|
||||||
|
// return device.vtable.createQuerySet(device.ptr);
|
||||||
|
// }
|
||||||
|
// 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 {
|
||||||
|
// return device.vtable.createRenderBundleEncoder(device.ptr);
|
||||||
|
// }
|
||||||
|
// createRenderBundleEncoder: fn (ptr: *anyopaque, descriptor: *const RenderBundleEncoder.Descriptor) RenderBundleEncoder,
|
||||||
|
// WGPU_EXPORT WGPURenderBundleEncoder wgpuDeviceCreateRenderBundleEncoder(WGPUDevice device, WGPURenderBundleEncoderDescriptor const * descriptor);
|
||||||
|
|
||||||
.createRenderPipeline = (struct {
|
.createRenderPipeline = (struct {
|
||||||
pub fn createRenderPipeline(ptr: *anyopaque, descriptor: *const RenderPipeline.Descriptor) RenderPipeline {
|
pub fn createRenderPipeline(ptr: *anyopaque, descriptor: *const RenderPipeline.Descriptor) RenderPipeline {
|
||||||
var tmp_depth_stencil: c.WGPUDepthStencilState = undefined;
|
var tmp_depth_stencil: c.WGPUDepthStencilState = undefined;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue