Flutter Engine
 
Loading...
Searching...
No Matches
vulkan_application.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_VULKAN_VULKAN_APPLICATION_H_
6#define FLUTTER_VULKAN_VULKAN_APPLICATION_H_
7
8#include <memory>
9#include <string>
10#include <vector>
11
12#include "flutter/fml/macros.h"
14#include "vulkan_debug_report.h"
15
16namespace vulkan {
17
18static const size_t kGrCacheMaxByteSize = 512 * (1 << 20);
19
20class VulkanDevice;
21class VulkanProcTable;
22
23/// Applications using Vulkan acquire a VulkanApplication that attempts to
24/// create a VkInstance (with debug reporting optionally enabled).
26 public:
28 const std::string& application_name,
29 std::vector<std::string> enabled_extensions,
30 uint32_t application_version = VK_MAKE_VERSION(1, 0, 0),
31 uint32_t api_version = VK_MAKE_VERSION(1, 0, 0),
32 bool enable_validation_layers = false);
33
35
36 bool IsValid() const;
37
38 uint32_t GetAPIVersion() const;
39
41
43
44 std::unique_ptr<VulkanDevice> AcquireFirstCompatibleLogicalDevice() const;
45
46 private:
47 // Located at the beginning so it outlives instance_.
48 std::string initialization_logs_;
49 bool initialization_logs_enabled_ = true;
50 bool valid_;
51 bool enable_validation_layers_;
52 uint8_t padding_;
53 uint32_t api_version_;
54 VulkanProcTable& vk_;
56 std::unique_ptr<VulkanDebugReport> debug_report_;
57
58 std::vector<VkPhysicalDevice> GetPhysicalDevices() const;
59 std::vector<VkExtensionProperties> GetSupportedInstanceExtensions(
60 const VulkanProcTable& vk) const;
61 bool ExtensionSupported(
62 const std::vector<VkExtensionProperties>& supported_extensions,
63 const std::string& extension_name);
64 static VKAPI_ATTR VkBool32
65 DebugReportCallback(VkDebugReportFlagsEXT flags,
66 VkDebugReportObjectTypeEXT objectType,
67 uint64_t object,
68 size_t location,
69 int32_t messageCode,
70 const char* pLayerPrefix,
71 const char* pMessage,
72 void* pUserData);
73
75};
76
77} // namespace vulkan
78
79#endif // FLUTTER_VULKAN_VULKAN_APPLICATION_H_
const VulkanHandle< VkInstance > & GetInstance() const
std::unique_ptr< VulkanDevice > AcquireFirstCompatibleLogicalDevice() const
bool enable_validation_layers
Definition main.cc:36
#define FML_DISALLOW_COPY_AND_ASSIGN(TypeName)
Definition macros.h:27
static const size_t kGrCacheMaxByteSize