From ec59471765ca3bfd9fc93e7d54e147c320508476 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Fri, 18 Mar 2022 18:07:44 -0700 Subject: [PATCH] gpu: implement Device.pushErrorScope Signed-off-by: Stephen Gutekanst --- gpu/src/Device.zig | 9 +++++++-- gpu/src/NativeInstance.zig | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gpu/src/Device.zig b/gpu/src/Device.zig index 701877fb..a83521e1 100644 --- a/gpu/src/Device.zig +++ b/gpu/src/Device.zig @@ -8,6 +8,7 @@ //! https://gpuweb.github.io/gpuweb/#gpuadapter const Feature = @import("enums.zig").Feature; const ErrorType = @import("enums.zig").ErrorType; +const ErrorFilter = @import("enums.zig").ErrorFilter; const Limits = @import("data.zig").Limits; const Queue = @import("Queue.zig"); const ShaderModule = @import("ShaderModule.zig"); @@ -74,8 +75,7 @@ pub const VTable = struct { // TODO: callback // popErrorScope: fn (ptr: *anyopaque, callback: ErrorCallback) bool, // WGPU_EXPORT bool wgpuDevicePopErrorScope(WGPUDevice device, WGPUErrorCallback callback, void * userdata); - // pushErrorScope: fn (ptr: *anyopaque, filter: ErrorFilter) void, - // WGPU_EXPORT void wgpuDevicePushErrorScope(WGPUDevice device, WGPUErrorFilter filter); + pushErrorScope: fn (ptr: *anyopaque, filter: ErrorFilter) void, // TODO: callback // setDeviceLostCallback: fn (ptr: *anyopaque, callback: DeviceLostCallback) void, // 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); } +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 { return device.vtable.createBindGroup(device.ptr, descriptor); } @@ -214,6 +218,7 @@ test { _ = injectError; _ = loseForTesting; _ = createBindGroup; + _ = pushErrorScope; _ = createBindGroupLayout; _ = createSampler; _ = createShaderModule; diff --git a/gpu/src/NativeInstance.zig b/gpu/src/NativeInstance.zig index 0827e4c0..5c10be7f 100644 --- a/gpu/src/NativeInstance.zig +++ b/gpu/src/NativeInstance.zig @@ -45,6 +45,7 @@ const ComputePipeline = @import("ComputePipeline.zig"); const PresentMode = @import("enums.zig").PresentMode; const IndexFormat = @import("enums.zig").IndexFormat; const ErrorType = @import("enums.zig").ErrorType; +const ErrorFilter = @import("enums.zig").ErrorFilter; const ImageCopyBuffer = @import("structs.zig").ImageCopyBuffer; const ImageCopyTexture = @import("structs.zig").ImageCopyTexture; @@ -376,6 +377,11 @@ const device_vtable = Device.VTable{ return wrapBindGroup(c.wgpuDeviceCreateBindGroup(@ptrCast(c.WGPUDevice, ptr), &desc)); } }).createBindGroup, + .pushErrorScope = (struct { + pub fn pushErrorScope(ptr: *anyopaque, filter: ErrorFilter) void { + c.wgpuDevicePushErrorScope(@ptrCast(c.WGPUDevice, ptr), @enumToInt(filter)); + } + }).pushErrorScope, .createBindGroupLayout = (struct { pub fn createBindGroupLayout(ptr: *anyopaque, descriptor: *const BindGroupLayout.Descriptor) BindGroupLayout { const desc = c.WGPUBindGroupLayoutDescriptor{