gpu: internalize Adapter types
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
eb646e6f43
commit
44377e2e27
2 changed files with 34 additions and 34 deletions
|
|
@ -8,6 +8,34 @@ const RequestDeviceStatus = @import("types.zig").RequestDeviceStatus;
|
||||||
const Impl = @import("interface.zig").Impl;
|
const Impl = @import("interface.zig").Impl;
|
||||||
|
|
||||||
pub const Adapter = opaque {
|
pub const Adapter = opaque {
|
||||||
|
pub const Type = enum(u32) {
|
||||||
|
discrete_gpu,
|
||||||
|
integrated_gpu,
|
||||||
|
cpu,
|
||||||
|
unknown,
|
||||||
|
|
||||||
|
pub fn name(t: Type) []const u8 {
|
||||||
|
return switch (t) {
|
||||||
|
.discrete_gpu => "Discrete GPU",
|
||||||
|
.integrated_gpu => "Integrated GPU",
|
||||||
|
.cpu => "CPU",
|
||||||
|
.unknown => "Unknown",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
pub const Properties = extern struct {
|
||||||
|
next_in_chain: ?*ChainedStructOut = null,
|
||||||
|
vendor_id: u32,
|
||||||
|
vendor_name: [*:0]const u8,
|
||||||
|
architecture: [*:0]const u8,
|
||||||
|
device_id: u32,
|
||||||
|
name: [*:0]const u8,
|
||||||
|
driver_description: [*:0]const u8,
|
||||||
|
adapter_type: Type,
|
||||||
|
backend_type: Type,
|
||||||
|
};
|
||||||
|
|
||||||
pub inline fn createDevice(adapter: *Adapter, descriptor: ?*const DeviceDescriptor) ?Device {
|
pub inline fn createDevice(adapter: *Adapter, descriptor: ?*const DeviceDescriptor) ?Device {
|
||||||
return Impl.adapterCreateDevice(adapter, descriptor);
|
return Impl.adapterCreateDevice(adapter, descriptor);
|
||||||
}
|
}
|
||||||
|
|
@ -21,7 +49,7 @@ pub const Adapter = opaque {
|
||||||
return Impl.adapterGetLimits(adapter, limits);
|
return Impl.adapterGetLimits(adapter, limits);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub inline fn getProperties(adapter: *Adapter, properties: *AdapterProperties) void {
|
pub inline fn getProperties(adapter: *Adapter, properties: *Adapter.Properties) void {
|
||||||
Impl.adapterGetProperties(adapter, properties);
|
Impl.adapterGetProperties(adapter, properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -49,34 +77,6 @@ pub const RequestDeviceCallback = fn (
|
||||||
userdata: *anyopaque,
|
userdata: *anyopaque,
|
||||||
) callconv(.C) void;
|
) callconv(.C) void;
|
||||||
|
|
||||||
pub const AdapterType = enum(u32) {
|
test "Adapter.Type name" {
|
||||||
discrete_gpu,
|
try testing.expectEqualStrings("Discrete GPU", Adapter.Type.discrete_gpu.name());
|
||||||
integrated_gpu,
|
|
||||||
cpu,
|
|
||||||
unknown,
|
|
||||||
|
|
||||||
pub fn name(t: AdapterType) []const u8 {
|
|
||||||
return switch (t) {
|
|
||||||
.discrete_gpu => "Discrete GPU",
|
|
||||||
.integrated_gpu => "Integrated GPU",
|
|
||||||
.cpu => "CPU",
|
|
||||||
.unknown => "Unknown",
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const AdapterProperties = extern struct {
|
|
||||||
next_in_chain: ?*ChainedStructOut = null,
|
|
||||||
vendor_id: u32,
|
|
||||||
vendor_name: [*:0]const u8,
|
|
||||||
architecture: [*:0]const u8,
|
|
||||||
device_id: u32,
|
|
||||||
name: [*:0]const u8,
|
|
||||||
driver_description: [*:0]const u8,
|
|
||||||
adapter_type: AdapterType,
|
|
||||||
backend_type: AdapterType,
|
|
||||||
};
|
|
||||||
|
|
||||||
test "AdapterType name" {
|
|
||||||
try testing.expectEqualStrings("Discrete GPU", AdapterType.discrete_gpu.name());
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ pub fn Interface(comptime T: type) type {
|
||||||
assertDecl(T, "adapterCreateDevice", fn (adapter: *gpu.Adapter, descriptor: ?*const gpu.DeviceDescriptor) callconv(.Inline) ?gpu.Device);
|
assertDecl(T, "adapterCreateDevice", fn (adapter: *gpu.Adapter, descriptor: ?*const gpu.DeviceDescriptor) callconv(.Inline) ?gpu.Device);
|
||||||
assertDecl(T, "adapterEnumerateFeatures", fn (adapter: *gpu.Adapter, features: ?[*]gpu.FeatureName) callconv(.Inline) usize);
|
assertDecl(T, "adapterEnumerateFeatures", fn (adapter: *gpu.Adapter, features: ?[*]gpu.FeatureName) callconv(.Inline) usize);
|
||||||
assertDecl(T, "adapterGetLimits", fn (adapter: *gpu.Adapter, limits: *gpu.SupportedLimits) callconv(.Inline) bool);
|
assertDecl(T, "adapterGetLimits", fn (adapter: *gpu.Adapter, limits: *gpu.SupportedLimits) callconv(.Inline) bool);
|
||||||
assertDecl(T, "adapterGetProperties", fn (adapter: *gpu.Adapter, properties: *gpu.AdapterProperties) callconv(.Inline) void);
|
assertDecl(T, "adapterGetProperties", fn (adapter: *gpu.Adapter, properties: *gpu.Adapter.Properties) callconv(.Inline) void);
|
||||||
assertDecl(T, "adapterHasFeature", fn (adapter: *gpu.Adapter, feature: gpu.FeatureName) callconv(.Inline) bool);
|
assertDecl(T, "adapterHasFeature", fn (adapter: *gpu.Adapter, feature: gpu.FeatureName) callconv(.Inline) bool);
|
||||||
assertDecl(T, "adapterRequestDevice", fn (adapter: *gpu.Adapter, descriptor: ?*const gpu.DeviceDescriptor, callback: gpu.RequestDeviceCallback, userdata: *anyopaque) callconv(.Inline) void);
|
assertDecl(T, "adapterRequestDevice", fn (adapter: *gpu.Adapter, descriptor: ?*const gpu.DeviceDescriptor, callback: gpu.RequestDeviceCallback, userdata: *anyopaque) callconv(.Inline) void);
|
||||||
assertDecl(T, "adapterReference", fn (adapter: *gpu.Adapter) callconv(.Inline) void);
|
assertDecl(T, "adapterReference", fn (adapter: *gpu.Adapter) callconv(.Inline) void);
|
||||||
|
|
@ -253,7 +253,7 @@ pub fn Export(comptime T: type) type {
|
||||||
}
|
}
|
||||||
|
|
||||||
// WGPU_EXPORT void wgpuAdapterGetProperties(WGPUAdapter adapter, WGPUAdapterProperties * properties);
|
// WGPU_EXPORT void wgpuAdapterGetProperties(WGPUAdapter adapter, WGPUAdapterProperties * properties);
|
||||||
export fn wgpuAdapterGetProperties(adapter: *gpu.Adapter, properties: *gpu.AdapterProperties) void {
|
export fn wgpuAdapterGetProperties(adapter: *gpu.Adapter, properties: *gpu.Adapter.Properties) void {
|
||||||
return T.adapterGetProperties(adapter, properties);
|
return T.adapterGetProperties(adapter, properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1250,7 +1250,7 @@ pub const StubInterface = Interface(struct {
|
||||||
unreachable;
|
unreachable;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub inline fn adapterGetProperties(adapter: *gpu.Adapter, properties: *gpu.AdapterProperties) void {
|
pub inline fn adapterGetProperties(adapter: *gpu.Adapter, properties: *gpu.Adapter.Properties) void {
|
||||||
_ = adapter;
|
_ = adapter;
|
||||||
_ = properties;
|
_ = properties;
|
||||||
unreachable;
|
unreachable;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue