#include "pch.h" #include "MetalDevice.h" namespace unity { namespace webrtc { class FakeMetalDeviceImpl : public MetalDevice { public: FakeMetalDeviceImpl() : device_(MTLCreateSystemDefaultDevice()) { } ~FakeMetalDeviceImpl() = default; id Device() override { return device_; } id CurrentCommandBuffer() override { return nullptr; } id CurrentCommandEncoder() override { return nullptr; } void EndCurrentCommandEncoder() override {} private: id device_; }; class UnityMetalDeviceImpl : public MetalDevice { public: UnityMetalDeviceImpl(IUnityGraphicsMetal* graphics) : graphics_(graphics) { } ~UnityMetalDeviceImpl() = default; id Device() override { return graphics_->MetalDevice(); } id CurrentCommandBuffer() override { return graphics_->CurrentCommandBuffer(); } id CurrentCommandEncoder() override { return graphics_->CurrentCommandEncoder(); } void EndCurrentCommandEncoder() override { graphics_->EndCurrentCommandEncoder(); } private: IUnityGraphicsMetal* graphics_; }; std::unique_ptr MetalDevice::Create(IUnityGraphicsMetal* device) { return std::make_unique(device); } std::unique_ptr MetalDevice::CreateForTest() { return std::make_unique(); } } }