xref: /aosp_15_r20/frameworks/native/vulkan/libvulkan/driver_gen.h (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1 /*
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 
22 #include <vulkan/vk_android_native_buffer.h>
23 #include <vulkan/vulkan.h>
24 
25 #include <bitset>
26 #include <optional>
27 #include <vector>
28 
29 /*
30  * This file is autogenerated by driver_generator.py. Do not edit directly.
31  */
32 namespace vulkan {
33 namespace driver {
34 
35 struct ProcHook {
36     enum Type {
37         GLOBAL,
38         INSTANCE,
39         DEVICE,
40     };
41     enum Extension {
42         ANDROID_native_buffer,
43         EXT_debug_report,
44         EXT_hdr_metadata,
45         EXT_swapchain_colorspace,
46         GOOGLE_display_timing,
47         GOOGLE_surfaceless_query,
48         KHR_android_surface,
49         KHR_get_surface_capabilities2,
50         KHR_incremental_present,
51         KHR_shared_presentable_image,
52         KHR_surface,
53         KHR_surface_protected_capabilities,
54         KHR_swapchain,
55         EXT_swapchain_maintenance1,
56         EXT_surface_maintenance1,
57         ANDROID_external_memory_android_hardware_buffer,
58         KHR_bind_memory2,
59         KHR_get_physical_device_properties2,
60         KHR_device_group_creation,
61         KHR_external_memory_capabilities,
62         KHR_external_semaphore_capabilities,
63         KHR_external_fence_capabilities,
64         KHR_external_fence_fd,
65         KHR_swapchain_mutable_format,
66 
67         EXTENSION_CORE_1_0,
68         EXTENSION_CORE_1_1,
69         EXTENSION_CORE_1_2,
70         EXTENSION_CORE_1_3,
71         EXTENSION_CORE_1_4,
72         EXTENSION_COUNT,
73         EXTENSION_UNKNOWN,
74     };
75 
76     const char* name;
77     Type type;
78     Extension extension;
79 
80     PFN_vkVoidFunction proc;
81     PFN_vkVoidFunction checked_proc;  // always nullptr for non-device hooks
82 };
83 
84 struct InstanceDriverTable {
85     // clang-format off
86     PFN_vkDestroyInstance DestroyInstance;
87     PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
88     PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
89     PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
90     PFN_vkCreateDevice CreateDevice;
91     PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
92     PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
93     PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
94     PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
95     PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2;
96     PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR;
97     PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2;
98     PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
99     PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2;
100     PFN_vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR;
101     PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2;
102     PFN_vkGetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties2KHR;
103     PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2;
104     PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR GetPhysicalDeviceQueueFamilyProperties2KHR;
105     PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2;
106     PFN_vkGetPhysicalDeviceMemoryProperties2KHR GetPhysicalDeviceMemoryProperties2KHR;
107     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2;
108     PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR GetPhysicalDeviceSparseImageFormatProperties2KHR;
109     PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties;
110     PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR GetPhysicalDeviceExternalBufferPropertiesKHR;
111     PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties;
112     PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR GetPhysicalDeviceExternalSemaphorePropertiesKHR;
113     PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties;
114     PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR;
115     PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups;
116     PFN_vkEnumeratePhysicalDeviceGroupsKHR EnumeratePhysicalDeviceGroupsKHR;
117     // clang-format on
118 };
119 
120 struct DeviceDriverTable {
121     // clang-format off
122     PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
123     PFN_vkDestroyDevice DestroyDevice;
124     PFN_vkGetDeviceQueue GetDeviceQueue;
125     PFN_vkQueueSubmit QueueSubmit;
126     PFN_vkCreateImage CreateImage;
127     PFN_vkDestroyImage DestroyImage;
128     PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
129     PFN_vkImportFenceFdKHR ImportFenceFdKHR;
130     PFN_vkBindImageMemory2 BindImageMemory2;
131     PFN_vkBindImageMemory2KHR BindImageMemory2KHR;
132     PFN_vkGetDeviceQueue2 GetDeviceQueue2;
133     PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID;
134     PFN_vkGetSwapchainGrallocUsage2ANDROID GetSwapchainGrallocUsage2ANDROID;
135     PFN_vkGetSwapchainGrallocUsage3ANDROID GetSwapchainGrallocUsage3ANDROID;
136     PFN_vkGetSwapchainGrallocUsage4ANDROID GetSwapchainGrallocUsage4ANDROID;
137     PFN_vkAcquireImageANDROID AcquireImageANDROID;
138     PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID;
139     // clang-format on
140 };
141 
142 const ProcHook* GetProcHook(const char* name);
143 ProcHook::Extension GetProcHookExtension(const char* name);
144 
145 bool InitDriverTable(VkInstance instance,
146                      PFN_vkGetInstanceProcAddr get_proc,
147                      const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
148 bool InitDriverTable(VkDevice dev,
149                      PFN_vkGetDeviceProcAddr get_proc,
150                      const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
151 
152 std::optional<uint32_t> GetInstanceExtensionPromotedVersion(const char* name);
153 uint32_t CountPromotedInstanceExtensions(uint32_t begin_version,
154                                          uint32_t end_version);
155 std::vector<const char*> GetPromotedInstanceExtensions(uint32_t begin_version,
156                                                        uint32_t end_version);
157 
158 }  // namespace driver
159 }  // namespace vulkan
160 
161 #endif  // LIBVULKAN_DRIVER_TABLE_H
162