blob: 4669c25dd8f80a9f5cd03af831b34170ca318090 [file] [log] [blame]
Chia-I Wueb7db122016-03-24 09:11:06 +08001/*
2 * Copyright 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17// WARNING: This file is generated. See ../README.md for instructions.
18
19#ifndef LIBVULKAN_DRIVER_GEN_H
20#define LIBVULKAN_DRIVER_GEN_H
21
Chia-I Wueb7db122016-03-24 09:11:06 +080022#include <vulkan/vk_android_native_buffer.h>
Chris Forbese2d3ee12017-03-16 16:10:15 +130023#include <vulkan/vulkan.h>
Yiwei Zhang6d78a572019-04-10 15:35:38 -070024
Chris Forbese2d3ee12017-03-16 16:10:15 +130025#include <bitset>
Yiwei Zhang7c0c07c2020-07-04 23:49:47 -070026#include <optional>
27#include <vector>
Chia-I Wueb7db122016-03-24 09:11:06 +080028
29namespace vulkan {
30namespace driver {
31
32struct ProcHook {
33 enum Type {
34 GLOBAL,
35 INSTANCE,
36 DEVICE,
37 };
38 enum Extension {
39 ANDROID_native_buffer,
40 EXT_debug_report,
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -070041 EXT_hdr_metadata,
Courtney Goeltzenleuchtere278daf2017-02-02 16:54:57 -070042 EXT_swapchain_colorspace,
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -070043 GOOGLE_display_timing,
Chia-I Wueb7db122016-03-24 09:11:06 +080044 KHR_android_surface,
Yiwei Zhangdc792f52019-10-10 16:29:42 -070045 KHR_get_surface_capabilities2,
Chris Forbes48853712017-01-12 14:09:33 +130046 KHR_incremental_present,
Courtney Goeltzenleuchtere278daf2017-02-02 16:54:57 -070047 KHR_shared_presentable_image,
Chia-I Wueb7db122016-03-24 09:11:06 +080048 KHR_surface,
49 KHR_swapchain,
Jesse Halla8d367a2018-01-18 15:40:46 -080050 ANDROID_external_memory_android_hardware_buffer,
Yiwei Zhang23143102019-04-10 18:24:05 -070051 KHR_bind_memory2,
Yiwei Zhangdc792f52019-10-10 16:29:42 -070052 KHR_get_physical_device_properties2,
Chia-I Wueb7db122016-03-24 09:11:06 +080053
Yiwei Zhang7cc36a52019-10-11 19:02:09 -070054 EXTENSION_CORE_1_0,
55 EXTENSION_CORE_1_1,
Chia-I Wueb7db122016-03-24 09:11:06 +080056 EXTENSION_COUNT,
57 EXTENSION_UNKNOWN,
58 };
59
60 const char* name;
61 Type type;
62 Extension extension;
63
64 PFN_vkVoidFunction proc;
Chia-I Wu36cc00a2016-04-13 16:52:06 +080065 PFN_vkVoidFunction checked_proc; // always nullptr for non-device hooks
Chia-I Wueb7db122016-03-24 09:11:06 +080066};
67
Chia-I Wucc5e2762016-03-24 13:01:16 +080068struct InstanceDriverTable {
69 // clang-format off
70 PFN_vkDestroyInstance DestroyInstance;
71 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
72 PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
Jesse Hall85bb0c52017-02-09 22:13:02 -080073 PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
Chia-I Wucc5e2762016-03-24 13:01:16 +080074 PFN_vkCreateDevice CreateDevice;
75 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
76 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
77 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
78 PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
Adithya Srinivasan8dce9d72019-07-11 14:26:04 -070079 PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2;
Chris Forbes6aa30db2017-02-20 17:12:53 +130080 PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
Adithya Srinivasan8dce9d72019-07-11 14:26:04 -070081 PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups;
Chia-I Wucc5e2762016-03-24 13:01:16 +080082 // clang-format on
83};
84
85struct DeviceDriverTable {
86 // clang-format off
87 PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
88 PFN_vkDestroyDevice DestroyDevice;
89 PFN_vkGetDeviceQueue GetDeviceQueue;
Yiwei Zhang899d1752019-09-23 16:05:35 -070090 PFN_vkQueueSubmit QueueSubmit;
Chia-I Wucc5e2762016-03-24 13:01:16 +080091 PFN_vkCreateImage CreateImage;
92 PFN_vkDestroyImage DestroyImage;
93 PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
Yiwei Zhang23143102019-04-10 18:24:05 -070094 PFN_vkBindImageMemory2 BindImageMemory2;
Adithya Srinivasan8dce9d72019-07-11 14:26:04 -070095 PFN_vkBindImageMemory2KHR BindImageMemory2KHR;
Daniel Kochf25f5bb2017-10-05 00:26:58 -040096 PFN_vkGetDeviceQueue2 GetDeviceQueue2;
Chia-I Wucc5e2762016-03-24 13:01:16 +080097 PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID;
Yiwei Zhang4bc489b2019-09-23 15:17:22 -070098 PFN_vkGetSwapchainGrallocUsage2ANDROID GetSwapchainGrallocUsage2ANDROID;
Chia-I Wucc5e2762016-03-24 13:01:16 +080099 PFN_vkAcquireImageANDROID AcquireImageANDROID;
100 PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID;
101 // clang-format on
102};
103
Chia-I Wueb7db122016-03-24 09:11:06 +0800104const ProcHook* GetProcHook(const char* name);
105ProcHook::Extension GetProcHookExtension(const char* name);
106
Chia-I Wucbe07ef2016-04-13 15:01:00 +0800107bool InitDriverTable(VkInstance instance,
108 PFN_vkGetInstanceProcAddr get_proc,
109 const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
110bool InitDriverTable(VkDevice dev,
111 PFN_vkGetDeviceProcAddr get_proc,
112 const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
Chia-I Wucc5e2762016-03-24 13:01:16 +0800113
Yiwei Zhang7c0c07c2020-07-04 23:49:47 -0700114std::optional<uint32_t> GetInstanceExtensionPromotedVersion(const char* name);
115uint32_t CountPromotedInstanceExtensions(uint32_t begin_version,
116 uint32_t end_version);
117std::vector<const char*> GetPromotedInstanceExtensions(uint32_t begin_version,
118 uint32_t end_version);
119
Chia-I Wueb7db122016-03-24 09:11:06 +0800120} // namespace driver
121} // namespace vulkan
122
123#endif // LIBVULKAN_DRIVER_TABLE_H