Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
VulkanExtensions.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 Google LLC.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef skgpu_VulkanExtensions_DEFINED
9#define skgpu_VulkanExtensions_DEFINED
10
14
15namespace skgpu {
16
17/**
18 * Helper class that eats in an array of extensions strings for instance and device and allows for
19 * quicker querying if an extension is present.
20 */
22public:
24
25 void init(VulkanGetProc, VkInstance, VkPhysicalDevice,
26 uint32_t instanceExtensionCount, const char* const* instanceExtensions,
27 uint32_t deviceExtensionCount, const char* const* deviceExtensions);
28
29 bool hasExtension(const char[], uint32_t minVersion) const;
30
31 struct Info {
32 Info() {}
33 Info(const char* name) : fName(name), fSpecVersion(0) {}
34
36 uint32_t fSpecVersion;
37
38 struct Less {
39 bool operator()(const Info& a, const SkString& b) const {
40 return strcmp(a.fName.c_str(), b.c_str()) < 0;
41 }
42 bool operator()(const SkString& a, const VulkanExtensions::Info& b) const {
43 return strcmp(a.c_str(), b.fName.c_str()) < 0;
44 }
45 };
46 };
47
48#ifdef SK_DEBUG
49 void dump() const {
50 SkDebugf("**Vulkan Extensions**\n");
51 for (int i = 0; i < fExtensions.size(); ++i) {
52 SkDebugf("%s. Version: %u\n",
53 fExtensions[i].fName.c_str(), fExtensions[i].fSpecVersion);
54 }
55 SkDebugf("**End Vulkan Extensions**\n");
56 }
57#endif
58
59private:
60 void getSpecVersions(const VulkanGetProc& getProc, VkInstance, VkPhysicalDevice);
61
63};
64
65} // namespace skgpu
66
67#endif // skgpu_VulkanExtensions_DEFINED
const char * fName
#define SK_API
Definition SkAPI.h:35
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
static void dump(const float m[20], SkYUVColorSpace cs, bool rgb2yuv)
static bool b
struct MyStruct a[10]
const char * name
Definition fuchsia.cc:50
std::function< PFN_vkVoidFunction(const char *, VkInstance, VkDevice)> VulkanGetProc
Definition VulkanTypes.h:29
bool operator()(const SkString &a, const VulkanExtensions::Info &b) const
bool operator()(const Info &a, const SkString &b) const