// 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.

#include "flutter/vulkan/vulkan_provider.h"

namespace vulkan {

vulkan::VulkanHandle<VkFence> VulkanProvider::CreateFence() {
  const VkFenceCreateInfo create_info = {
      .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
      .pNext = nullptr,
      .flags = 0,
  };
  VkFence fence;
  if (VK_CALL_LOG_ERROR(vk().CreateFence(vk_device(), &create_info, nullptr,
                                         &fence)) != VK_SUCCESS)
    return vulkan::VulkanHandle<VkFence>();

  return {fence, [this](VkFence fence) {
            vk().DestroyFence(vk_device(), fence, nullptr);
          }};
}

}  // namespace vulkan