| // 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_COMMAND_BUFFER_H_ |
| #define FLUTTER_LIB_GPU_COMMAND_BUFFER_H_ |
| |
| #include "flutter/lib/gpu/context.h" |
| #include "flutter/lib/gpu/export.h" |
| #include "flutter/lib/ui/dart_wrapper.h" |
| #include "impeller/renderer/command_buffer.h" |
| |
| namespace flutter { |
| namespace gpu { |
| |
| class CommandBuffer : public RefCountedDartWrappable<CommandBuffer> { |
| DEFINE_WRAPPERTYPEINFO(); |
| FML_FRIEND_MAKE_REF_COUNTED(CommandBuffer); |
| |
| public: |
| explicit CommandBuffer( |
| std::shared_ptr<impeller::CommandBuffer> command_buffer); |
| |
| std::shared_ptr<impeller::CommandBuffer> GetCommandBuffer(); |
| |
| void AddRenderPass(std::shared_ptr<impeller::RenderPass> render_pass); |
| |
| bool Submit(); |
| bool Submit( |
| const impeller::CommandBuffer::CompletionCallback& completion_callback); |
| |
| ~CommandBuffer() override; |
| |
| private: |
| std::shared_ptr<impeller::CommandBuffer> command_buffer_; |
| std::vector<std::shared_ptr<impeller::RenderPass>> encodables_; |
| |
| FML_DISALLOW_COPY_AND_ASSIGN(CommandBuffer); |
| }; |
| |
| } // namespace gpu |
| } // namespace flutter |
| |
| //---------------------------------------------------------------------------- |
| /// Exports |
| /// |
| |
| extern "C" { |
| |
| FLUTTER_GPU_EXPORT |
| extern bool InternalFlutterGpu_CommandBuffer_Initialize( |
| Dart_Handle wrapper, |
| flutter::gpu::Context* contextWrapper); |
| |
| FLUTTER_GPU_EXPORT |
| extern Dart_Handle InternalFlutterGpu_CommandBuffer_Submit( |
| flutter::gpu::CommandBuffer* wrapper, |
| Dart_Handle completion_callback); |
| |
| } // extern "C" |
| |
| #endif // FLUTTER_LIB_GPU_COMMAND_BUFFER_H_ |