blob: 4226a6374fd551f822ec43afd5d8408eb7ba06d7 [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
22#include <vulkan/vulkan.h>
23#include <vulkan/vk_android_native_buffer.h>
24
25namespace vulkan {
26namespace driver {
27
28struct ProcHook {
29 enum Type {
30 GLOBAL,
31 INSTANCE,
32 DEVICE,
33 };
34 enum Extension {
35 ANDROID_native_buffer,
36 EXT_debug_report,
37 KHR_android_surface,
38 KHR_surface,
39 KHR_swapchain,
40
41 EXTENSION_CORE, // valid bit
42 EXTENSION_COUNT,
43 EXTENSION_UNKNOWN,
44 };
45
46 const char* name;
47 Type type;
48 Extension extension;
49
50 PFN_vkVoidFunction proc;
51 PFN_vkVoidFunction disabled_proc; // nullptr for global hooks
52 PFN_vkVoidFunction checked_proc; // nullptr for global/instance hooks
53};
54
Chia-I Wucc5e2762016-03-24 13:01:16 +080055struct InstanceDriverTable {
56 // clang-format off
57 PFN_vkDestroyInstance DestroyInstance;
58 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
59 PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
60 PFN_vkCreateDevice CreateDevice;
61 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
62 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
63 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
64 PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
65 // clang-format on
66};
67
68struct DeviceDriverTable {
69 // clang-format off
70 PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
71 PFN_vkDestroyDevice DestroyDevice;
72 PFN_vkGetDeviceQueue GetDeviceQueue;
73 PFN_vkCreateImage CreateImage;
74 PFN_vkDestroyImage DestroyImage;
75 PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
76 PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID;
77 PFN_vkAcquireImageANDROID AcquireImageANDROID;
78 PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID;
79 // clang-format on
80};
81
Chia-I Wueb7db122016-03-24 09:11:06 +080082const ProcHook* GetProcHook(const char* name);
83ProcHook::Extension GetProcHookExtension(const char* name);
84
Chia-I Wucc5e2762016-03-24 13:01:16 +080085bool InitDriverTable(VkInstance instance, PFN_vkGetInstanceProcAddr get_proc);
86bool InitDriverTable(VkDevice dev, PFN_vkGetDeviceProcAddr get_proc);
87
Chia-I Wueb7db122016-03-24 09:11:06 +080088} // namespace driver
89} // namespace vulkan
90
91#endif // LIBVULKAN_DRIVER_TABLE_H