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