mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
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.
37 lines
1.0 KiB
C++
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_
|