Merge remote-tracking branch 'mesa-public/master' into vulkan
[mesa.git] / src / vulkan / anv_wsi.c
index 3778a1b20e275dec649157fc78949a9b41eb3d3f..f5c2d3716a50b99d380010c8a6db8fc8d9d5e0a0 100644 (file)
@@ -34,11 +34,13 @@ anv_init_wsi(struct anv_instance *instance)
    if (result != VK_SUCCESS)
       return result;
 
+#ifdef HAVE_WAYLAND_PLATFORM
    result = anv_wl_init_wsi(instance);
    if (result != VK_SUCCESS) {
       anv_x11_finish_wsi(instance);
       return result;
    }
+#endif
 
    return VK_SUCCESS;
 }
@@ -46,23 +48,25 @@ anv_init_wsi(struct anv_instance *instance)
 void
 anv_finish_wsi(struct anv_instance *instance)
 {
+#ifdef HAVE_WAYLAND_PLATFORM
    anv_wl_finish_wsi(instance);
+#endif
    anv_x11_finish_wsi(instance);
 }
 
 VkResult
-anv_GetPhysicalDeviceSurfaceSupportWSI(
+anv_GetPhysicalDeviceSurfaceSupportKHR(
     VkPhysicalDevice                        physicalDevice,
     uint32_t                                queueFamilyIndex,
-    const VkSurfaceDescriptionWSI*          pSurfaceDescription,
+    const VkSurfaceDescriptionKHR*          pSurfaceDescription,
     VkBool32*                               pSupported)
 {
    ANV_FROM_HANDLE(anv_physical_device, physical_device, physicalDevice);
 
    assert(pSurfaceDescription->sType ==
-          VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_WSI);
+          VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR);
 
-   VkSurfaceDescriptionWindowWSI *window = (void *)pSurfaceDescription;
+   VkSurfaceDescriptionWindowKHR *window = (void *)pSurfaceDescription;
 
    struct anv_wsi_implementation *impl =
       physical_device->instance->wsi_impl[window->platform];
@@ -77,116 +81,159 @@ anv_GetPhysicalDeviceSurfaceSupportWSI(
 }
 
 VkResult
-anv_GetSurfaceInfoWSI(
+anv_GetSurfacePropertiesKHR(
     VkDevice                                 _device,
-    const VkSurfaceDescriptionWSI*           pSurfaceDescription,
-    VkSurfaceInfoTypeWSI                     infoType,
-    size_t*                                  pDataSize,
-    void*                                    pData)
+    const VkSurfaceDescriptionKHR*           pSurfaceDescription,
+    VkSurfacePropertiesKHR*                  pSurfaceProperties)
 {
    ANV_FROM_HANDLE(anv_device, device, _device);
 
    assert(pSurfaceDescription->sType ==
-          VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_WSI);
-   VkSurfaceDescriptionWindowWSI *window =
-      (VkSurfaceDescriptionWindowWSI *)pSurfaceDescription;
+          VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR);
+   VkSurfaceDescriptionWindowKHR *window =
+      (VkSurfaceDescriptionWindowKHR *)pSurfaceDescription;
 
    struct anv_wsi_implementation *impl =
       device->instance->wsi_impl[window->platform];
 
    assert(impl);
 
-   return impl->get_surface_info(impl, device, window, infoType,
-                                 pDataSize, pData);
+   return impl->get_surface_properties(impl, device, window,
+                                       pSurfaceProperties);
 }
 
 VkResult
-anv_CreateSwapChainWSI(
+anv_GetSurfaceFormatsKHR(
     VkDevice                                 _device,
-    const VkSwapChainCreateInfoWSI*          pCreateInfo,
-    VkSwapChainWSI*                          pSwapChain)
+    const VkSurfaceDescriptionKHR*           pSurfaceDescription,
+    uint32_t*                                pCount,
+    VkSurfaceFormatKHR*                      pSurfaceFormats)
 {
    ANV_FROM_HANDLE(anv_device, device, _device);
-   struct anv_swap_chain *swap_chain;
+
+   assert(pSurfaceDescription->sType ==
+          VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR);
+   VkSurfaceDescriptionWindowKHR *window =
+      (VkSurfaceDescriptionWindowKHR *)pSurfaceDescription;
+
+   struct anv_wsi_implementation *impl =
+      device->instance->wsi_impl[window->platform];
+
+   assert(impl);
+
+   return impl->get_surface_formats(impl, device, window,
+                                    pCount, pSurfaceFormats);
+}
+
+VkResult
+anv_GetSurfacePresentModesKHR(
+    VkDevice                                 _device,
+    const VkSurfaceDescriptionKHR*           pSurfaceDescription,
+    uint32_t*                                pCount,
+    VkPresentModeKHR*                        pPresentModes)
+{
+   ANV_FROM_HANDLE(anv_device, device, _device);
+
+   assert(pSurfaceDescription->sType ==
+          VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR);
+   VkSurfaceDescriptionWindowKHR *window =
+      (VkSurfaceDescriptionWindowKHR *)pSurfaceDescription;
+
+   struct anv_wsi_implementation *impl =
+      device->instance->wsi_impl[window->platform];
+
+   assert(impl);
+
+   return impl->get_surface_present_modes(impl, device, window,
+                                          pCount, pPresentModes);
+}
+
+
+VkResult
+anv_CreateSwapchainKHR(
+    VkDevice                                 _device,
+    const VkSwapchainCreateInfoKHR*          pCreateInfo,
+    VkSwapchainKHR*                          pSwapchain)
+{
+   ANV_FROM_HANDLE(anv_device, device, _device);
+   struct anv_swapchain *swapchain;
    VkResult result;
 
    assert(pCreateInfo->pSurfaceDescription->sType ==
-          VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_WSI);
-   VkSurfaceDescriptionWindowWSI *window =
-      (VkSurfaceDescriptionWindowWSI *)pCreateInfo->pSurfaceDescription;
+          VK_STRUCTURE_TYPE_SURFACE_DESCRIPTION_WINDOW_KHR);
+   VkSurfaceDescriptionWindowKHR *window =
+      (VkSurfaceDescriptionWindowKHR *)pCreateInfo->pSurfaceDescription;
 
    struct anv_wsi_implementation *impl =
       device->instance->wsi_impl[window->platform];
 
    assert(impl);
 
