X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fvulkan%2Fanv_wsi.c;h=f5c2d3716a50b99d380010c8a6db8fc8d9d5e0a0;hb=179fc4aae8f782453f0488e8dd508f9a01117376;hp=3778a1b20e275dec649157fc78949a9b41eb3d3f;hpb=9a95d08ed6af92c38f84d750022131c9d03f77ce;p=mesa.git diff --git a/src/vulkan/anv_wsi.c b/src/vulkan/anv_wsi.c index 3778a1b20e2..f5c2d3716a5 100644 --- a/src/vulkan/anv_wsi.c +++ b/src/vulkan/anv_wsi.c @@ -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;