blob: 14c3aba75ab9cb408fbef606ded5eb2b37ec6d1c [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>
24#include <bitset>
Chia-I Wueb7db122016-03-24 09:11:06 +080025
26namespace vulkan {
27namespace driver {
28
29struct ProcHook {
30 enum Type {
31 GLOBAL,
32 INSTANCE,
33 DEVICE,
34 };
35 enum Extension {
36 ANDROID_native_buffer,
37 EXT_debug_report,
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -070038 EXT_hdr_metadata,
Courtney Goeltzenleuchtere278daf2017-02-02 16:54:57 -070039 EXT_swapchain_colorspace,
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -070040 GOOGLE_display_timing,
Chia-I Wueb7db122016-03-24 09:11:06 +080041 KHR_android_surface,
Chris Forbes48853712017-01-12 14:09:33 +130042 KHR_incremental_present,
Courtney Goeltzenleuchtere278daf2017-02-02 16:54:57 -070043 KHR_shared_presentable_image,
Chia-I Wueb7db122016-03-24 09:11:06 +080044 KHR_surface,
45 KHR_swapchain,
Chris Forbes2452cf72017-03-16 16:30:17 +130046 KHR_get_surface_capabilities2,
Chris Forbes6aa30db2017-02-20 17:12:53 +130047 KHR_get_physical_device_properties2,
Jesse Hallcaea4112018-01-18 15:40:46 -080048 ANDROID_external_memory_android_hardware_buffer,
Chia-I Wueb7db122016-03-24 09:11:06 +080049
50 EXTENSION_CORE, // valid bit
51 EXTENSION_COUNT,
52 EXTENSION_UNKNOWN,
53 };
54
55 const char* name;
56 Type type;
57 Extension extension;
58
59 PFN_vkVoidFunction proc;
Chia-I Wu36cc00a2016-04-13 16:52:06 +080060 PFN_vkVoidFunction checked_proc; // always nullptr for non-device hooks
Chia-I Wueb7db122016-03-24 09:11:06 +080061};
62
Chia-I Wucc5e2762016-03-24 13:01:16 +080063struct InstanceDriverTable {
64 // clang-format off
65 PFN_vkDestroyInstance DestroyInstance;
66 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
67 PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
Jesse Hall85bb0c52017-02-09 22:13:02 -080068 PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
Chia-I Wucc5e2762016-03-24 13:01:16 +080069 PFN_vkCreateDevice CreateDevice;
70 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
Daniel Koch09f7bf92017-10-05 00:26:58 -040071 PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups;
Yiwei Zhangc1c9d3c2018-03-13 17:12:11 -070072 PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2;
Chia-I Wucc5e2762016-03-24 13:01:16 +080073 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
74 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
75 PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
Chris Forbes6aa30db2017-02-20 17:12:53 +130076 PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
Chia-I Wucc5e2762016-03-24 13:01:16 +080077 // clang-format on
78};
79
80struct DeviceDriverTable {
81 // clang-format off
82 PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
83 PFN_vkDestroyDevice DestroyDevice;
84 PFN_vkGetDeviceQueue GetDeviceQueue;
85 PFN_vkCreateImage CreateImage;
86 PFN_vkDestroyImage DestroyImage;
87 PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
Daniel Koch09f7bf92017-10-05 00:26:58 -040088 PFN_vkGetDeviceQueue2 GetDeviceQueue2;
Chia-I Wucc5e2762016-03-24 13:01:16 +080089 PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID;
Chris Forbes8e4438b2016-12-07 16:26:49 +130090 PFN_vkGetSwapchainGrallocUsage2ANDROID GetSwapchainGrallocUsage2ANDROID;
Chia-I Wucc5e2762016-03-24 13:01:16 +080091 PFN_vkAcquireImageANDROID AcquireImageANDROID;
92 PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID;
93 // clang-format on
94};
95
Chia-I Wueb7db122016-03-24 09:11:06 +080096const ProcHook* GetProcHook(const char* name);
97ProcHook::Extension GetProcHookExtension(const char* name);
98
Chia-I Wucbe07ef2016-04-13 15:01:00 +080099bool InitDriverTable(VkInstance instance,
100 PFN_vkGetInstanceProcAddr get_proc,
101 const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
102bool InitDriverTable(VkDevice dev,
103 PFN_vkGetDeviceProcAddr get_proc,
104 const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
Chia-I Wucc5e2762016-03-24 13:01:16 +0800105
Chia-I Wueb7db122016-03-24 09:11:06 +0800106} // namespace driver
107} // namespace vulkan
108
109#endif // LIBVULKAN_DRIVER_TABLE_H