Skip to content

Commit 949c5af

Browse files
madsmtmcwfitzgerald
authored andcommitted
[metal] Do not glob-import enum variants
The `metal` crate is currently unsound regarding unknown/future enum variants, see gfx-rs/metal-rs#209 and rust-lang/rfcs#3803. `objc2-metal` fixes this by emitting C enums as a newtype + constants for each variant, but that prevents us from importing the variants/constants. So this commit converts to a pattern that works with that in preparation for the migration.
1 parent 78a5b22 commit 949c5af

File tree

2 files changed

+232
-232
lines changed

2 files changed

+232
-232
lines changed

wgpu-hal/src/metal/adapter.rs

+123-123
Original file line numberDiff line numberDiff line change
@@ -1082,144 +1082,144 @@ impl super::PrivateCapabilities {
10821082

10831083
pub fn map_format(&self, format: wgt::TextureFormat) -> MTLPixelFormat {
10841084
use wgt::TextureFormat as Tf;
1085-
use MTLPixelFormat::*;
1085+
use MTLPixelFormat as MTL;
10861086
match format {
1087-
Tf::R8Unorm => R8Unorm,
1088-
Tf::R8Snorm => R8Snorm,
1089-
Tf::R8Uint => R8Uint,
1090-
Tf::R8Sint => R8Sint,
1091-
Tf::R16Uint => R16Uint,
1092-
Tf::R16Sint => R16Sint,
1093-
Tf::R16Unorm => R16Unorm,
1094-
Tf::R16Snorm => R16Snorm,
1095-
Tf::R16Float => R16Float,
1096-
Tf::Rg8Unorm => RG8Unorm,
1097-
Tf::Rg8Snorm => RG8Snorm,
1098-
Tf::Rg8Uint => RG8Uint,
1099-
Tf::Rg8Sint => RG8Sint,
1100-
Tf::Rg16Unorm => RG16Unorm,
1101-
Tf::Rg16Snorm => RG16Snorm,
1102-
Tf::R32Uint => R32Uint,
1103-
Tf::R32Sint => R32Sint,
1104-
Tf::R32Float => R32Float,
1105-
Tf::Rg16Uint => RG16Uint,
1106-
Tf::Rg16Sint => RG16Sint,
1107-
Tf::Rg16Float => RG16Float,
1108-
Tf::Rgba8Unorm => RGBA8Unorm,
1109-
Tf::Rgba8UnormSrgb => RGBA8Unorm_sRGB,
1110-
Tf::Bgra8UnormSrgb => BGRA8Unorm_sRGB,
1111-
Tf::Rgba8Snorm => RGBA8Snorm,
1112-
Tf::Bgra8Unorm => BGRA8Unorm,
1113-
Tf::Rgba8Uint => RGBA8Uint,
1114-
Tf::Rgba8Sint => RGBA8Sint,
1115-
Tf::Rgb10a2Uint => RGB10A2Uint,
1116-
Tf::Rgb10a2Unorm => RGB10A2Unorm,
1117-
Tf::Rg11b10Ufloat => RG11B10Float,
1087+
Tf::R8Unorm => MTL::R8Unorm,
1088+
Tf::R8Snorm => MTL::R8Snorm,
1089+
Tf::R8Uint => MTL::R8Uint,
1090+
Tf::R8Sint => MTL::R8Sint,
1091+
Tf::R16Uint => MTL::R16Uint,
1092+
Tf::R16Sint => MTL::R16Sint,
1093+
Tf::R16Unorm => MTL::R16Unorm,
1094+
Tf::R16Snorm => MTL::R16Snorm,
1095+
Tf::R16Float => MTL::R16Float,
1096+
Tf::Rg8Unorm => MTL::RG8Unorm,
1097+
Tf::Rg8Snorm => MTL::RG8Snorm,
1098+
Tf::Rg8Uint => MTL::RG8Uint,
1099+
Tf::Rg8Sint => MTL::RG8Sint,
1100+
Tf::Rg16Unorm => MTL::RG16Unorm,
1101+
Tf::Rg16Snorm => MTL::RG16Snorm,
1102+
Tf::R32Uint => MTL::R32Uint,
1103+
Tf::R32Sint => MTL::R32Sint,
1104+
Tf::R32Float => MTL::R32Float,
1105+
Tf::Rg16Uint => MTL::RG16Uint,
1106+
Tf::Rg16Sint => MTL::RG16Sint,
1107+
Tf::Rg16Float => MTL::RG16Float,
1108+
Tf::Rgba8Unorm => MTL::RGBA8Unorm,
1109+
Tf::Rgba8UnormSrgb => MTL::RGBA8Unorm_sRGB,
1110+
Tf::Bgra8UnormSrgb => MTL::BGRA8Unorm_sRGB,
1111+
Tf::Rgba8Snorm => MTL::RGBA8Snorm,
1112+
Tf::Bgra8Unorm => MTL::BGRA8Unorm,
1113+
Tf::Rgba8Uint => MTL::RGBA8Uint,
1114+
Tf::Rgba8Sint => MTL::RGBA8Sint,
1115+
Tf::Rgb10a2Uint => MTL::RGB10A2Uint,
1116+
Tf::Rgb10a2Unorm => MTL::RGB10A2Unorm,
1117+
Tf::Rg11b10Ufloat => MTL::RG11B10Float,
11181118
// Ruint64 textures are emulated on metal
1119-
Tf::R64Uint => RG32Uint,
1120-
Tf::Rg32Uint => RG32Uint,
1121-
Tf::Rg32Sint => RG32Sint,
1122-
Tf::Rg32Float => RG32Float,
1123-
Tf::Rgba16Uint => RGBA16Uint,
1124-
Tf::Rgba16Sint => RGBA16Sint,
1125-
Tf::Rgba16Unorm => RGBA16Unorm,
1126-
Tf::Rgba16Snorm => RGBA16Snorm,
1127-
Tf::Rgba16Float => RGBA16Float,
1128-
Tf::Rgba32Uint => RGBA32Uint,
1129-
Tf::Rgba32Sint => RGBA32Sint,
1130-
Tf::Rgba32Float => RGBA32Float,
1131-
Tf::Stencil8 => Stencil8,
1132-
Tf::Depth16Unorm => Depth16Unorm,
1133-
Tf::Depth32Float => Depth32Float,
1134-
Tf::Depth32FloatStencil8 => Depth32Float_Stencil8,
1119+
Tf::R64Uint => MTL::RG32Uint,
1120+
Tf::Rg32Uint => MTL::RG32Uint,
1121+
Tf::Rg32Sint => MTL::RG32Sint,
1122+
Tf::Rg32Float => MTL::RG32Float,
1123+
Tf::Rgba16Uint => MTL::RGBA16Uint,
1124+
Tf::Rgba16Sint => MTL::RGBA16Sint,
1125+
Tf::Rgba16Unorm => MTL::RGBA16Unorm,
1126+
Tf::Rgba16Snorm => MTL::RGBA16Snorm,
1127+
Tf::Rgba16Float => MTL::RGBA16Float,
1128+
Tf::Rgba32Uint => MTL::RGBA32Uint,
1129+
Tf::Rgba32Sint => MTL::RGBA32Sint,
1130+
Tf::Rgba32Float => MTL::RGBA32Float,
1131+
Tf::Stencil8 => MTL::Stencil8,
1132+
Tf::Depth16Unorm => MTL::Depth16Unorm,
1133+
Tf::Depth32Float => MTL::Depth32Float,
1134+
Tf::Depth32FloatStencil8 => MTL::Depth32Float_Stencil8,
11351135
Tf::Depth24Plus => {
11361136
if self.format_depth24_stencil8 {
1137-
Depth24Unorm_Stencil8
1137+
MTL::Depth24Unorm_Stencil8
11381138
} else {
1139-
Depth32Float
1139+
MTL::Depth32Float
11401140
}
11411141
}
11421142
Tf::Depth24PlusStencil8 => {
11431143
if self.format_depth24_stencil8 {
1144-
Depth24Unorm_Stencil8
1144+
MTL::Depth24Unorm_Stencil8
11451145
} else {
1146-
Depth32Float_Stencil8
1146+
MTL::Depth32Float_Stencil8
11471147
}
11481148
}
11491149
Tf::NV12 => unreachable!(),
1150-
Tf::Rgb9e5Ufloat => RGB9E5Float,
1151-
Tf::Bc1RgbaUnorm => BC1_RGBA,
1152-
Tf::Bc1RgbaUnormSrgb => BC1_RGBA_sRGB,
1153-
Tf::Bc2RgbaUnorm => BC2_RGBA,
1154-
Tf::Bc2RgbaUnormSrgb => BC2_RGBA_sRGB,
1155-
Tf::Bc3RgbaUnorm => BC3_RGBA,
1156-
Tf::Bc3RgbaUnormSrgb => BC3_RGBA_sRGB,
1157-
Tf::Bc4RUnorm => BC4_RUnorm,
1158-
Tf::Bc4RSnorm => BC4_RSnorm,
1159-
Tf::Bc5RgUnorm => BC5_RGUnorm,
1160-
Tf::Bc5RgSnorm => BC5_RGSnorm,
1161-
Tf::Bc6hRgbFloat => BC6H_RGBFloat,
1162-
Tf::Bc6hRgbUfloat => BC6H_RGBUfloat,
1163-
Tf::Bc7RgbaUnorm => BC7_RGBAUnorm,
1164-
Tf::Bc7RgbaUnormSrgb => BC7_RGBAUnorm_sRGB,
1165-
Tf::Etc2Rgb8Unorm => ETC2_RGB8,
1166-
Tf::Etc2Rgb8UnormSrgb => ETC2_RGB8_sRGB,
1167-
Tf::Etc2Rgb8A1Unorm => ETC2_RGB8A1,
1168-
Tf::Etc2Rgb8A1UnormSrgb => ETC2_RGB8A1_sRGB,
1169-
Tf::Etc2Rgba8Unorm => EAC_RGBA8,
1170-
Tf::Etc2Rgba8UnormSrgb => EAC_RGBA8_sRGB,
1171-
Tf::EacR11Unorm => EAC_R11Unorm,
1172-
Tf::EacR11Snorm => EAC_R11Snorm,
1173-
Tf::EacRg11Unorm => EAC_RG11Unorm,
1174-
Tf::EacRg11Snorm => EAC_RG11Snorm,
1150+
Tf::Rgb9e5Ufloat => MTL::RGB9E5Float,
1151+
Tf::Bc1RgbaUnorm => MTL::BC1_RGBA,
1152+
Tf::Bc1RgbaUnormSrgb => MTL::BC1_RGBA_sRGB,
1153+
Tf::Bc2RgbaUnorm => MTL::BC2_RGBA,
1154+
Tf::Bc2RgbaUnormSrgb => MTL::BC2_RGBA_sRGB,
1155+
Tf::Bc3RgbaUnorm => MTL::BC3_RGBA,
1156+
Tf::Bc3RgbaUnormSrgb => MTL::BC3_RGBA_sRGB,
1157+
Tf::Bc4RUnorm => MTL::BC4_RUnorm,
1158+
Tf::Bc4RSnorm => MTL::BC4_RSnorm,
1159+
Tf::Bc5RgUnorm => MTL::BC5_RGUnorm,
1160+
Tf::Bc5RgSnorm => MTL::BC5_RGSnorm,
1161+
Tf::Bc6hRgbFloat => MTL::BC6H_RGBFloat,
1162+
Tf::Bc6hRgbUfloat => MTL::BC6H_RGBUfloat,
1163+
Tf::Bc7RgbaUnorm => MTL::BC7_RGBAUnorm,
1164+
Tf::Bc7RgbaUnormSrgb => MTL::BC7_RGBAUnorm_sRGB,
1165+
Tf::Etc2Rgb8Unorm => MTL::ETC2_RGB8,
1166+
Tf::Etc2Rgb8UnormSrgb => MTL::ETC2_RGB8_sRGB,
1167+
Tf::Etc2Rgb8A1Unorm => MTL::ETC2_RGB8A1,
1168+
Tf::Etc2Rgb8A1UnormSrgb => MTL::ETC2_RGB8A1_sRGB,
1169+
Tf::Etc2Rgba8Unorm => MTL::EAC_RGBA8,
1170+
Tf::Etc2Rgba8UnormSrgb => MTL::EAC_RGBA8_sRGB,
1171+
Tf::EacR11Unorm => MTL::EAC_R11Unorm,
1172+
Tf::EacR11Snorm => MTL::EAC_R11Snorm,
1173+
Tf::EacRg11Unorm => MTL::EAC_RG11Unorm,
1174+
Tf::EacRg11Snorm => MTL::EAC_RG11Snorm,
11751175
Tf::Astc { block, channel } => match channel {
11761176
AstcChannel::Unorm => match block {
1177-
AstcBlock::B4x4 => ASTC_4x4_LDR,
1178-
AstcBlock::B5x4 => ASTC_5x4_LDR,
1179-
AstcBlock::B5x5 => ASTC_5x5_LDR,
1180-
AstcBlock::B6x5 => ASTC_6x5_LDR,
1181-
AstcBlock::B6x6 => ASTC_6x6_LDR,
1182-
AstcBlock::B8x5 => ASTC_8x5_LDR,
1183-
AstcBlock::B8x6 => ASTC_8x6_LDR,
1184-
AstcBlock::B8x8 => ASTC_8x8_LDR,
1185-
AstcBlock::B10x5 => ASTC_10x5_LDR,
1186-
AstcBlock::B10x6 => ASTC_10x6_LDR,
1187-
AstcBlock::B10x8 => ASTC_10x8_LDR,
1188-
AstcBlock::B10x10 => ASTC_10x10_LDR,
1189-
AstcBlock::B12x10 => ASTC_12x10_LDR,
1190-
AstcBlock::B12x12 => ASTC_12x12_LDR,
1177+
AstcBlock::B4x4 => MTL::ASTC_4x4_LDR,
1178+
AstcBlock::B5x4 => MTL::ASTC_5x4_LDR,
1179+
AstcBlock::B5x5 => MTL::ASTC_5x5_LDR,
1180+
AstcBlock::B6x5 => MTL::ASTC_6x5_LDR,
1181+
AstcBlock::B6x6 => MTL::ASTC_6x6_LDR,
1182+
AstcBlock::B8x5 => MTL::ASTC_8x5_LDR,
1183+
AstcBlock::B8x6 => MTL::ASTC_8x6_LDR,
1184+
AstcBlock::B8x8 => MTL::ASTC_8x8_LDR,
1185+
AstcBlock::B10x5 => MTL::ASTC_10x5_LDR,
1186+
AstcBlock::B10x6 => MTL::ASTC_10x6_LDR,
1187+
AstcBlock::B10x8 => MTL::ASTC_10x8_LDR,
1188+
AstcBlock::B10x10 => MTL::ASTC_10x10_LDR,
1189+
AstcBlock::B12x10 => MTL::ASTC_12x10_LDR,
1190+
AstcBlock::B12x12 => MTL::ASTC_12x12_LDR,
11911191
},
11921192
AstcChannel::UnormSrgb => match block {
1193-
AstcBlock::B4x4 => ASTC_4x4_sRGB,
1194-
AstcBlock::B5x4 => ASTC_5x4_sRGB,
1195-
AstcBlock::B5x5 => ASTC_5x5_sRGB,
1196-
AstcBlock::B6x5 => ASTC_6x5_sRGB,
1197-
AstcBlock::B6x6 => ASTC_6x6_sRGB,
1198-
AstcBlock::B8x5 => ASTC_8x5_sRGB,
1199-
AstcBlock::B8x6 => ASTC_8x6_sRGB,
1200-
AstcBlock::B8x8 => ASTC_8x8_sRGB,
1201-
AstcBlock::B10x5 => ASTC_10x5_sRGB,
1202-
AstcBlock::B10x6 => ASTC_10x6_sRGB,
1203-
AstcBlock::B10x8 => ASTC_10x8_sRGB,
1204-
AstcBlock::B10x10 => ASTC_10x10_sRGB,
1205-
AstcBlock::B12x10 => ASTC_12x10_sRGB,
1206-
AstcBlock::B12x12 => ASTC_12x12_sRGB,
1193+
AstcBlock::B4x4 => MTL::ASTC_4x4_sRGB,
1194+
AstcBlock::B5x4 => MTL::ASTC_5x4_sRGB,
1195+
AstcBlock::B5x5 => MTL::ASTC_5x5_sRGB,
1196+
AstcBlock::B6x5 => MTL::ASTC_6x5_sRGB,
1197+
AstcBlock::B6x6 => MTL::ASTC_6x6_sRGB,
1198+
AstcBlock::B8x5 => MTL::ASTC_8x5_sRGB,
1199+
AstcBlock::B8x6 => MTL::ASTC_8x6_sRGB,
1200+
AstcBlock::B8x8 => MTL::ASTC_8x8_sRGB,
1201+
AstcBlock::B10x5 => MTL::ASTC_10x5_sRGB,
1202+
AstcBlock::B10x6 => MTL::ASTC_10x6_sRGB,
1203+
AstcBlock::B10x8 => MTL::ASTC_10x8_sRGB,
1204+
AstcBlock::B10x10 => MTL::ASTC_10x10_sRGB,
1205+
AstcBlock::B12x10 => MTL::ASTC_12x10_sRGB,
1206+
AstcBlock::B12x12 => MTL::ASTC_12x12_sRGB,
12071207
},
12081208
AstcChannel::Hdr => match block {
1209-
AstcBlock::B4x4 => ASTC_4x4_HDR,
1210-
AstcBlock::B5x4 => ASTC_5x4_HDR,
1211-
AstcBlock::B5x5 => ASTC_5x5_HDR,
1212-
AstcBlock::B6x5 => ASTC_6x5_HDR,
1213-
AstcBlock::B6x6 => ASTC_6x6_HDR,
1214-
AstcBlock::B8x5 => ASTC_8x5_HDR,
1215-
AstcBlock::B8x6 => ASTC_8x6_HDR,
1216-
AstcBlock::B8x8 => ASTC_8x8_HDR,
1217-
AstcBlock::B10x5 => ASTC_10x5_HDR,
1218-
AstcBlock::B10x6 => ASTC_10x6_HDR,
1219-
AstcBlock::B10x8 => ASTC_10x8_HDR,
1220-
AstcBlock::B10x10 => ASTC_10x10_HDR,
1221-
AstcBlock::B12x10 => ASTC_12x10_HDR,
1222-
AstcBlock::B12x12 => ASTC_12x12_HDR,
1209+
AstcBlock::B4x4 => MTL::ASTC_4x4_HDR,
1210+
AstcBlock::B5x4 => MTL::ASTC_5x4_HDR,
1211+
AstcBlock::B5x5 => MTL::ASTC_5x5_HDR,
1212+
AstcBlock::B6x5 => MTL::ASTC_6x5_HDR,
1213+
AstcBlock::B6x6 => MTL::ASTC_6x6_HDR,
1214+
AstcBlock::B8x5 => MTL::ASTC_8x5_HDR,
1215+
AstcBlock::B8x6 => MTL::ASTC_8x6_HDR,
1216+
AstcBlock::B8x8 => MTL::ASTC_8x8_HDR,
1217+
AstcBlock::B10x5 => MTL::ASTC_10x5_HDR,
1218+
AstcBlock::B10x6 => MTL::ASTC_10x6_HDR,
1219+
AstcBlock::B10x8 => MTL::ASTC_10x8_HDR,
1220+
AstcBlock::B10x10 => MTL::ASTC_10x10_HDR,
1221+
AstcBlock::B12x10 => MTL::ASTC_12x10_HDR,
1222+
AstcBlock::B12x12 => MTL::ASTC_12x12_HDR,
12231223
},
12241224
},
12251225
}
@@ -1232,18 +1232,18 @@ impl super::PrivateCapabilities {
12321232
) -> MTLPixelFormat {
12331233
use crate::FormatAspects as Fa;
12341234
use wgt::TextureFormat as Tf;
1235-
use MTLPixelFormat::*;
1235+
use MTLPixelFormat as MTL;
12361236
match (format, aspects) {
12371237
// map combined depth-stencil format to their stencil-only format
12381238
// see https://developer.apple.com/library/archive/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/WhatsNewiniOS10tvOS10andOSX1012/WhatsNewiniOS10tvOS10andOSX1012.html#//apple_ref/doc/uid/TP40014221-CH14-DontLinkElementID_77
12391239
(Tf::Depth24PlusStencil8, Fa::STENCIL) => {
12401240
if self.format_depth24_stencil8 {
1241-
X24_Stencil8
1241+
MTL::X24_Stencil8
12421242
} else {
1243-
X32_Stencil8
1243+
MTL::X32_Stencil8
12441244
}
12451245
}
1246-
(Tf::Depth32FloatStencil8, Fa::STENCIL) => X32_Stencil8,
1246+
(Tf::Depth32FloatStencil8, Fa::STENCIL) => MTL::X32_Stencil8,
12471247

12481248
_ => self.map_format(format),
12491249
}

0 commit comments

Comments
 (0)