gpu: implement Device.pushErrorScope

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-03-18 18:07:44 -07:00 committed by Stephen Gutekanst
parent 311f2967a5
commit ec59471765
2 changed files with 13 additions and 2 deletions

View file

@ -8,6 +8,7 @@
//! https://gpuweb.github.io/gpuweb/#gpuadapter //! https://gpuweb.github.io/gpuweb/#gpuadapter
const Feature = @import("enums.zig").Feature; const Feature = @import("enums.zig").Feature;
const ErrorType = @import("enums.zig").ErrorType; const ErrorType = @import("enums.zig").ErrorType;
const ErrorFilter = @import("enums.zig").ErrorFilter;
const Limits = @import("data.zig").Limits; const Limits = @import("data.zig").Limits;
const Queue = @import("Queue.zig"); const Queue = @import("Queue.zig");
const ShaderModule = @import("ShaderModule.zig"); const ShaderModule = @import("ShaderModule.zig");
@ -74,8 +75,7 @@ pub const VTable = struct {
// TODO: callback // TODO: callback
// popErrorScope: fn (ptr: *anyopaque, callback: ErrorCallback) bool, // popErrorScope: fn (ptr: *anyopaque, callback: ErrorCallback) bool,
// WGPU_EXPORT bool wgpuDevicePopErrorScope(WGPUDevice device, WGPUErrorCallback callback, void * userdata); // WGPU_EXPORT bool wgpuDevicePopErrorScope(WGPUDevice device, WGPUErrorCallback callback, void * userdata);
// pushErrorScope: fn (ptr: *anyopaque, filter: ErrorFilter) void, pushErrorScope: fn (ptr: *anyopaque, filter: ErrorFilter) void,
// WGPU_EXPORT void wgpuDevicePushErrorScope(WGPUDevice device, WGPUErrorFilter filter);
// TODO: callback // TODO: callback
// setDeviceLostCallback: fn (ptr: *anyopaque, callback: DeviceLostCallback) void, // setDeviceLostCallback: fn (ptr: *anyopaque, callback: DeviceLostCallback) void,
// WGPU_EXPORT void wgpuDeviceSetDeviceLostCallback(WGPUDevice device, WGPUDeviceLostCallback callback, void * userdata); // WGPU_EXPORT void wgpuDeviceSetDeviceLostCallback(WGPUDevice device, WGPUDeviceLostCallback callback, void * userdata);
@ -108,6 +108,10 @@ pub inline fn loseForTesting(device: Device) void {
device.vtable.loseForTesting(device.ptr); device.vtable.loseForTesting(device.ptr);
} }
pub inline fn pushErrorScope(device: Device, filter: ErrorFilter) void {
device.vtable.pushErrorScope(device.ptr, filter);
}
pub inline fn createBindGroup(device: Device, descriptor: *const BindGroup.Descriptor) BindGroup { pub inline fn createBindGroup(device: Device, descriptor: *const BindGroup.Descriptor) BindGroup {
return device.vtable.createBindGroup(device.ptr, descriptor); return device.vtable.createBindGroup(device.ptr, descriptor);
} }
@ -214,6 +218,7 @@ test {
_ = injectError; _ = injectError;
_ = loseForTesting; _ = loseForTesting;
_ = createBindGroup; _ = createBindGroup;
_ = pushErrorScope;
_ = createBindGroupLayout; _ = createBindGroupLayout;
_ = createSampler; _ = createSampler;
_ = createShaderModule; _ = createShaderModule;

View file

@ -45,6 +45,7 @@ const ComputePipeline = @import("ComputePipeline.zig");
const PresentMode = @import("enums.zig").PresentMode; const PresentMode = @import("enums.zig").PresentMode;
const IndexFormat = @import("enums.zig").IndexFormat; const IndexFormat = @import("enums.zig").IndexFormat;
const ErrorType = @import("enums.zig").ErrorType; const ErrorType = @import("enums.zig").ErrorType;
const ErrorFilter = @import("enums.zig").ErrorFilter;
const ImageCopyBuffer = @import("structs.zig").ImageCopyBuffer; const ImageCopyBuffer = @import("structs.zig").ImageCopyBuffer;
const ImageCopyTexture = @import("structs.zig").ImageCopyTexture; const ImageCopyTexture = @import("structs.zig").ImageCopyTexture;
@ -376,6 +377,11 @@ const device_vtable = Device.VTable{
return wrapBindGroup(c.wgpuDeviceCreateBindGroup(@ptrCast(c.WGPUDevice, ptr), &desc)); return wrapBindGroup(c.wgpuDeviceCreateBindGroup(@ptrCast(c.WGPUDevice, ptr), &desc));
} }
}).createBindGroup, }).createBindGroup,
.pushErrorScope = (struct {
pub fn pushErrorScope(ptr: *anyopaque, filter: ErrorFilter) void {
c.wgpuDevicePushErrorScope(@ptrCast(c.WGPUDevice, ptr), @enumToInt(filter));
}
}).pushErrorScope,
.createBindGroupLayout = (struct { .createBindGroupLayout = (struct {
pub fn createBindGroupLayout(ptr: *anyopaque, descriptor: *const BindGroupLayout.Descriptor) BindGroupLayout { pub fn createBindGroupLayout(ptr: *anyopaque, descriptor: *const BindGroupLayout.Descriptor) BindGroupLayout {
const desc = c.WGPUBindGroupLayoutDescriptor{ const desc = c.WGPUBindGroupLayoutDescriptor{