gpu: implement Adapter.reference, Adapter.release

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-03-07 20:17:41 -07:00 committed by Stephen Gutekanst
parent 77b16a3671
commit a1c9fe6897
2 changed files with 22 additions and 3 deletions

View file

@ -51,10 +51,18 @@ pub const VTable = struct {
// TODO:
// WGPU_EXPORT void wgpuAdapterRequestDevice(WGPUAdapter adapter, WGPUDeviceDescriptor const * descriptor, WGPURequestDeviceCallback callback, void * userdata);
// WGPU_EXPORT WGPUDevice wgpuAdapterCreateDevice(WGPUAdapter adapter, WGPUDeviceDescriptor const * descriptor);
// WGPU_EXPORT void wgpuAdapterReference(WGPUAdapter adapter);
// WGPU_EXPORT void wgpuAdapterRelease(WGPUAdapter adapter);
reference: fn (ptr: *anyopaque) void,
release: fn (ptr: *anyopaque) void,
};
pub inline fn reference(adapter: Adapter) void {
adapter.vtable.reference(adapter.ptr);
}
pub inline fn release(adapter: Adapter) void {
adapter.vtable.release(adapter.ptr);
}
/// Tests of the given feature can be used to create devices on this adapter.
pub fn hasFeature(adapter: Adapter, feature: FeatureName) bool {
for (adapter.features) |f| {

View file

@ -210,7 +210,18 @@ fn wrapAdapter(adapter: c.WGPUAdapter) Adapter {
};
}
const adapter_vtable = Adapter.VTable{};
const adapter_vtable = Adapter.VTable{
.reference = (struct {
pub fn reference(ptr: *anyopaque) void {
c.wgpuAdapterReference(@ptrCast(c.WGPUAdapter, ptr));
}
}).reference,
.release = (struct {
pub fn release(ptr: *anyopaque) void {
c.wgpuAdapterRelease(@ptrCast(c.WGPUAdapter, ptr));
}
}).release,
};
// TODO: implement Device interface