xref: /aosp_15_r20/frameworks/native/vulkan/libvulkan/driver_gen.h (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1*38e8c45fSAndroid Build Coastguard Worker /*
2*38e8c45fSAndroid Build Coastguard Worker  * Copyright 2016 The Android Open Source Project
3*38e8c45fSAndroid Build Coastguard Worker  *
4*38e8c45fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*38e8c45fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*38e8c45fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*38e8c45fSAndroid Build Coastguard Worker  *
8*38e8c45fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*38e8c45fSAndroid Build Coastguard Worker  *
10*38e8c45fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*38e8c45fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*38e8c45fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*38e8c45fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*38e8c45fSAndroid Build Coastguard Worker  * limitations under the License.
15*38e8c45fSAndroid Build Coastguard Worker  */
16*38e8c45fSAndroid Build Coastguard Worker 
17*38e8c45fSAndroid Build Coastguard Worker // WARNING: This file is generated. See ../README.md for instructions.
18*38e8c45fSAndroid Build Coastguard Worker 
19*38e8c45fSAndroid Build Coastguard Worker #ifndef LIBVULKAN_DRIVER_GEN_H
20*38e8c45fSAndroid Build Coastguard Worker #define LIBVULKAN_DRIVER_GEN_H
21*38e8c45fSAndroid Build Coastguard Worker 
22*38e8c45fSAndroid Build Coastguard Worker #include <vulkan/vk_android_native_buffer.h>
23*38e8c45fSAndroid Build Coastguard Worker #include <vulkan/vulkan.h>
24*38e8c45fSAndroid Build Coastguard Worker 
25*38e8c45fSAndroid Build Coastguard Worker #include <bitset>
26*38e8c45fSAndroid Build Coastguard Worker #include <optional>
27*38e8c45fSAndroid Build Coastguard Worker #include <vector>
28*38e8c45fSAndroid Build Coastguard Worker 
29*38e8c45fSAndroid Build Coastguard Worker /*
30*38e8c45fSAndroid Build Coastguard Worker  * This file is autogenerated by driver_generator.py. Do not edit directly.
31*38e8c45fSAndroid Build Coastguard Worker  */
32*38e8c45fSAndroid Build Coastguard Worker namespace vulkan {
33*38e8c45fSAndroid Build Coastguard Worker namespace driver {
34*38e8c45fSAndroid Build Coastguard Worker 
35*38e8c45fSAndroid Build Coastguard Worker struct ProcHook {
36*38e8c45fSAndroid Build Coastguard Worker     enum Type {
37*38e8c45fSAndroid Build Coastguard Worker         GLOBAL,
38*38e8c45fSAndroid Build Coastguard Worker         INSTANCE,
39*38e8c45fSAndroid Build Coastguard Worker         DEVICE,
40*38e8c45fSAndroid Build Coastguard Worker     };
41*38e8c45fSAndroid Build Coastguard Worker     enum Extension {
42*38e8c45fSAndroid Build Coastguard Worker         ANDROID_native_buffer,
43*38e8c45fSAndroid Build Coastguard Worker         EXT_debug_report,
44*38e8c45fSAndroid Build Coastguard Worker         EXT_hdr_metadata,
45*38e8c45fSAndroid Build Coastguard Worker         EXT_swapchain_colorspace,
46*38e8c45fSAndroid Build Coastguard Worker         GOOGLE_display_timing,
47*38e8c45fSAndroid Build Coastguard Worker         GOOGLE_surfaceless_query,
48*38e8c45fSAndroid Build Coastguard Worker         KHR_android_surface,
49*38e8c45fSAndroid Build Coastguard Worker         KHR_get_surface_capabilities2,
50*38e8c45fSAndroid Build Coastguard Worker         KHR_incremental_present,
51*38e8c45fSAndroid Build Coastguard Worker         KHR_shared_presentable_image,
52*38e8c45fSAndroid Build Coastguard Worker         KHR_surface,
53*38e8c45fSAndroid Build Coastguard Worker         KHR_surface_protected_capabilities,
54*38e8c45fSAndroid Build Coastguard Worker         KHR_swapchain,
55*38e8c45fSAndroid Build Coastguard Worker         EXT_swapchain_maintenance1,
56*38e8c45fSAndroid Build Coastguard Worker         EXT_surface_maintenance1,
57*38e8c45fSAndroid Build Coastguard Worker         ANDROID_external_memory_android_hardware_buffer,
58*38e8c45fSAndroid Build Coastguard Worker         KHR_bind_memory2,
59*38e8c45fSAndroid Build Coastguard Worker         KHR_get_physical_device_properties2,
60*38e8c45fSAndroid Build Coastguard Worker         KHR_device_group_creation,
61*38e8c45fSAndroid Build Coastguard Worker         KHR_external_memory_capabilities,
62*38e8c45fSAndroid Build Coastguard Worker         KHR_external_semaphore_capabilities,
63*38e8c45fSAndroid Build Coastguard Worker         KHR_external_fence_capabilities,
64*38e8c45fSAndroid Build Coastguard Worker         KHR_external_fence_fd,
65*38e8c45fSAndroid Build Coastguard Worker         KHR_swapchain_mutable_format,
66*38e8c45fSAndroid Build Coastguard Worker 
67*38e8c45fSAndroid Build Coastguard Worker         EXTENSION_CORE_1_0,
68*38e8c45fSAndroid Build Coastguard Worker         EXTENSION_CORE_1_1,
69*38e8c45fSAndroid Build Coastguard Worker         EXTENSION_CORE_1_2,
70*38e8c45fSAndroid Build Coastguard Worker         EXTENSION_CORE_1_3,
71*38e8c45fSAndroid Build Coastguard Worker         EXTENSION_CORE_1_4,
72*38e8c45fSAndroid Build Coastguard Worker         EXTENSION_COUNT,
73*38e8c45fSAndroid Build Coastguard Worker         EXTENSION_UNKNOWN,
74*38e8c45fSAndroid Build Coastguard Worker     };
75*38e8c45fSAndroid Build Coastguard Worker 
76*38e8c45fSAndroid Build Coastguard Worker     const char* name;
77*38e8c45fSAndroid Build Coastguard Worker     Type type;
78*38e8c45fSAndroid Build Coastguard Worker     Extension extension;
79*38e8c45fSAndroid Build Coastguard Worker 
80*38e8c45fSAndroid Build Coastguard Worker     PFN_vkVoidFunction proc;
81*38e8c45fSAndroid Build Coastguard Worker     PFN_vkVoidFunction checked_proc;  // always nullptr for non-device hooks
82*38e8c45fSAndroid Build Coastguard Worker };
83*38e8c45fSAndroid Build Coastguard Worker 
84*38e8c45fSAndroid Build Coastguard Worker struct InstanceDriverTable {
85*38e8c45fSAndroid Build Coastguard Worker     // clang-format off
86*38e8c45fSAndroid Build Coastguard Worker     PFN_vkDestroyInstance DestroyInstance;
87*38e8c45fSAndroid Build Coastguard Worker     PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
88*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
89*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
90*38e8c45fSAndroid Build Coastguard Worker     PFN_vkCreateDevice CreateDevice;
91*38e8c45fSAndroid Build Coastguard Worker     PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
92*38e8c45fSAndroid Build Coastguard Worker     PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
93*38e8c45fSAndroid Build Coastguard Worker     PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
94*38e8c45fSAndroid Build Coastguard Worker     PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
95*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2;
96*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR;
97*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2;
98*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
99*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2;
100*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR;
101*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2;
102*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties2KHR;
103*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2;
104*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR GetPhysicalDeviceQueueFamilyProperties2KHR;
105*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2;
106*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceMemoryProperties2KHR GetPhysicalDeviceMemoryProperties2KHR;
107*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2;
108*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR GetPhysicalDeviceSparseImageFormatProperties2KHR;
109*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties;
110*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR GetPhysicalDeviceExternalBufferPropertiesKHR;
111*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties;
112*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR GetPhysicalDeviceExternalSemaphorePropertiesKHR;
113*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties;
114*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR;
115*38e8c45fSAndroid Build Coastguard Worker     PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups;
116*38e8c45fSAndroid Build Coastguard Worker     PFN_vkEnumeratePhysicalDeviceGroupsKHR EnumeratePhysicalDeviceGroupsKHR;
117*38e8c45fSAndroid Build Coastguard Worker     // clang-format on
118*38e8c45fSAndroid Build Coastguard Worker };
119*38e8c45fSAndroid Build Coastguard Worker 
120*38e8c45fSAndroid Build Coastguard Worker struct DeviceDriverTable {
121*38e8c45fSAndroid Build Coastguard Worker     // clang-format off
122*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
123*38e8c45fSAndroid Build Coastguard Worker     PFN_vkDestroyDevice DestroyDevice;
124*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetDeviceQueue GetDeviceQueue;
125*38e8c45fSAndroid Build Coastguard Worker     PFN_vkQueueSubmit QueueSubmit;
126*38e8c45fSAndroid Build Coastguard Worker     PFN_vkCreateImage CreateImage;
127*38e8c45fSAndroid Build Coastguard Worker     PFN_vkDestroyImage DestroyImage;
128*38e8c45fSAndroid Build Coastguard Worker     PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
129*38e8c45fSAndroid Build Coastguard Worker     PFN_vkImportFenceFdKHR ImportFenceFdKHR;
130*38e8c45fSAndroid Build Coastguard Worker     PFN_vkBindImageMemory2 BindImageMemory2;
131*38e8c45fSAndroid Build Coastguard Worker     PFN_vkBindImageMemory2KHR BindImageMemory2KHR;
132*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetDeviceQueue2 GetDeviceQueue2;
133*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID;
134*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetSwapchainGrallocUsage2ANDROID GetSwapchainGrallocUsage2ANDROID;
135*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetSwapchainGrallocUsage3ANDROID GetSwapchainGrallocUsage3ANDROID;
136*38e8c45fSAndroid Build Coastguard Worker     PFN_vkGetSwapchainGrallocUsage4ANDROID GetSwapchainGrallocUsage4ANDROID;
137*38e8c45fSAndroid Build Coastguard Worker     PFN_vkAcquireImageANDROID AcquireImageANDROID;
138*38e8c45fSAndroid Build Coastguard Worker     PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID;
139*38e8c45fSAndroid Build Coastguard Worker     // clang-format on
140*38e8c45fSAndroid Build Coastguard Worker };
141*38e8c45fSAndroid Build Coastguard Worker 
142*38e8c45fSAndroid Build Coastguard Worker const ProcHook* GetProcHook(const char* name);
143*38e8c45fSAndroid Build Coastguard Worker ProcHook::Extension GetProcHookExtension(const char* name);
144*38e8c45fSAndroid Build Coastguard Worker 
145*38e8c45fSAndroid Build Coastguard Worker bool InitDriverTable(VkInstance instance,
146*38e8c45fSAndroid Build Coastguard Worker                      PFN_vkGetInstanceProcAddr get_proc,
147*38e8c45fSAndroid Build Coastguard Worker                      const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
148*38e8c45fSAndroid Build Coastguard Worker bool InitDriverTable(VkDevice dev,
149*38e8c45fSAndroid Build Coastguard Worker                      PFN_vkGetDeviceProcAddr get_proc,
150*38e8c45fSAndroid Build Coastguard Worker                      const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
151*38e8c45fSAndroid Build Coastguard Worker 
152*38e8c45fSAndroid Build Coastguard Worker std::optional<uint32_t> GetInstanceExtensionPromotedVersion(const char* name);
153*38e8c45fSAndroid Build Coastguard Worker uint32_t CountPromotedInstanceExtensions(uint32_t begin_version,
154*38e8c45fSAndroid Build Coastguard Worker                                          uint32_t end_version);
155*38e8c45fSAndroid Build Coastguard Worker std::vector<const char*> GetPromotedInstanceExtensions(uint32_t begin_version,
156*38e8c45fSAndroid Build Coastguard Worker                                                        uint32_t end_version);
157*38e8c45fSAndroid Build Coastguard Worker 
158*38e8c45fSAndroid Build Coastguard Worker }  // namespace driver
159*38e8c45fSAndroid Build Coastguard Worker }  // namespace vulkan
160*38e8c45fSAndroid Build Coastguard Worker 
161*38e8c45fSAndroid Build Coastguard Worker #endif  // LIBVULKAN_DRIVER_TABLE_H
162