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 22eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu#include <vulkan/vk_android_native_buffer.h> 23e2d3ee180a2521c8db03a9702cb2669735f239acChris Forbes#include <vulkan/vulkan.h> 24e2d3ee180a2521c8db03a9702cb2669735f239acChris Forbes#include <bitset> 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, 38d634c483bcbd564acd81dcf5d15fc5fa8ab410f4Courtney Goeltzenleuchter EXT_hdr_metadata, 39e278daf850a664a1f15c760c64a74d3649b6f812Courtney Goeltzenleuchter EXT_swapchain_colorspace, 40d634c483bcbd564acd81dcf5d15fc5fa8ab410f4Courtney Goeltzenleuchter GOOGLE_display_timing, 41eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu KHR_android_surface, 4248853713e328ee23884d2127ca763352e0681944Chris Forbes KHR_incremental_present, 43e278daf850a664a1f15c760c64a74d3649b6f812Courtney Goeltzenleuchter KHR_shared_presentable_image, 44eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu KHR_surface, 45eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu KHR_swapchain, 462452cf7e653c425191791a4fb546106d6a277654Chris Forbes KHR_get_surface_capabilities2, 476aa30db7a9bbe06b59fddd554d797c6e466ca891Chris Forbes KHR_get_physical_device_properties2, 48a8d367a34b4f48b50d97e3de57a8463f7eff1572Jesse Hall ANDROID_external_memory_android_hardware_buffer, 49eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 50eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu EXTENSION_CORE, // valid bit 51eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu EXTENSION_COUNT, 52eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu EXTENSION_UNKNOWN, 53eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu }; 54eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 55eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu const char* name; 56eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu Type type; 57eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu Extension extension; 58eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 59eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu PFN_vkVoidFunction proc; 6036cc00a1739f7d926cc20671ae9900a5460dd6aeChia-I Wu PFN_vkVoidFunction checked_proc; // always nullptr for non-device hooks 61eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu}; 62eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 63cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wustruct InstanceDriverTable { 64cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu // clang-format off 65cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDestroyInstance DestroyInstance; 66cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; 67cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkGetInstanceProcAddr GetInstanceProcAddr; 6885bb0c5a57be2b456079c14448127fa9bb8cff66Jesse Hall PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties; 69cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkCreateDevice CreateDevice; 70cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties; 71f25f5bb3eb1ee3e7a3c33b5e44143ad296245f3fDaniel Koch PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups; 72db67cc7bcfbb5cb1692ca491f8698d91c072ce70Yiwei Zhang PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2; 73cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT; 74cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT; 75cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDebugReportMessageEXT DebugReportMessageEXT; 766aa30db7a9bbe06b59fddd554d797c6e466ca891Chris Forbes PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR; 77cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu // clang-format on 78cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu}; 79cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu 80cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wustruct DeviceDriverTable { 81cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu // clang-format off 82cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkGetDeviceProcAddr GetDeviceProcAddr; 83cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDestroyDevice DestroyDevice; 84cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkGetDeviceQueue GetDeviceQueue; 85cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkCreateImage CreateImage; 86cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkDestroyImage DestroyImage; 87cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkAllocateCommandBuffers AllocateCommandBuffers; 88f25f5bb3eb1ee3e7a3c33b5e44143ad296245f3fDaniel Koch PFN_vkGetDeviceQueue2 GetDeviceQueue2; 89cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID; 908e4438b9cd82e911ed8de6aca15f11816187df3fChris Forbes PFN_vkGetSwapchainGrallocUsage2ANDROID GetSwapchainGrallocUsage2ANDROID; 91cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkAcquireImageANDROID AcquireImageANDROID; 92cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID; 93cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu // clang-format on 94cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu}; 95cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu 96eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wuconst ProcHook* GetProcHook(const char* name); 97eb7db124e46da9a9210cf868353f5ea79502ffecChia-I WuProcHook::Extension GetProcHookExtension(const char* name); 98eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 99cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wubool InitDriverTable(VkInstance instance, 100cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wu PFN_vkGetInstanceProcAddr get_proc, 101cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wu const std::bitset<ProcHook::EXTENSION_COUNT>& extensions); 102cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wubool InitDriverTable(VkDevice dev, 103cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wu PFN_vkGetDeviceProcAddr get_proc, 104cbe07ef239121dc99a31a19b9593d76d76abb08bChia-I Wu const std::bitset<ProcHook::EXTENSION_COUNT>& extensions); 105cc5e2765a9d56b03b69d0c3f25b94721f82d034eChia-I Wu 106eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu} // namespace driver 107eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu} // namespace vulkan 108eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu 109eb7db124e46da9a9210cf868353f5ea79502ffecChia-I Wu#endif // LIBVULKAN_DRIVER_TABLE_H 110