| // 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_IMPELLER_RENDERER_BACKEND_VULKAN_BINDING_HELPERS_VK_H_ |
| #define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_BINDING_HELPERS_VK_H_ |
| |
| #include "fml/status_or.h" |
| #include "impeller/renderer/backend/vulkan/context_vk.h" |
| #include "impeller/renderer/backend/vulkan/texture_vk.h" |
| #include "impeller/renderer/command.h" |
| #include "impeller/renderer/compute_command.h" |
| |
| namespace impeller { |
| |
| // Limit on the total number of buffer and image bindings that allow the Vulkan |
| // backend to avoid dynamic heap allocations. |
| static constexpr size_t kMaxBindings = 32; |
| |
| fml::StatusOr<vk::DescriptorSet> AllocateAndBindDescriptorSets( |
| const ContextVK& context, |
| const std::shared_ptr<CommandEncoderVK>& encoder, |
| Allocator& allocator, |
| const Command& command, |
| const TextureVK& input_attachment, |
| std::array<vk::DescriptorImageInfo, kMaxBindings>& image_workspace, |
| std::array<vk::DescriptorBufferInfo, kMaxBindings>& buffer_workspace, |
| std::array<vk::WriteDescriptorSet, kMaxBindings + kMaxBindings>& |
| write_workspace); |
| |
| fml::StatusOr<vk::DescriptorSet> AllocateAndBindDescriptorSets( |
| const ContextVK& context, |
| const std::shared_ptr<CommandEncoderVK>& encoder, |
| Allocator& allocator, |
| const ComputeCommand& command, |
| std::array<vk::DescriptorImageInfo, kMaxBindings>& image_workspace, |
| std::array<vk::DescriptorBufferInfo, kMaxBindings>& buffer_workspace, |
| std::array<vk::WriteDescriptorSet, kMaxBindings + kMaxBindings>& |
| write_workspace); |
| |
| } // namespace impeller |
| |
| #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_BINDING_HELPERS_VK_H_ |