blob: 649c0f1a176ee701db1f7bc04a1febe2ed044b84 [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
Tom Murphyea321842024-06-14 18:26:58 +000029/*
30 * This file is autogenerated by driver_generator.py. Do not edit directly.
31 */
Chia-I Wueb7db122016-03-24 09:11:06 +080032namespace vulkan {
33namespace driver {
34
35struct ProcHook {
36 enum Type {
37 GLOBAL,
38 INSTANCE,
39 DEVICE,
40 };
41 enum Extension {
42 ANDROID_native_buffer,
43 EXT_debug_report,
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -070044 EXT_hdr_metadata,
Courtney Goeltzenleuchtere278daf2017-02-02 16:54:57 -070045 EXT_swapchain_colorspace,
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -070046 GOOGLE_display_timing,
Ian Elliott1ce053f2022-03-16 09:49:53 -060047 GOOGLE_surfaceless_query,
Chia-I Wueb7db122016-03-24 09:11:06 +080048 KHR_android_surface,
Yiwei Zhangdc792f52019-10-10 16:29:42 -070049 KHR_get_surface_capabilities2,
Chris Forbes48853712017-01-12 14:09:33 +130050 KHR_incremental_present,
Courtney Goeltzenleuchtere278daf2017-02-02 16:54:57 -070051 KHR_shared_presentable_image,
Chia-I Wueb7db122016-03-24 09:11:06 +080052 KHR_surface,
Ian Elliottbb67b242022-03-16 09:52:28 -060053 KHR_surface_protected_capabilities,
Chia-I Wueb7db122016-03-24 09:11:06 +080054 KHR_swapchain,
Chris Forbes9d0d9ff2022-12-28 01:58:31 +000055 EXT_swapchain_maintenance1,
56 EXT_surface_maintenance1,
Jesse Halla8d367a2018-01-18 15:40:46 -080057 ANDROID_external_memory_android_hardware_buffer,
Yiwei Zhang23143102019-04-10 18:24:05 -070058 KHR_bind_memory2,
Yiwei Zhangdc792f52019-10-10 16:29:42 -070059 KHR_get_physical_device_properties2,
Yiwei Zhange4f64172020-07-05 15:17:32 -070060 KHR_device_group_creation,
Yiwei Zhange1f35012020-07-05 22:52:04 -070061 KHR_external_memory_capabilities,
62 KHR_external_semaphore_capabilities,
63 KHR_external_fence_capabilities,
Chris Forbes9d0d9ff2022-12-28 01:58:31 +000064 KHR_external_fence_fd,
Tom Murphyea321842024-06-14 18:26:58 +000065 KHR_swapchain_mutable_format,
Chia-I Wueb7db122016-03-24 09:11:06 +080066
Yiwei Zhang7cc36a52019-10-11 19:02:09 -070067 EXTENSION_CORE_1_0,
68 EXTENSION_CORE_1_1,
Yiwei Zhang6be097b2020-10-19 20:22:05 -070069 EXTENSION_CORE_1_2,
Trevor David Blackb700ae82021-09-27 04:50:04 +000070 EXTENSION_CORE_1_3,
Chia-I Wueb7db122016-03-24 09:11:06 +080071 EXTENSION_COUNT,
72 EXTENSION_UNKNOWN,
73 };
74
75 const char* name;
76 Type type;
77 Extension extension;
78
79 PFN_vkVoidFunction proc;
Chia-I Wu36cc00a2016-04-13 16:52:06 +080080 PFN_vkVoidFunction checked_proc; // always nullptr for non-device hooks
Chia-I Wueb7db122016-03-24 09:11:06 +080081};
82
Chia-I Wucc5e2762016-03-24 13:01:16 +080083struct InstanceDriverTable {
84 // clang-format off
85 PFN_vkDestroyInstance DestroyInstance;
86 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
87 PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
Jesse Hall85bb0c52017-02-09 22:13:02 -080088 PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
Chia-I Wucc5e2762016-03-24 13:01:16 +080089 PFN_vkCreateDevice CreateDevice;
90 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
91 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
92 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
93 PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
Yiwei Zhanga55624b2020-07-05 16:05:26 -070094 PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2;
95 PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR;
Adithya Srinivasan8dce9d72019-07-11 14:26:04 -070096 PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2;
Chris Forbes6aa30db2017-02-20 17:12:53 +130097 PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
Yiwei Zhanga55624b2020-07-05 16:05:26 -070098 PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2;
99 PFN_vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR;
100 PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2;
101 PFN_vkGetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties2KHR;
102 PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2;
103 PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR GetPhysicalDeviceQueueFamilyProperties2KHR;
104 PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2;
105 PFN_vkGetPhysicalDeviceMemoryProperties2KHR GetPhysicalDeviceMemoryProperties2KHR;
106 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2;
107 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR GetPhysicalDeviceSparseImageFormatProperties2KHR;
Yiwei Zhange1f35012020-07-05 22:52:04 -0700108 PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties;
109 PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR GetPhysicalDeviceExternalBufferPropertiesKHR;
110 PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties;
111 PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR GetPhysicalDeviceExternalSemaphorePropertiesKHR;
112 PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties;
113 PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR;
Adithya Srinivasan8dce9d72019-07-11 14:26:04 -0700114 PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups;
Yiwei Zhange4f64172020-07-05 15:17:32 -0700115 PFN_vkEnumeratePhysicalDeviceGroupsKHR EnumeratePhysicalDeviceGroupsKHR;
Chia-I Wucc5e2762016-03-24 13:01:16 +0800116 // clang-format on
117};
118
119struct DeviceDriverTable {
120 // clang-format off
121 PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
122 PFN_vkDestroyDevice DestroyDevice;
123 PFN_vkGetDeviceQueue GetDeviceQueue;
Yiwei Zhang899d1752019-09-23 16:05:35 -0700124 PFN_vkQueueSubmit QueueSubmit;
Chia-I Wucc5e2762016-03-24 13:01:16 +0800125 PFN_vkCreateImage CreateImage;
126 PFN_vkDestroyImage DestroyImage;
127 PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
Chris Forbes9d0d9ff2022-12-28 01:58:31 +0000128 PFN_vkImportFenceFdKHR ImportFenceFdKHR;
Yiwei Zhang23143102019-04-10 18:24:05 -0700129 PFN_vkBindImageMemory2 BindImageMemory2;
Adithya Srinivasan8dce9d72019-07-11 14:26:04 -0700130 PFN_vkBindImageMemory2KHR BindImageMemory2KHR;
Daniel Kochf25f5bb2017-10-05 00:26:58 -0400131 PFN_vkGetDeviceQueue2 GetDeviceQueue2;
Chia-I Wucc5e2762016-03-24 13:01:16 +0800132 PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID;
Yiwei Zhang4bc489b2019-09-23 15:17:22 -0700133 PFN_vkGetSwapchainGrallocUsage2ANDROID GetSwapchainGrallocUsage2ANDROID;
Trevor David Black2cc44682022-03-09 00:31:38 +0000134 PFN_vkGetSwapchainGrallocUsage3ANDROID GetSwapchainGrallocUsage3ANDROID;
Trevor David Blackb6ca8422023-07-26 20:00:04 +0000135 PFN_vkGetSwapchainGrallocUsage4ANDROID GetSwapchainGrallocUsage4ANDROID;
Chia-I Wucc5e2762016-03-24 13:01:16 +0800136 PFN_vkAcquireImageANDROID AcquireImageANDROID;
137 PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID;
138 // clang-format on
139};
140
Chia-I Wueb7db122016-03-24 09:11:06 +0800141const ProcHook* GetProcHook(const char* name);
142ProcHook::Extension GetProcHookExtension(const char* name);
143
Chia-I Wucbe07ef2016-04-13 15:01:00 +0800144bool InitDriverTable(VkInstance instance,
145 PFN_vkGetInstanceProcAddr get_proc,
146 const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
147bool InitDriverTable(VkDevice dev,
148 PFN_vkGetDeviceProcAddr get_proc,
149 const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
Chia-I Wucc5e2762016-03-24 13:01:16 +0800150
Yiwei Zhang7c0c07c2020-07-04 23:49:47 -0700151std::optional<uint32_t> GetInstanceExtensionPromotedVersion(const char* name);
152uint32_t CountPromotedInstanceExtensions(uint32_t begin_version,
153 uint32_t end_version);
154std::vector<const char*> GetPromotedInstanceExtensions(uint32_t begin_version,
155 uint32_t end_version);
156
Chia-I Wueb7db122016-03-24 09:11:06 +0800157} // namespace driver
158} // namespace vulkan
159
160#endif // LIBVULKAN_DRIVER_TABLE_H