diff --git a/filament/backend/CMakeLists.txt b/filament/backend/CMakeLists.txt index a6d941d140..ec77a49c2c 100644 --- a/filament/backend/CMakeLists.txt +++ b/filament/backend/CMakeLists.txt @@ -412,6 +412,7 @@ endif() if (APPLE AND NOT IOS) target_link_libraries(${TARGET} PRIVATE "-framework Cocoa") + target_link_libraries(${TARGET} PRIVATE "-framework QuartzCore") endif() target_link_libraries(${TARGET} PUBLIC math) diff --git a/filament/backend/src/metal/MetalHandles.mm b/filament/backend/src/metal/MetalHandles.mm index f6d3190c06..317173544d 100644 --- a/filament/backend/src/metal/MetalHandles.mm +++ b/filament/backend/src/metal/MetalHandles.mm @@ -118,6 +118,10 @@ MetalSwapChain::MetalSwapChain( layerDrawableMutex(std::make_shared()), type(SwapChainType::CAMETALLAYER) { + FILAMENT_CHECK_PRECONDITION([nativeWindow isKindOfClass:[CAMetalLayer class]]) + << "nativeWindow pointer of class " + << [NSStringFromClass([nativeWindow class]) UTF8String] << " is not a CAMetalLayer"; + if (!(flags & SwapChain::CONFIG_TRANSPARENT) && !nativeWindow.opaque) { LOG(WARNING) << "Warning: Filament SwapChain has no CONFIG_TRANSPARENT flag, but the " "CAMetaLayer("