26 int64_t textureIdentifier,
31 return [
engine.renderer populateTextureWithIdentifier:textureIdentifier
32 metalTexture:metalTexture];
35#pragma mark - FlutterRenderer implementation
46id<MTLDevice> SelectMetalDevice() {
47 NSArray<id<MTLDevice>>* devices = MTLCopyAllDevices();
48 for (id<MTLDevice>
device in devices) {
49 if (@available(macOS 10.15, *)) {
50 if (
device.hasUnifiedMemory) {
55 return MTLCreateSystemDefaultDevice();
59- (instancetype)initWithFlutterEngine:(nonnull
FlutterEngine*)flutterEngine {
60 self = [
super initWithDelegate:self engine:flutterEngine];
62 _device = SelectMetalDevice();
64 NSLog(
@"Could not acquire Metal device.");
68 _commandQueue = [_device newCommandQueue];
70 NSLog(
@"Could not create Metal command queue.");
75 commandQueue:_commandQueue];
87 .get_next_drawable_callback =
89 .present_drawable_callback =
91 .external_texture_frame_callback =
BOOL populateTexture:(nonnull FlutterMetalExternalTexture *metalTexture)