[metal] Add GetMTLDevice to MetalBackend
Add metal::GetMTLDevice() method to MetalBackend to be used later
for HDRMetalCopier by chromium.
Bug: chromium:40260111
Change-Id: I1559c27131be97c48f95eb0f4ec7291ab1d04853
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/193002
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Saifuddin Hitawala <hitawala@chromium.org>
diff --git a/include/dawn/native/MetalBackend.h b/include/dawn/native/MetalBackend.h
index b4d6c34..a0ff892 100644
--- a/include/dawn/native/MetalBackend.h
+++ b/include/dawn/native/MetalBackend.h
@@ -31,6 +31,10 @@
#include "dawn/native/dawn_native_export.h"
#include "dawn/webgpu.h"
+#if defined(__OBJC__)
+#import <Metal/Metal.h>
+#endif
+
namespace dawn::native::metal {
// When making Metal interop with other APIs, we need to be careful that QueueSubmit doesn't
@@ -40,6 +44,11 @@
// scheduled could lead to races in who gets scheduled first and incorrect rendering.
DAWN_NATIVE_EXPORT void WaitForCommandsToBeScheduled(WGPUDevice device);
+#if defined(__OBJC__)
+// Return the MTLDevice corresponding to the WGPUDevice.
+DAWN_NATIVE_EXPORT id<MTLDevice> GetMTLDevice(WGPUDevice device);
+#endif
+
} // namespace dawn::native::metal
#endif // INCLUDE_DAWN_NATIVE_METALBACKEND_H_
diff --git a/src/dawn/native/metal/MetalBackend.mm b/src/dawn/native/metal/MetalBackend.mm
index 6791ebb..fcbfc87e 100644
--- a/src/dawn/native/metal/MetalBackend.mm
+++ b/src/dawn/native/metal/MetalBackend.mm
@@ -42,4 +42,9 @@
ToBackend(backendDevice->GetQueue())->WaitForCommandsToBeScheduled();
}
+id<MTLDevice> GetMTLDevice(WGPUDevice device) {
+ Device* backendDevice = ToBackend(FromAPI(device));
+ return backendDevice->GetMTLDevice();
+}
+
} // namespace dawn::native::metal
diff --git a/src/dawn/tests/end2end/AdapterEnumerationTests.cpp b/src/dawn/tests/end2end/AdapterEnumerationTests.cpp
index 9bc36e2..a811394 100644
--- a/src/dawn/tests/end2end/AdapterEnumerationTests.cpp
+++ b/src/dawn/tests/end2end/AdapterEnumerationTests.cpp
@@ -45,10 +45,6 @@
#include "dawn/native/D3D12Backend.h"
#endif // defined(DAWN_ENABLE_BACKEND_D3D12)
-#if defined(DAWN_ENABLE_BACKEND_METAL)
-#include "dawn/native/MetalBackend.h"
-#endif // defined(DAWN_ENABLE_BACKEND_METAL)
-
#if defined(DAWN_ENABLE_BACKEND_OPENGL)
#include "dawn/native/OpenGLBackend.h"
#endif // defined(DAWN_ENABLE_BACKEND_OPENGL)
diff --git a/src/dawn/tests/end2end/VideoViewsTests_mac.cpp b/src/dawn/tests/end2end/VideoViewsTests_mac.cpp
index 1d5ca65..67f6b4b 100644
--- a/src/dawn/tests/end2end/VideoViewsTests_mac.cpp
+++ b/src/dawn/tests/end2end/VideoViewsTests_mac.cpp
@@ -34,7 +34,6 @@
#include "dawn/common/Assert.h"
#include "dawn/common/CoreFoundationRef.h"
#include "dawn/common/IOSurfaceUtils.h"
-#include "dawn/native/MetalBackend.h"
#include "dawn/utils/TextureUtils.h"
namespace dawn {