Home | History | Annotate | Download | only in libvulkan
      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 <vulkan/vk_android_native_buffer.h>
     23 #include <vulkan/vulkan.h>
     24 #include <bitset>
     25 
     26 namespace vulkan {
     27 namespace driver {
     28 
     29 struct ProcHook {
     30     enum Type {
     31         GLOBAL,
     32         INSTANCE,
     33         DEVICE,
     34     };
     35     enum Extension {
     36         ANDROID_native_buffer,
     37         EXT_debug_report,
     38         EXT_hdr_metadata,
     39         EXT_swapchain_colorspace,
     40         GOOGLE_display_timing,
     41         KHR_android_surface,
     42         KHR_incremental_present,
     43         KHR_shared_presentable_image,
     44         KHR_surface,
     45         KHR_swapchain,
     46         KHR_get_surface_capabilities2,
     47         KHR_get_physical_device_properties2,
     48 
     49         EXTENSION_CORE,  // valid bit
     50         EXTENSION_COUNT,
     51         EXTENSION_UNKNOWN,
     52     };
     53 
     54     const char* name;
     55     Type type;
     56     Extension extension;
     57 
     58     PFN_vkVoidFunction proc;
     59     PFN_vkVoidFunction checked_proc;  // always nullptr for non-device hooks
     60 };
     61 
     62 struct InstanceDriverTable {
     63     // clang-format off
     64     PFN_vkDestroyInstance DestroyInstance;
     65     PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
     66     PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
     67     PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
     68     PFN_vkCreateDevice CreateDevice;
     69     PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
     70     PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
     71     PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
     72     PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
     73     PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR;
     74     // clang-format on
     75 };
     76 
     77 struct DeviceDriverTable {
     78     // clang-format off
     79     PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
     80     PFN_vkDestroyDevice DestroyDevice;
     81     PFN_vkGetDeviceQueue GetDeviceQueue;
     82     PFN_vkCreateImage CreateImage;
     83     PFN_vkDestroyImage DestroyImage;
     84     PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
     85     PFN_vkGetSwapchainGrallocUsageANDROID GetSwapchainGrallocUsageANDROID;
     86     PFN_vkGetSwapchainGrallocUsage2ANDROID GetSwapchainGrallocUsage2ANDROID;
     87     PFN_vkAcquireImageANDROID AcquireImageANDROID;
     88     PFN_vkQueueSignalReleaseImageANDROID QueueSignalReleaseImageANDROID;
     89     // clang-format on
     90 };
     91 
     92 const ProcHook* GetProcHook(const char* name);
     93 ProcHook::Extension GetProcHookExtension(const char* name);
     94 
     95 bool InitDriverTable(VkInstance instance,
     96                      PFN_vkGetInstanceProcAddr get_proc,
     97                      const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
     98 bool InitDriverTable(VkDevice dev,
     99                      PFN_vkGetDeviceProcAddr get_proc,
    100                      const std::bitset<ProcHook::EXTENSION_COUNT>& extensions);
    101 
    102 }  // namespace driver
    103 }  // namespace vulkan
    104 
    105 #endif  // LIBVULKAN_DRIVER_TABLE_H
    106