1eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu/* 2eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * Copyright 2016 The Android Open Source Project 3eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * 4eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * Licensed under the Apache License, Version 2.0 (the "License"); 5eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * you may not use this file except in compliance with the License. 6eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * You may obtain a copy of the License at 7eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * 8eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * http://www.apache.org/licenses/LICENSE-2.0 9eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * 10eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * Unless required by applicable law or agreed to in writing, software 11eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * distributed under the License is distributed on an "AS IS" BASIS, 12eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * See the License for the specific language governing permissions and 14eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu * limitations under the License. 15eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu */ 16eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 17eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu// WARNING: This file is generated. See ../README.md for instructions. 18eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 19eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu#ifndef LIBVULKAN_DRIVER_GEN_H 20eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu#define LIBVULKAN_DRIVER_GEN_H 21eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 22cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wu#include <bitset> 23eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu#include <vulkan/vulkan.h> 24eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu#include <vulkan/vk_android_native_buffer.h> 25eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 26eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wunamespace vulkan { 27eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wunamespace driver { 28eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 29eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wustruct ProcHook { 30eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu enum Type { 31eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu GLOBAL, 32eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu INSTANCE, 33eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu DEVICE, 34eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu }; 35eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu enum Extension { 36eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu ANDROID_native_buffer, 37eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu EXT_debug_report, 38eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu KHR_android_surface, 39eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu KHR_surface, 40eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu KHR_swapchain, 41eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 42eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu EXTENSION_CORE, // valid bit 43eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu EXTENSION_COUNT, 44eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu EXTENSION_UNKNOWN, 45eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu }; 46eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 47eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu const char* name; 48eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu Type type; 49eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu Extension extension; 50eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 51eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu PFN_vkVoidFunction proc; 5236cc00a1739f7d926cc20671ae9900a5460dd6aeChia-I Wu PFN_vkVoidFunction checked_proc; // always nullptr for non-device hooks 53eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu}; 54eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 55cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wustruct InstanceDriverTable { 56cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu // clang-format off 57cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDestroyInstance DestroyInstance; 58cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; 59cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkGetInstanceProcAddr GetInstanceProcAddr; 60cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkCreateDevice CreateDevice; 61cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties; 62cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT; 63cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT; 64cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDebugReportMessageEXT DebugReportMessageEXT; 65cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu // clang-format on 66cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu}; 67cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu 68cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wustruct DeviceDriverTable { 69cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu // clang-format off 70cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkGetDeviceProcAddr GetDeviceProcAddr; 71cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDestroyDevice DestroyDevice; 72cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkGetDeviceQueue GetDeviceQueue; 73cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkCreateImage CreateImage; 74cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDestroyImage DestroyImage; 75cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkAllocateCommandBuffers AllocateCommandBuffers; 76cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID; 77cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkAcquireImageANDROID AcquireImageANDROID; 78cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID; 79cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu // clang-format on 80cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu}; 81cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu 82eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wuconst ProcHook* GetProcHook(const char* name); 83eb7db124e46da9a9210cf868353f5ea79502ffecChia-I WuProcHook::Extension GetProcHookExtension(const char* name); 84eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 85cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wubool InitDriverTable(VkInstance instance, 86cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wu PFN_vkGetInstanceProcAddr get_proc, 87cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wu const std::bitset<ProcHook::EXTENSION_COUNT>& extensions); 88cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wubool InitDriverTable(VkDevice dev, 89cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wu PFN_vkGetDeviceProcAddr get_proc, 90cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wu const std::bitset<ProcHook::EXTENSION_COUNT>& extensions); 91cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu 92eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu} // namespace driver 93eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu} // namespace vulkan 94eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 95eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu#endif // LIBVULKAN_DRIVER_TABLE_H 96