Commit 5d6e8d14 authored by Vasiliy Telezhnikov's avatar Vasiliy Telezhnikov Committed by Commit Bot

Fix WebView interop mode with Vulkan hwui

This CL fixes two problems with WebView/SkiaRenderer/GL with vulkan hwui:
* Missing allocator, chrome introduced one to use single instance with Skia.
* Wrong fboid for query alpha capabilities.

Bug: 984955
Change-Id: Ib8e9fb57bcf9b11557aac5a412abb91556819038
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2314419Reviewed-by: default avatarPeng Huang <penghuang@chromium.org>
Commit-Queue: Vasiliy Telezhnikov <vasilyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#791036}
parent ec43c758
...@@ -89,6 +89,7 @@ source_set("gfx") { ...@@ -89,6 +89,7 @@ source_set("gfx") {
"//gpu/skia_bindings", "//gpu/skia_bindings",
"//gpu/vulkan:vulkan", "//gpu/vulkan:vulkan",
"//gpu/vulkan/init", "//gpu/vulkan/init",
"//gpu/vulkan/init:skia",
"//services/viz/privileged/mojom", "//services/viz/privileged/mojom",
"//services/viz/public/mojom", "//services/viz/public/mojom",
"//skia", "//skia",
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/native_library.h" #include "base/native_library.h"
#include "gpu/vulkan/init/gr_vk_memory_allocator_impl.h"
#include "gpu/vulkan/init/vulkan_factory.h" #include "gpu/vulkan/init/vulkan_factory.h"
#include "gpu/vulkan/vulkan_device_queue.h" #include "gpu/vulkan/vulkan_device_queue.h"
#include "gpu/vulkan/vulkan_fence_helper.h" #include "gpu/vulkan/vulkan_fence_helper.h"
...@@ -173,7 +174,7 @@ bool AwVulkanContextProvider::Initialize(AwDrawFn_InitVkParams* params) { ...@@ -173,7 +174,7 @@ bool AwVulkanContextProvider::Initialize(AwDrawFn_InitVkParams* params) {
.fVkExtensions = &vk_extensions, .fVkExtensions = &vk_extensions,
.fDeviceFeatures = params->device_features, .fDeviceFeatures = params->device_features,
.fDeviceFeatures2 = params->device_features_2, .fDeviceFeatures2 = params->device_features_2,
.fMemoryAllocator = nullptr, .fMemoryAllocator = gpu::CreateGrVkMemoryAllocator(device_queue_.get()),
.fGetProc = get_proc, .fGetProc = get_proc,
.fOwnsInstanceAndDevice = false, .fOwnsInstanceAndDevice = false,
}; };
......
...@@ -37,7 +37,8 @@ SkiaOutputDeviceWebView::SkiaOutputDeviceWebView( ...@@ -37,7 +37,8 @@ SkiaOutputDeviceWebView::SkiaOutputDeviceWebView(
DCHECK(context_state_->context()); DCHECK(context_state_->context());
// Get alpha bits from the default frame buffer. // Get alpha bits from the default frame buffer.
glBindFramebufferEXT(GL_FRAMEBUFFER, 0); glBindFramebufferEXT(GL_FRAMEBUFFER,
gl_surface_->GetBackingFramebufferObject());
context_state_->gr_context()->resetContext(kRenderTarget_GrGLBackendState); context_state_->gr_context()->resetContext(kRenderTarget_GrGLBackendState);
GLint alpha_bits = 0; GLint alpha_bits = 0;
glGetIntegerv(GL_ALPHA_BITS, &alpha_bits); glGetIntegerv(GL_ALPHA_BITS, &alpha_bits);
......
...@@ -291,6 +291,9 @@ bool VulkanDeviceQueue::InitializeForWebView( ...@@ -291,6 +291,9 @@ bool VulkanDeviceQueue::InitializeForWebView(
vk_queue_index_ = vk_queue_index; vk_queue_index_ = vk_queue_index;
enabled_extensions_ = std::move(enabled_extensions); enabled_extensions_ = std::move(enabled_extensions);
vma::CreateAllocator(vk_physical_device_, vk_device_, vk_instance_,
&vma_allocator_);
cleanup_helper_ = std::make_unique<VulkanFenceHelper>(this); cleanup_helper_ = std::make_unique<VulkanFenceHelper>(this);
return true; return true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment