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: // TODO:
// WGPU_EXPORT void wgpuAdapterRequestDevice(WGPUAdapter adapter, WGPUDeviceDescriptor const * descriptor, WGPURequestDeviceCallback callback, void * userdata); // WGPU_EXPORT void wgpuAdapterRequestDevice(WGPUAdapter adapter, WGPUDeviceDescriptor const * descriptor, WGPURequestDeviceCallback callback, void * userdata);
// WGPU_EXPORT WGPUDevice wgpuAdapterCreateDevice(WGPUAdapter adapter, WGPUDeviceDescriptor const * descriptor); // WGPU_EXPORT WGPUDevice wgpuAdapterCreateDevice(WGPUAdapter adapter, WGPUDeviceDescriptor const * descriptor);
// WGPU_EXPORT void wgpuAdapterReference(WGPUAdapter adapter); reference: fn (ptr: *anyopaque) void,
// WGPU_EXPORT void wgpuAdapterRelease(WGPUAdapter adapter); 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. /// Tests of the given feature can be used to create devices on this adapter.
pub fn hasFeature(adapter: Adapter, feature: FeatureName) bool { pub fn hasFeature(adapter: Adapter, feature: FeatureName) bool {
for (adapter.features) |f| { 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 // TODO: implement Device interface