-   result = impl->create_swap_chain(impl, device, pCreateInfo, &swap_chain);
+   result = impl->create_swapchain(impl, device, pCreateInfo, &swapchain);
 
    if (result == VK_SUCCESS)
-      *pSwapChain = anv_swap_chain_to_handle(swap_chain);
+      *pSwapchain = anv_swapchain_to_handle(swapchain);
 
    return result;
 }
 
 VkResult
-anv_DestroySwapChainWSI(
+anv_DestroySwapchainKHR(
     VkDevice                                 device,
-    VkSwapChainWSI                           swapChain)
+    VkSwapchainKHR                           swapChain)
 {
-   ANV_FROM_HANDLE(anv_swap_chain, swap_chain, swapChain);
+   ANV_FROM_HANDLE(anv_swapchain, swapchain, swapChain);
 
-   assert(swap_chain->device == anv_device_from_handle(device));
+   assert(swapchain->device == anv_device_from_handle(device));
 
-   return swap_chain->destroy(swap_chain);
+   return swapchain->destroy(swapchain);
 }
 
 VkResult
-anv_GetSwapChainInfoWSI(
+anv_GetSwapchainImagesKHR(
     VkDevice                                 device,
-    VkSwapChainWSI                           swapChain,
-    VkSwapChainInfoTypeWSI                   infoType,
-    size_t*                                  pDataSize,
-    void*                                    pData)
+    VkSwapchainKHR                           _swapchain,
+    uint32_t*                                pCount,
+    VkImage*                                 pSwapchainImages)
 {
-   ANV_FROM_HANDLE(anv_swap_chain, swap_chain, swapChain);
+   ANV_FROM_HANDLE(anv_swapchain, swapchain, _swapchain);
 
-   assert(swap_chain->device == anv_device_from_handle(device));
+   assert(swapchain->device == anv_device_from_handle(device));
 
-   return swap_chain->get_swap_chain_info(swap_chain, infoType,
-                                          pDataSize, pData);
+   return swapchain->get_images(swapchain, pCount, pSwapchainImages);
 }
 
 VkResult
-anv_AcquireNextImageWSI(
+anv_AcquireNextImageKHR(
     VkDevice                                 device,
-    VkSwapChainWSI                           swapChain,
+    VkSwapchainKHR                           _swapchain,
     uint64_t                                 timeout,
     VkSemaphore                              semaphore,
     uint32_t*                                pImageIndex)
 {
-   ANV_FROM_HANDLE(anv_swap_chain, swap_chain, swapChain);
+   ANV_FROM_HANDLE(anv_swapchain, swapchain, _swapchain);
 
-   assert(swap_chain->device == anv_device_from_handle(device));
+   assert(swapchain->device == anv_device_from_handle(device));
 
-   return swap_chain->acquire_next_image(swap_chain,
-                                         timeout, semaphore, pImageIndex);
+   return swapchain->acquire_next_image(swapchain,
+                                        timeout, semaphore, pImageIndex);
 }
 
 VkResult
-anv_QueuePresentWSI(
+anv_QueuePresentKHR(
     VkQueue                                  _queue,
-    VkPresentInfoWSI*                        pPresentInfo)
+    VkPresentInfoKHR*                        pPresentInfo)
 {
    ANV_FROM_HANDLE(anv_queue, queue, _queue);
    VkResult result;
 
-   for (uint32_t i = 0; i < pPresentInfo->swapChainCount; i++) {
-      ANV_FROM_HANDLE(anv_swap_chain, swap_chain, pPresentInfo->swapChains[i]);
+   for (uint32_t i = 0; i < pPresentInfo->swapchainCount; i++) {
+      ANV_FROM_HANDLE(anv_swapchain, swapchain, pPresentInfo->swapchains[i]);
 
-      assert(swap_chain->device == queue->device);
+      assert(swapchain->device == queue->device);
 
-      result = swap_chain->queue_present(swap_chain, queue,
-                                         pPresentInfo->imageIndices[i]);
+      result = swapchain->queue_present(swapchain, queue,
+                                        pPresentInfo->imageIndices[i]);
       /* TODO: What if one of them returns OUT_OF_DATE? */
       if (result != VK_SUCCESS)
          return result;