| ... | @@ -1178,6 +1178,14 @@ pub const DeclGen = struct { | ... | @@ -1178,6 +1178,14 @@ pub const DeclGen = struct { |
| 1178 | } | 1178 | } |
| 1179 | } | 1179 | } |
| 1180 | | 1180 | |
| | 1181 | // Turn a Zig type's name into a cache reference. |
| | 1182 | fn resolveTypeName(self: *DeclGen, ty: Type) !CacheString { |
| | 1183 | var name = std.ArrayList(u8).init(self.gpa); |
| | 1184 | defer name.deinit(); |
| | 1185 | try ty.print(name.writer(), self.module); |
| | 1186 | return try self.spv.resolveString(name.items); |
| | 1187 | } |
| | 1188 | |
| 1181 | /// Turn a Zig type into a SPIR-V Type, and return its type result-id. | 1189 | /// Turn a Zig type into a SPIR-V Type, and return its type result-id. |
| 1182 | fn resolveTypeId(self: *DeclGen, ty: Type) !IdResultType { | 1190 | fn resolveTypeId(self: *DeclGen, ty: Type) !IdResultType { |
| 1183 | const type_ref = try self.resolveType(ty, .direct); | 1191 | const type_ref = try self.resolveType(ty, .direct); |
| ... | @@ -1289,6 +1297,7 @@ pub const DeclGen = struct { | ... | @@ -1289,6 +1297,7 @@ pub const DeclGen = struct { |
| 1289 | } | 1297 | } |
| 1290 | | 1298 | |
| 1291 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ | 1299 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ |
| | 1300 | .name = try self.resolveTypeName(ty), |
| 1292 | .member_types = member_types.slice(), | 1301 | .member_types = member_types.slice(), |
| 1293 | .member_names = member_names.slice(), | 1302 | .member_names = member_names.slice(), |
| 1294 | } }); | 1303 | } }); |
| ... | @@ -1443,6 +1452,7 @@ pub const DeclGen = struct { | ... | @@ -1443,6 +1452,7 @@ pub const DeclGen = struct { |
| 1443 | } | 1452 | } |
| 1444 | | 1453 | |
| 1445 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ | 1454 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ |
| | 1455 | .name = try self.resolveTypeName(ty), |
| 1446 | .member_types = member_types[0..member_index], | 1456 | .member_types = member_types[0..member_index], |
| 1447 | } }); | 1457 | } }); |
| 1448 | | 1458 | |
| ... | @@ -1472,10 +1482,8 @@ pub const DeclGen = struct { | ... | @@ -1472,10 +1482,8 @@ pub const DeclGen = struct { |
| 1472 | try member_names.append(try self.spv.resolveString(field_name)); | 1482 | try member_names.append(try self.spv.resolveString(field_name)); |
| 1473 | } | 1483 | } |
| 1474 | | 1484 | |
| 1475 | const name = ip.stringToSlice(try mod.declPtr(struct_type.decl.unwrap().?).getFullyQualifiedName(mod)); | | |
| 1476 | | | |
| 1477 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ | 1485 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ |
| 1478 | .name = try self.spv.resolveString(name), | 1486 | .name = try self.resolveTypeName(ty), |
| 1479 | .member_types = member_types.items, | 1487 | .member_types = member_types.items, |
| 1480 | .member_names = member_names.items, | 1488 | .member_names = member_names.items, |
| 1481 | } }); | 1489 | } }); |
| ... | @@ -1555,6 +1563,7 @@ pub const DeclGen = struct { | ... | @@ -1555,6 +1563,7 @@ pub const DeclGen = struct { |
| 1555 | } | 1563 | } |
| 1556 | | 1564 | |
| 1557 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ | 1565 | const ty_ref = try self.spv.resolve(.{ .struct_type = .{ |
| | 1566 | .name = try self.resolveTypeName(ty), |
| 1558 | .member_types = &member_types, | 1567 | .member_types = &member_types, |
| 1559 | .member_names = &member_names, | 1568 | .member_names = &member_names, |
| 1560 | } }); | 1569 | } }); |