| // 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 FLUTTER_LIB_GPU_CONTEXT_H_ |
| #define FLUTTER_LIB_GPU_CONTEXT_H_ |
| |
| #include "dart_api.h" |
| #include "flutter/lib/gpu/export.h" |
| #include "flutter/lib/ui/dart_wrapper.h" |
| #include "impeller/renderer/context.h" |
| |
| namespace flutter { |
| namespace gpu { |
| |
| class Context : public RefCountedDartWrappable<Context> { |
| DEFINE_WRAPPERTYPEINFO(); |
| FML_FRIEND_MAKE_REF_COUNTED(Context); |
| |
| public: |
| static void SetOverrideContext(std::shared_ptr<impeller::Context> context); |
| |
| static std::shared_ptr<impeller::Context> GetOverrideContext(); |
| |
| static std::shared_ptr<impeller::Context> GetDefaultContext( |
| std::optional<std::string>& out_error); |
| |
| explicit Context(std::shared_ptr<impeller::Context> context); |
| ~Context() override; |
| |
| std::shared_ptr<impeller::Context> GetContext(); |
| |
| private: |
| /// An Impeller context that takes precedent over the IO state context when |
| /// set. This is used to inject the context when running with the Impeller |
| /// playground, which doesn't instantiate an Engine instance. |
| static std::shared_ptr<impeller::Context> default_context_; |
| |
| std::shared_ptr<impeller::Context> context_; |
| |
| FML_DISALLOW_COPY_AND_ASSIGN(Context); |
| }; |
| |
| } // namespace gpu |
| } // namespace flutter |
| |
| //---------------------------------------------------------------------------- |
| /// Exports |
| /// |
| |
| extern "C" { |
| |
| FLUTTER_GPU_EXPORT |
| extern Dart_Handle InternalFlutterGpu_Context_InitializeDefault( |
| Dart_Handle wrapper); |
| |
| FLUTTER_GPU_EXPORT |
| extern int InternalFlutterGpu_Context_GetBackendType( |
| flutter::gpu::Context* wrapper); |
| |
| FLUTTER_GPU_EXPORT |
| extern int InternalFlutterGpu_Context_GetDefaultColorFormat( |
| flutter::gpu::Context* wrapper); |
| |
| FLUTTER_GPU_EXPORT |
| extern int InternalFlutterGpu_Context_GetDefaultStencilFormat( |
| flutter::gpu::Context* wrapper); |
| |
| FLUTTER_GPU_EXPORT |
| extern int InternalFlutterGpu_Context_GetDefaultDepthStencilFormat( |
| flutter::gpu::Context* wrapper); |
| |
| } // extern "C" |
| |
| #endif // FLUTTER_LIB_GPU_CONTEXT_H_ |