authorgravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2026-07-08 07:49:12+03:30
committergravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2026-07-08 19:27:26+03:30
log587bdfc8e5fdc63911070243c308d182f63a8555
tree21e859261c51162b46dafac3e69f7bccba0b3848
parentac7bf53d9486d6c9a079a818dc87891551eaeac1

spirv: decorate physical_storage_buffer types


1 files changed, 11 insertions(+), 8 deletions(-)

src/codegen/spirv/CodeGen.zig+11-8
......@@ -2288,7 +2288,7 @@ fn resolveType(cg: *CodeGen, ty: Type, repr: Repr) Error!Id {
22882288 }),
22892289 },
22902290 };
2291 const child_ty_id = try cg.resolveType(child_ty, .indirect);
2291 const child_ty_id = try cg.pointeeType(ptr_info.flags.address_space, child_ty, false);
22922292 const storage_class = cg.storageClass(ptr_info.flags.address_space);
22932293 const ptr_ty_id = try cg.ptrType(child_ty_id, storage_class);
22942294
......@@ -4218,13 +4218,16 @@ const MemoryOptions = struct {
42184218fn needsLayout(cg: *CodeGen, as: std.lang.AddressSpace, pointee_ty: Type) bool {
42194219 const target = cg.zcu.getTarget();
42204220 if (target.os.tag != .vulkan and target.os.tag != .opengl) return false;
4221 switch (as) {
4222 .uniform, .push_constant, .storage_buffer => {},
4223 else => return false,
4224 }
4225 return switch (pointee_ty.zigTypeTag(cg.zcu)) {
4226 .@"struct", .@"union", .array => true,
4227 .spirv => pointee_ty.isSpirvRuntimeArray(cg.zcu),
4221 return switch (as) {
4222 .uniform,
4223 .push_constant,
4224 .storage_buffer,
4225 .physical_storage_buffer,
4226 => switch (pointee_ty.zigTypeTag(cg.zcu)) {
4227 .@"struct", .@"union", .array => true,
4228 .spirv => pointee_ty.isSpirvRuntimeArray(cg.zcu),
4229 else => false,
4230 },
42284231 else => false,
42294232 };
42304233}