Metal: Allow additional swapchain formats Bug: 42241264 Change-Id: Idb9b11f3faa0eca2ab58faa814872a3fc70b78a3 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/187142 Reviewed-by: Austin Eng <enga@chromium.org> Reviewed-by: Loko Kung <lokokung@google.com> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/native/Surface.cpp b/src/dawn/native/Surface.cpp index b1ea52c..013b535 100644 --- a/src/dawn/native/Surface.cpp +++ b/src/dawn/native/Surface.cpp
@@ -206,18 +206,6 @@ DAWN_TRY_ASSIGN(format, device->GetInternalFormat(config->format)); DAWN_ASSERT(format != nullptr); - // TODO(crbug.com/dawn/160): Lift this restriction once - // wgpu::Instance::GetPreferredSurfaceFormat is implemented. - // TODO(dawn:286): -#if DAWN_PLATFORM_IS(ANDROID) - constexpr wgpu::TextureFormat kRequireSwapChainFormat = wgpu::TextureFormat::RGBA8Unorm; -#else - constexpr wgpu::TextureFormat kRequireSwapChainFormat = wgpu::TextureFormat::BGRA8Unorm; -#endif // !DAWN_PLATFORM_IS(ANDROID) - DAWN_INVALID_IF(config->format != kRequireSwapChainFormat, - "Format (%s) is not %s, which is (currently) the only accepted format.", - config->format, kRequireSwapChainFormat); - if (device->HasFeature(Feature::SurfaceCapabilities)) { wgpu::TextureUsage validUsage; DAWN_TRY_ASSIGN(validUsage, device->GetSupportedSurfaceUsage(surface));
diff --git a/src/dawn/native/metal/BackendMTL.mm b/src/dawn/native/metal/BackendMTL.mm index 4d99129..5cbf306 100644 --- a/src/dawn/native/metal/BackendMTL.mm +++ b/src/dawn/native/metal/BackendMTL.mm
@@ -306,8 +306,14 @@ // Formats - // This is the only supported format in native mode (see crbug.com/dawn/160). - capabilities.formats.push_back(wgpu::TextureFormat::BGRA8Unorm); + capabilities.formats = { + wgpu::TextureFormat::BGRA8Unorm, + wgpu::TextureFormat::BGRA8UnormSrgb, + wgpu::TextureFormat::RGBA16Float, + }; +#if DAWN_PLATFORM_IS(MACOS) + capabilities.formats.push_back(wgpu::TextureFormat::RGB10A2Unorm); +#endif // DAWN_PLATFORM_IS(MACOS) // Present Modes