driver_gen.h revision 4c8bb2a95d7849c79dea889f1be59281f4e374bf
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 <bitset> 23#include <vulkan/vulkan.h> 24#include <vulkan/vk_android_native_buffer.h> 25 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, 38 KHR_android_surface, 39 KHR_surface, 40 KHR_swapchain, 41 GOOGLE_display_timing, 42 43 EXTENSION_CORE, // valid bit 44 EXTENSION_COUNT, 45 EXTENSION_UNKNOWN, 46 }; 47 48 const char* name; 49 Type type; 50 Extension extension; 51 52 PFN_vkVoidFunction proc; 53 PFN_vkVoidFunction checked_proc; // always nullptr for non-device hooks 54}; 55 56struct InstanceDriverTable { 57 // clang-format off 58 PFN_vkDestroyInstance DestroyInstance; 59 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; 60 PFN_vkGetInstanceProcAddr GetInstanceProcAddr; 61 PFN_vkCreateDevice CreateDevice; 62 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties; 63 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT; 64 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT; 65 PFN_vkDebugReportMessageEXT DebugReportMessageEXT; 66 // clang-format on 67}; 68 69struct DeviceDriverTable { 70 // clang-format off 71 PFN_vkGetDeviceProcAddr GetDeviceProcAddr; 72 PFN_vkDestroyDevice DestroyDevice; 73 PFN_vkGetDeviceQueue GetDeviceQueue; 74 PFN_vkCreateImage CreateImage; 75 PFN_vkDestroyImage DestroyImage; 76 PFN_vkAllocateCommandBuffers AllocateCommandBuffers; 77 PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID; 78 PFN_vkGetSwapchainGrallocUsage2ANDROID GetSwapchainGrallocUsage2ANDROID; 79 PFN_vkAcquireImageANDROID AcquireImageANDROID; 80 PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID; 81 // clang-format on 82}; 83 84const ProcHook* GetProcHook(const char* name); 85ProcHook::Extension GetProcHookExtension(const char* name); 86 87bool InitDriverTable(VkInstance instance, 88 PFN_vkGetInstanceProcAddr get_proc, 89 const std::bitset<ProcHook::EXTENSION_COUNT>& extensions); 90bool InitDriverTable(VkDevice dev, 91 PFN_vkGetDeviceProcAddr get_proc, 92 const std::bitset<ProcHook::EXTENSION_COUNT>& extensions); 93 94} // namespace driver 95} // namespace vulkan 96 97#endif // LIBVULKAN_DRIVER_TABLE_H 98