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