| // 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. | |
| #ifndef SHELL_PLATFORM_DARWIN_GRAPHICS_DARWIN_CONTEXT_METAL_IMPELLER_H_ | |
| #define SHELL_PLATFORM_DARWIN_GRAPHICS_DARWIN_CONTEXT_METAL_IMPELLER_H_ | |
| #import <CoreVideo/CVMetalTextureCache.h> | |
| #import <Foundation/Foundation.h> | |
| #import <Metal/Metal.h> | |
| #include "flutter/fml/platform/darwin/cf_utils.h" | |
| #import "flutter/shell/platform/darwin/common/framework/Headers/FlutterTexture.h" | |
| #import "flutter/shell/platform/darwin/graphics/FlutterDarwinExternalTextureMetal.h" | |
| #include "impeller/renderer/backend/metal/context_mtl.h" | |
| NS_ASSUME_NONNULL_BEGIN | |
| /** | |
| * Provides skia GrContexts that are shared between iOS and macOS embeddings. | |
| */ | |
| @interface FlutterDarwinContextMetalImpeller : NSObject | |
| /** | |
| * Initializes a FlutterDarwinContextMetalImpeller. | |
| */ | |
| - (instancetype)init; | |
| /** | |
| * Creates an external texture with the specified ID and contents. | |
| */ | |
| - (FlutterDarwinExternalTextureMetal*) | |
| createExternalTextureWithIdentifier:(int64_t)textureID | |
| texture:(NSObject<FlutterTexture>*)texture; | |
| /** | |
| * Impeller context; | |
| */ | |
| @property(nonatomic, readonly) std::shared_ptr<impeller::ContextMTL> context; | |
| /* | |
| * Texture cache for external textures. | |
| */ | |
| @property(nonatomic, readonly) fml::CFRef<CVMetalTextureCacheRef> textureCache; | |
| @end | |
| NS_ASSUME_NONNULL_END | |
| #endif // SHELL_PLATFORM_DARWIN_GRAPHICS_DARWIN_CONTEXT_METAL_IMPELLER_H_ |