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);
30e278daf850a664a1f15c760c64a74d3649b6f812Courtney GoeltzenleuchterVKAPI_ATTR VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev, VkSurfaceKHR surface_handle, 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);
374c8bb2a95d7849c79dea889f1be59281f4e374bfIan ElliottVKAPI_ATTR VkResult GetRefreshCycleDurationGOOGLE(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
384c8bb2a95d7849c79dea889f1be59281f4e374bfIan ElliottVKAPI_ATTR VkResult GetPastPresentationTimingGOOGLE(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
390f2ac2e52d06ed171f7b888870c1c3c42b167d1aChris ForbesVKAPI_ATTR VkResult GetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain);
40d634c483bcbd564acd81dcf5d15fc5fa8ab410f4Courtney GoeltzenleuchterVKAPI_ATTR void SetHdrMetadataEXT(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pHdrMetadataEXTs);
412452cf7e653c425191791a4fb546106d6a277654Chris ForbesVKAPI_ATTR VkResult GetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
422452cf7e653c425191791a4fb546106d6a277654Chris ForbesVKAPI_ATTR VkResult GetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
43de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu// clang-format on
44de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu
45622622377a1ac71a81a88e335f170c4a08835f06Chia-I Wu}  // namespace driver
46de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu}  // namespace vulkan
47de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu
48de82e27e2010b48e72103e98ba3fe6eba5152b54Chia-I Wu#endif  // LIBVULKAN_SWAPCHAIN_H
49