mirror of
https://github.com/ziglang/zig.git
synced 2026-02-14 13:30:45 +00:00
target: split addresses and physical_storage_buffer features
This commit is contained in:
parent
c1977bf0fb
commit
78ad866dd1
@ -15,13 +15,14 @@ pub const Feature = enum {
|
||||
int64,
|
||||
float16,
|
||||
float64,
|
||||
addresses,
|
||||
matrix,
|
||||
storage_push_constant16,
|
||||
kernel,
|
||||
addresses,
|
||||
generic_pointer,
|
||||
vector16,
|
||||
shader,
|
||||
physical_storage_buffer,
|
||||
};
|
||||
|
||||
pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
|
||||
@ -94,11 +95,6 @@ pub const all_features = blk: {
|
||||
.description = "Enable Float64 capability",
|
||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||
};
|
||||
result[@intFromEnum(Feature.addresses)] = .{
|
||||
.llvm_name = null,
|
||||
.description = "Enable either the Addresses capability or, SPV_KHR_physical_storage_buffer extension and the PhysicalStorageBufferAddresses capability",
|
||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||
};
|
||||
result[@intFromEnum(Feature.matrix)] = .{
|
||||
.llvm_name = null,
|
||||
.description = "Enable Matrix capability",
|
||||
@ -114,6 +110,11 @@ pub const all_features = blk: {
|
||||
.description = "Enable Kernel capability",
|
||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||
};
|
||||
result[@intFromEnum(Feature.addresses)] = .{
|
||||
.llvm_name = null,
|
||||
.description = "Enable Addresses capability",
|
||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||
};
|
||||
result[@intFromEnum(Feature.generic_pointer)] = .{
|
||||
.llvm_name = null,
|
||||
.description = "Enable GenericPointer capability",
|
||||
@ -129,6 +130,11 @@ pub const all_features = blk: {
|
||||
.description = "Enable Shader capability",
|
||||
.dependencies = featureSet(&[_]Feature{ .v1_0, .matrix }),
|
||||
};
|
||||
result[@intFromEnum(Feature.physical_storage_buffer)] = .{
|
||||
.llvm_name = null,
|
||||
.description = "Enable SPV_KHR_physical_storage_buffer extension and the PhysicalStorageBufferAddresses capability",
|
||||
.dependencies = featureSet(&[_]Feature{.v1_0}),
|
||||
};
|
||||
const ti = @typeInfo(Feature);
|
||||
for (&result, 0..) |*elem, i| {
|
||||
elem.index = i;
|
||||
@ -147,7 +153,7 @@ pub const cpu = struct {
|
||||
pub const vulkan_v1_2: CpuModel = .{
|
||||
.name = "vulkan_v1_2",
|
||||
.llvm_name = null,
|
||||
.features = featureSet(&[_]Feature{ .v1_5, .shader, .addresses }),
|
||||
.features = featureSet(&[_]Feature{ .v1_5, .shader, .physical_storage_buffer }),
|
||||
};
|
||||
|
||||
pub const opencl_v2: CpuModel = .{
|
||||
|
||||
@ -343,18 +343,17 @@ pub fn finalize(self: *Module, a: Allocator) ![]Word {
|
||||
try self.addExtension("SPV_KHR_16bit_storage");
|
||||
try self.addCapability(.StoragePushConstant16);
|
||||
},
|
||||
.addresses => if (self.hasFeature(.shader)) {
|
||||
try self.addExtension("SPV_KHR_physical_storage_buffer");
|
||||
try self.addCapability(.PhysicalStorageBufferAddresses);
|
||||
} else {
|
||||
try self.addCapability(.Addresses);
|
||||
},
|
||||
.addresses => try self.addCapability(.Addresses),
|
||||
// Kernel
|
||||
.kernel => try self.addCapability(.Kernel),
|
||||
.generic_pointer => try self.addCapability(.GenericPointer),
|
||||
.vector16 => try self.addCapability(.Vector16),
|
||||
// Shader
|
||||
.shader => try self.addCapability(.Shader),
|
||||
.physical_storage_buffer => {
|
||||
try self.addExtension("SPV_KHR_physical_storage_buffer");
|
||||
try self.addCapability(.PhysicalStorageBufferAddresses);
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user