| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import <Foundation/Foundation.h> |
| |
| #import "flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalSkia.h" |
| #include "flutter/shell/platform/embedder/embedder.h" |
| |
| /** |
| * Embedding side texture wrappers for Metal external textures. |
| * Used to bridge FlutterTexture object and handle the texture copy request the |
| * Flutter engine. |
| */ |
| @interface FlutterExternalTexture : NSObject |
| |
| /** |
| * Initializes a texture adapter with |texture|. |
| */ |
| - (nonnull instancetype)initWithFlutterTexture:(nonnull id<FlutterTexture>)texture |
| darwinMetalContext:(nonnull FlutterDarwinContextMetalSkia*)context; |
| |
| /** |
| * Returns the ID for the FlutterExternalTexture instance. |
| */ |
| - (int64_t)textureID; |
| |
| /** |
| * Accepts texture buffer copy request from the Flutter engine. |
| * When the user side marks the textureID as available, the Flutter engine will |
| * callback to this method and ask for populate the |metalTexture| object, |
| * such as the texture type and the format of the pixel buffer and the texture object. |
| */ |
| - (BOOL)populateTexture:(nonnull FlutterMetalExternalTexture*)metalTexture; |
| |
| @end |