10c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu/* 20c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * Copyright 2016 The Android Open Source Project 30c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * 40c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * Licensed under the Apache License, Version 2.0 (the "License"); 50c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * you may not use this file except in compliance with the License. 60c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * You may obtain a copy of the License at 70c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * 80c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * http://www.apache.org/licenses/LICENSE-2.0 90c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * 100c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * Unless required by applicable law or agreed to in writing, software 110c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * distributed under the License is distributed on an "AS IS" BASIS, 120c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * See the License for the specific language governing permissions and 140c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu * limitations under the License. 150c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu */ 160c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 170c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu#ifndef LIBVULKAN_API_H 180c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu#define LIBVULKAN_API_H 1 190c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 200c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu#include <vulkan/vulkan.h> 210c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu#include "api_gen.h" 220c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu#include "driver.h" 230c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 240c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wunamespace vulkan { 250c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wunamespace api { 260c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 270c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu// clang-format off 280c2032490b80178ec823bf22a7f5d08398851cc3Chia-I WuVKAPI_ATTR VkResult CreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance); 290c2032490b80178ec823bf22a7f5d08398851cc3Chia-I WuVKAPI_ATTR void DestroyInstance(VkInstance instance, const VkAllocationCallbacks* pAllocator); 300c2032490b80178ec823bf22a7f5d08398851cc3Chia-I WuVKAPI_ATTR VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice); 310c2032490b80178ec823bf22a7f5d08398851cc3Chia-I WuVKAPI_ATTR void DestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator); 320c2032490b80178ec823bf22a7f5d08398851cc3Chia-I WuVKAPI_ATTR VkResult EnumerateInstanceLayerProperties(uint32_t* pPropertyCount, VkLayerProperties* pProperties); 330c2032490b80178ec823bf22a7f5d08398851cc3Chia-I WuVKAPI_ATTR VkResult EnumerateInstanceExtensionProperties(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); 340c2032490b80178ec823bf22a7f5d08398851cc3Chia-I WuVKAPI_ATTR VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties); 350c2032490b80178ec823bf22a7f5d08398851cc3Chia-I WuVKAPI_ATTR VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); 360c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu// clang-format on 370c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 380c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wuinline InstanceData& GetData(VkInstance instance) { 390c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu return driver::GetData(instance).opaque_api_data; 400c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu} 410c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 420c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wuinline InstanceData& GetData(VkPhysicalDevice physical_dev) { 430c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu return driver::GetData(physical_dev).opaque_api_data; 440c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu} 450c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 460c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wuinline DeviceData& GetData(VkDevice dev) { 470c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu return driver::GetData(dev).opaque_api_data; 480c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu} 490c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 500c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wuinline DeviceData& GetData(VkQueue queue) { 510c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu return driver::GetData(queue).opaque_api_data; 520c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu} 530c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 540c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wuinline DeviceData& GetData(VkCommandBuffer cmd) { 550c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu return driver::GetData(cmd).opaque_api_data; 560c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu} 570c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 580c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu} // namespace api 590c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu} // namespace vulkan 600c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu 610c2032490b80178ec823bf22a7f5d08398851cc3Chia-I Wu#endif // LIBVULKAN_API_H 62