From 42742a56efbe4726555339a0e1a7858f8563a8f0 Mon Sep 17 00:00:00 2001 From: "adam.fedor" Date: Mon, 12 Jun 2017 07:32:02 -0700 Subject: [PATCH] Fall-back to OpenGL renderer if mac hardware doesn't support Metal BUG=webrtc:7782 Review-Url: https://codereview.webrtc.org/2927983002 Cr-Commit-Position: refs/heads/master@{#18539} --- .../examples/objc/AppRTCMobile/mac/APPRTCViewController.m | 7 ++++--- .../sdk/objc/Framework/Classes/Metal/RTCMTLNSVideoView.m | 2 +- .../sdk/objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/webrtc/examples/objc/AppRTCMobile/mac/APPRTCViewController.m b/webrtc/examples/objc/AppRTCMobile/mac/APPRTCViewController.m index c23e0d59cd..d8ee1413f3 100644 --- a/webrtc/examples/objc/AppRTCMobile/mac/APPRTCViewController.m +++ b/webrtc/examples/objc/AppRTCMobile/mac/APPRTCViewController.m @@ -221,10 +221,12 @@ static NSUInteger const kBottomViewHeight = 200; // If not we're providing sensible default. #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpartial-availability" - if ([RTCMTLNSVideoView class]) { + if ([RTCMTLNSVideoView class] && [RTCMTLNSVideoView isMetalAvailable]) { _remoteVideoView = [[RTCMTLNSVideoView alloc] initWithFrame:NSZeroRect]; _localVideoView = [[RTCMTLNSVideoView alloc] initWithFrame:NSZeroRect]; - } else { + } +#pragma clang diagnostic pop + if (_remoteVideoView == nil) { NSOpenGLPixelFormatAttribute attributes[] = { NSOpenGLPFADoubleBuffer, NSOpenGLPFADepthSize, 24, @@ -245,7 +247,6 @@ static NSUInteger const kBottomViewHeight = 200; local.delegate = self; _localVideoView = local; } -#pragma clang diagnostic pop [_remoteVideoView setTranslatesAutoresizingMaskIntoConstraints:NO]; [self addSubview:_remoteVideoView]; diff --git a/webrtc/sdk/objc/Framework/Classes/Metal/RTCMTLNSVideoView.m b/webrtc/sdk/objc/Framework/Classes/Metal/RTCMTLNSVideoView.m index dd41393267..ff23bc6e6e 100644 --- a/webrtc/sdk/objc/Framework/Classes/Metal/RTCMTLNSVideoView.m +++ b/webrtc/sdk/objc/Framework/Classes/Metal/RTCMTLNSVideoView.m @@ -50,7 +50,7 @@ #pragma mark - Private + (BOOL)isMetalAvailable { - return YES; + return [MTLCopyAllDevices() count] > 0; } - (void)configure { diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h index d9f4164a8b..4990e2529e 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h @@ -13,5 +13,5 @@ NS_AVAILABLE_MAC(10.11) @interface RTCMTLNSVideoView : NSView - ++ (BOOL)isMetalAvailable; @end