Commit Diff


commit - 26c6b2579543e928158fa7d3c00d8b0e04ac270c
commit + 61601587295f6d0ef1c4084530fe0318e0c72b16
blob - 78110302b1f40714d758eeaa023d4a5012fe01e0
blob + 21c041a5586c3486defa415cffd1e7964503f688
--- src/cmd/devdraw/cocoa-screen-metal.m
+++ src/cmd/devdraw/cocoa-screen-metal.m
@@ -153,6 +153,7 @@ threadmain(int argc, char **argv)
 	id<MTLLibrary> library;
 	MTLRenderPipelineDescriptor *pipelineDesc;
 	NSError *error;
+	NSArray *allDevices;
 
 	const NSWindowStyleMask Winstyle = NSWindowStyleMaskTitled
 		| NSWindowStyleMaskClosable
@@ -197,8 +198,18 @@ threadmain(int argc, char **argv)
 	[win setContentView:myContent];
 	[myContent setWantsLayer:YES];
 	[myContent setLayerContentsRedrawPolicy:NSViewLayerContentsRedrawOnSetNeedsDisplay];
-
-	device = MTLCreateSystemDefaultDevice();
+	
+	device = nil;
+	allDevices = MTLCopyAllDevices();
+	for(id mtlDevice in allDevices) {
+		if ([mtlDevice isLowPower] && ![mtlDevice isRemovable]) {
+			device = mtlDevice;
+			break;
+		}
+	}
+	if(!device)
+		device = MTLCreateSystemDefaultDevice();
+	
 	commandQueue = [device newCommandQueue];
 
 	layer = (DrawLayer *)[myContent layer];