Loading vulkan/libvulkan/swapchain.cpp +22 −2 Original line number Diff line number Diff line Loading @@ -350,8 +350,10 @@ VkResult CreateSwapchainKHR_Bottom(VkDevice device, "swapchain re-creation not yet implemented"); ALOGE_IF(create_info->preTransform != VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, "swapchain preTransform not yet implemented"); ALOGE_IF(create_info->presentMode != VK_PRESENT_MODE_FIFO_KHR, "present modes other than FIFO are not yet implemented"); ALOGW_IF(!(create_info->presentMode == VK_PRESENT_MODE_FIFO_KHR || create_info->presentMode == VK_PRESENT_MODE_MAILBOX_KHR), "swapchain present mode %d not supported", create_info->presentMode); // -- Configure the native window -- Loading Loading @@ -390,6 +392,13 @@ VkResult CreateSwapchainKHR_Bottom(VkDevice device, ALOGE("window->query failed: %s (%d)", strerror(-err), err); return VK_ERROR_INITIALIZATION_FAILED; } // The MIN_UNDEQUEUED_BUFFERS query doesn't know whether we'll be using // async mode or not, and assumes not. But in async mode, the BufferQueue // requires an extra undequeued buffer. // See BufferQueueCore::getMinUndequeuedBufferCountLocked(). if (create_info->presentMode == VK_PRESENT_MODE_MAILBOX_KHR) min_undequeued_buffers += 1; uint32_t num_images = (create_info->minImageCount - 1) + min_undequeued_buffers; err = native_window_set_buffer_count(surface.window.get(), num_images); Loading Loading @@ -422,6 +431,17 @@ VkResult CreateSwapchainKHR_Bottom(VkDevice device, return VK_ERROR_INITIALIZATION_FAILED; } err = surface.window->setSwapInterval( surface.window.get(), create_info->presentMode == VK_PRESENT_MODE_MAILBOX_KHR ? 0 : 1); if (err != 0) { // TODO(jessehall): Improve error reporting. Can we enumerate possible // errors and translate them to valid Vulkan result codes? ALOGE("native_window->setSwapInterval failed: %s (%d)", strerror(-err), err); return VK_ERROR_INITIALIZATION_FAILED; } // -- Allocate our Swapchain object -- // After this point, we must deallocate the swapchain on error. Loading Loading
vulkan/libvulkan/swapchain.cpp +22 −2 Original line number Diff line number Diff line Loading @@ -350,8 +350,10 @@ VkResult CreateSwapchainKHR_Bottom(VkDevice device, "swapchain re-creation not yet implemented"); ALOGE_IF(create_info->preTransform != VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, "swapchain preTransform not yet implemented"); ALOGE_IF(create_info->presentMode != VK_PRESENT_MODE_FIFO_KHR, "present modes other than FIFO are not yet implemented"); ALOGW_IF(!(create_info->presentMode == VK_PRESENT_MODE_FIFO_KHR || create_info->presentMode == VK_PRESENT_MODE_MAILBOX_KHR), "swapchain present mode %d not supported", create_info->presentMode); // -- Configure the native window -- Loading Loading @@ -390,6 +392,13 @@ VkResult CreateSwapchainKHR_Bottom(VkDevice device, ALOGE("window->query failed: %s (%d)", strerror(-err), err); return VK_ERROR_INITIALIZATION_FAILED; } // The MIN_UNDEQUEUED_BUFFERS query doesn't know whether we'll be using // async mode or not, and assumes not. But in async mode, the BufferQueue // requires an extra undequeued buffer. // See BufferQueueCore::getMinUndequeuedBufferCountLocked(). if (create_info->presentMode == VK_PRESENT_MODE_MAILBOX_KHR) min_undequeued_buffers += 1; uint32_t num_images = (create_info->minImageCount - 1) + min_undequeued_buffers; err = native_window_set_buffer_count(surface.window.get(), num_images); Loading Loading @@ -422,6 +431,17 @@ VkResult CreateSwapchainKHR_Bottom(VkDevice device, return VK_ERROR_INITIALIZATION_FAILED; } err = surface.window->setSwapInterval( surface.window.get(), create_info->presentMode == VK_PRESENT_MODE_MAILBOX_KHR ? 0 : 1); if (err != 0) { // TODO(jessehall): Improve error reporting. Can we enumerate possible // errors and translate them to valid Vulkan result codes? ALOGE("native_window->setSwapInterval failed: %s (%d)", strerror(-err), err); return VK_ERROR_INITIALIZATION_FAILED; } // -- Allocate our Swapchain object -- // After this point, we must deallocate the swapchain on error. Loading