Commit 78ad866dd1
Changed files (2)
lib
std
Target
src
codegen
spirv
lib/std/Target/spirv.zig
@@ -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 = .{
src/codegen/spirv/Module.zig
@@ -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);
+ },
}
}
}