diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/gpu/vulkan/vulkan_surface.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/gpu/vulkan/vulkan_surface.cc')
-rw-r--r-- | chromium/gpu/vulkan/vulkan_surface.cc | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/chromium/gpu/vulkan/vulkan_surface.cc b/chromium/gpu/vulkan/vulkan_surface.cc index 8e20ccb7ded..5dfdff528c3 100644 --- a/chromium/gpu/vulkan/vulkan_surface.cc +++ b/chromium/gpu/vulkan/vulkan_surface.cc @@ -8,8 +8,10 @@ #include <algorithm> +#include "base/logging.h" #include "base/macros.h" #include "base/stl_util.h" +#include "base/threading/scoped_blocking_call.h" #include "gpu/vulkan/vulkan_device_queue.h" #include "gpu/vulkan/vulkan_function_pointers.h" #include "gpu/vulkan/vulkan_swap_chain.h" @@ -68,6 +70,9 @@ gfx::OverlayTransform FromVkSurfaceTransformFlag( } } +// Minimum VkImages in a vulkan swap chain. +uint32_t kMinImageCount = 3u; + } // namespace VulkanSurface::~VulkanSurface() { @@ -165,8 +170,6 @@ bool VulkanSurface::Initialize(VulkanDeviceQueue* device_queue, return false; } - image_count_ = std::max(surface_caps.minImageCount, 3u); - return true; } @@ -184,10 +187,18 @@ gfx::SwapResult VulkanSurface::SwapBuffers() { } gfx::SwapResult VulkanSurface::PostSubBuffer(const gfx::Rect& rect) { - return swap_chain_->PresentBuffer(rect); + return swap_chain_->PostSubBuffer(rect); +} + +void VulkanSurface::PostSubBufferAsync( + const gfx::Rect& rect, + VulkanSwapChain::PostSubBufferCompletionCallback callback) { + swap_chain_->PostSubBufferAsync(rect, std::move(callback)); } void VulkanSurface::Finish() { + base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, + base::BlockingType::WILL_BLOCK); vkQueueWaitIdle(device_queue_->GetVulkanQueue()); } @@ -259,12 +270,12 @@ bool VulkanSurface::CreateSwapChain(const gfx::Size& size, transform_ = transform; auto swap_chain = std::make_unique<VulkanSwapChain>(); - // Create swap chain. - DCHECK_EQ(image_count_, std::max(surface_caps.minImageCount, 3u)); - if (!swap_chain->Initialize( - device_queue_, surface_, surface_format_, image_size_, image_count_, - vk_transform, enforce_protected_memory_, std::move(swap_chain_))) { + auto min_image_count = std::max(surface_caps.minImageCount, kMinImageCount); + if (!swap_chain->Initialize(device_queue_, surface_, surface_format_, + image_size_, min_image_count, vk_transform, + enforce_protected_memory_, + std::move(swap_chain_))) { return false; } |