1de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu/*
2de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu * Copyright 2015 The Android Open Source Project
3de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu *
4de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu * Licensed under the Apache License, Version 2.0 (the "License");
5de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu * you may not use this file except in compliance with the License.
6de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu * You may obtain a copy of the License at
7de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu *
8de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu *      http://www.apache.org/licenses/LICENSE-2.0
9de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu *
10de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu * Unless required by applicable law or agreed to in writing, software
11de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu * distributed under the License is distributed on an "AS IS" BASIS,
12de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu * See the License for the specific language governing permissions and
14de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu * limitations under the License.
15de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu */
16de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu
17de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu#ifndef LIBVULKAN_SWAPCHAIN_H
18de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu#define LIBVULKAN_SWAPCHAIN_H 1
19de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu
20de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu#include <vulkan/vulkan.h>
21de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu
22de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wunamespace vulkan {
23622622377a1ac71a81a88e335f170c4a08835f06Chia-I Wunamespace driver {
24de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu
25de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu// clang-format off
26622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR VkResult CreateAndroidSurfaceKHR(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
27622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* allocator);
28622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice pdev, uint32_t queue_family, VkSurfaceKHR surface, VkBool32* pSupported);
29622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice pdev, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* capabilities);
30622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev, VkSurfaceKHR surface, uint32_t* count, VkSurfaceFormatKHR* formats);
31622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice pdev, VkSurfaceKHR surface, uint32_t* count, VkPresentModeKHR* modes);
32622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR VkResult CreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* create_info, const VkAllocationCallbacks* allocator, VkSwapchainKHR* swapchain_handle);
33622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR void DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle, const VkAllocationCallbacks* allocator);
34622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR VkResult GetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain_handle, uint32_t* count, VkImage* images);
35622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR VkResult AcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain_handle, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* image_index);
36622622377a1ac71a81a88e335f170c4a08835f06Chia-I WuVKAPI_ATTR VkResult QueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* present_info);
37de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu// clang-format on
38de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu
39622622377a1ac71a81a88e335f170c4a08835f06Chia-I Wu}  // namespace driver
40de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu}  // namespace vulkan
41de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu
42de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu#endif  // LIBVULKAN_SWAPCHAIN_H
43