Flutter Engine
The Flutter Engine
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
17
18#include <cstdint>
19#include <cstring>
20
21namespace skgpu {
22
23/**
24 * Helper class that eats in an array of extensions strings for instance and device and allows for
25 * quicker querying if an extension is present.
26 */
28public:
30
31 void init(VulkanGetProc, VkInstance, VkPhysicalDevice,
32 uint32_t instanceExtensionCount, const char* const* instanceExtensions,
33 uint32_t deviceExtensionCount, const char* const* deviceExtensions);
34
35 bool hasExtension(const char[], uint32_t minVersion) const;
36
37 struct Info {
38 Info() {}
39 Info(const char* name) : fName(name), fSpecVersion(0) {}
40
42 uint32_t fSpecVersion;
43
44 struct Less {
45 bool operator()(const Info& a, const SkString& b) const {
46 return std::strcmp(a.fName.c_str(), b.c_str()) < 0;
47 }
48 bool operator()(const SkString& a, const VulkanExtensions::Info& b) const {
49 return std::strcmp(a.c_str(), b.fName.c_str()) < 0;
50 }
51 };
52 };
53
54#ifdef SK_DEBUG
55 void dump() const {
56 SkDebugf("**Vulkan Extensions**\n");
57 for (int i = 0; i < fExtensions.size(); ++i) {
58 SkDebugf("%s. Version: %u\n",
59 fExtensions[i].fName.c_str(), fExtensions[i].fSpecVersion);
60 }
61 SkDebugf("**End Vulkan Extensions**\n");
62 }
63#endif
64
65private:
66 void getSpecVersions(const VulkanGetProc& getProc, VkInstance, VkPhysicalDevice);
67
69};
70
71} // namespace skgpu
72
73#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)
Definition: SkYUVMath.cpp:629
static bool b
struct MyStruct a[10]
static bool init()
DEF_SWITCHES_START aot vmservice shared library name
Definition: switches.h:32
Definition: GpuTools.h:21
std::function< PFN_vkVoidFunction(const char *, VkInstance, VkDevice)> VulkanGetProc
Definition: VulkanTypes.h:30
bool operator()(const SkString &a, const VulkanExtensions::Info &b) const
bool operator()(const Info &a, const SkString &b) const