flutter_flutter/vulkan/vulkan_provider.h
Craig Stout 0de8218778 Transition render target images before submit.
Required by the spec; see '6.7.4. Queue Family Ownership Transfer'
of Vulkan 1.0.66.

Transitioning the image layout also fixes an image resolve failure
issue introduced by optimizations present in the intel mesa vulkan
driver v17.2.
2018-01-27 13:17:28 -08:00

37 lines
1.0 KiB
C++

// Copyright 2017 The Chromium 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_VULKAN_VULKAN_PROVIDER_H_
#define FLUTTER_VULKAN_VULKAN_PROVIDER_H_
#include "flutter/vulkan/vulkan_handle.h"
namespace vulkan {
class VulkanProvider {
public:
virtual const vulkan::VulkanProcTable& vk() = 0;
virtual const vulkan::VulkanHandle<VkDevice>& vk_device() = 0;
vulkan::VulkanHandle<VkFence> 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
#endif // FLUTTER_VULKAN_VULKAN_PROVIDER_H_