summaryrefslogtreecommitdiff
path: root/chromium/components/viz/common/gpu
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/components/viz/common/gpu
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-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/components/viz/common/gpu')
-rw-r--r--chromium/components/viz/common/gpu/context_cache_controller_unittest.cc2
-rw-r--r--chromium/components/viz/common/gpu/context_lost_reason.h10
-rw-r--r--chromium/components/viz/common/gpu/metal_api_proxy.h3
-rw-r--r--chromium/components/viz/common/gpu/metal_context_provider.mm1
-rw-r--r--chromium/components/viz/common/gpu/vulkan_in_process_context_provider.cc36
-rw-r--r--chromium/components/viz/common/gpu/vulkan_in_process_context_provider.h3
6 files changed, 49 insertions, 6 deletions
diff --git a/chromium/components/viz/common/gpu/context_cache_controller_unittest.cc b/chromium/components/viz/common/gpu/context_cache_controller_unittest.cc
index c380ea621e7..03696829f15 100644
--- a/chromium/components/viz/common/gpu/context_cache_controller_unittest.cc
+++ b/chromium/components/viz/common/gpu/context_cache_controller_unittest.cc
@@ -177,7 +177,7 @@ TEST(ContextCacheControllerTest, CheckSkiaResourcePurgeAPI) {
SkPixmap pixmap(image_info, image_data.data(), image_info.minRowBytes());
auto image = SkImage::MakeRasterCopy(pixmap);
auto image_gpu = image->makeTextureImage(gr_context);
- gr_context->flush();
+ gr_context->flushAndSubmit();
}
// Ensure we see size taken up for the image (now released, but cached for
diff --git a/chromium/components/viz/common/gpu/context_lost_reason.h b/chromium/components/viz/common/gpu/context_lost_reason.h
index 823b5c5b822..9a4ea393e59 100644
--- a/chromium/components/viz/common/gpu/context_lost_reason.h
+++ b/chromium/components/viz/common/gpu/context_lost_reason.h
@@ -26,12 +26,14 @@ enum ContextLostReason {
CONTEXT_LOST_OUT_OF_MEMORY = 10,
CONTEXT_LOST_MAKECURRENT_FAILED = 11,
CONTEXT_LOST_INVALID_GPU_MESSAGE = 12,
-
// SkiaRenderer marked context as lost because of failed Reshape call
CONTEXT_LOST_RESHAPE_FAILED = 13,
- // Update kMaxValue and //tools/metrics/histograms/histograms.xml when adding
- // new values.
- kMaxValue = CONTEXT_LOST_RESHAPE_FAILED
+ CONTEXT_LOST_SET_DRAW_RECTANGLE_FAILED = 14,
+ CONTEXT_LOST_DIRECT_COMPOSITION_OVERLAY_FAILED = 15,
+ CONTEXT_LOST_SWAP_FAILED = 16,
+ // Update kMaxValue here and <enum name="ContextLostReason"> in
+ // tools/metrics/histograms/enum.xml when adding new values.
+ kMaxValue = CONTEXT_LOST_SWAP_FAILED
};
VIZ_COMMON_EXPORT ContextLostReason
diff --git a/chromium/components/viz/common/gpu/metal_api_proxy.h b/chromium/components/viz/common/gpu/metal_api_proxy.h
index 39c1a1a2a03..c32a55c3ea1 100644
--- a/chromium/components/viz/common/gpu/metal_api_proxy.h
+++ b/chromium/components/viz/common/gpu/metal_api_proxy.h
@@ -5,6 +5,9 @@
#ifndef COMPONENTS_VIZ_COMMON_GPU_METAL_API_PROXY_H_
#define COMPONENTS_VIZ_COMMON_GPU_METAL_API_PROXY_H_
+#include <memory>
+#include <string>
+
#import <Metal/Metal.h>
#include <os/availability.h>
diff --git a/chromium/components/viz/common/gpu/metal_context_provider.mm b/chromium/components/viz/common/gpu/metal_context_provider.mm
index f3d7e1d49f9..40e0c5c2390 100644
--- a/chromium/components/viz/common/gpu/metal_context_provider.mm
+++ b/chromium/components/viz/common/gpu/metal_context_provider.mm
@@ -7,6 +7,7 @@
#import <Metal/Metal.h>
#include "base/bind.h"
+#include "base/logging.h"
#include "base/mac/scoped_nsobject.h"
#include "base/memory/ref_counted.h"
#include "base/metrics/histogram_macros.h"
diff --git a/chromium/components/viz/common/gpu/vulkan_in_process_context_provider.cc b/chromium/components/viz/common/gpu/vulkan_in_process_context_provider.cc
index 204fea1b374..4d098c579d1 100644
--- a/chromium/components/viz/common/gpu/vulkan_in_process_context_provider.cc
+++ b/chromium/components/viz/common/gpu/vulkan_in_process_context_provider.cc
@@ -4,6 +4,8 @@
#include "components/viz/common/gpu/vulkan_in_process_context_provider.h"
+#include "base/task/thread_pool.h"
+#include "base/task/thread_pool/thread_pool_instance.h"
#include "gpu/vulkan/buildflags.h"
#include "gpu/vulkan/init/gr_vk_memory_allocator_impl.h"
#include "gpu/vulkan/vulkan_device_queue.h"
@@ -12,9 +14,30 @@
#include "gpu/vulkan/vulkan_implementation.h"
#include "gpu/vulkan/vulkan_instance.h"
#include "gpu/vulkan/vulkan_util.h"
+#include "third_party/skia/include/core/SkExecutor.h"
#include "third_party/skia/include/gpu/GrContext.h"
#include "third_party/skia/include/gpu/vk/GrVkExtensions.h"
+namespace {
+
+class VizExecutor : public SkExecutor {
+ public:
+ VizExecutor() = default;
+ ~VizExecutor() override = default;
+ VizExecutor(const VizExecutor&) = delete;
+ VizExecutor& operator=(const VizExecutor&) = delete;
+
+ // std::function is used by SkExecutor in //third_party/skia. nocheck
+ using Fn = std::function<void(void)>; // nocheck
+ // SkExecutor:
+ void add(Fn task) override {
+ base::ThreadPool::PostTask(
+ FROM_HERE, base::BindOnce([](Fn task) { task(); }, std::move(task)));
+ }
+};
+
+} // namespace
+
namespace viz {
// static
@@ -102,7 +125,16 @@ bool VulkanInProcessContextProvider::Initialize(
vulkan_implementation_->enforce_protected_memory() ? GrProtected::kYes
: GrProtected::kNo;
- gr_context_ = GrContext::MakeVulkan(backend_context, context_options);
+ GrContextOptions options;
+ if (base::ThreadPoolInstance::Get()) {
+ // For some tests, ThreadPoolInstance is not initialized. VizExecutor will
+ // not be used for this case.
+ // TODO(penghuang): Make sure ThreadPoolInstance is initialized for related
+ // tests.
+ executor_ = std::make_unique<VizExecutor>();
+ options.fExecutor = executor_.get();
+ }
+ gr_context_ = GrContext::MakeVulkan(backend_context, options);
return gr_context_ != nullptr;
}
@@ -122,6 +154,8 @@ void VulkanInProcessContextProvider::Destroy() {
gr_context_.reset();
}
+ executor_.reset();
+
if (device_queue_) {
device_queue_->Destroy();
device_queue_.reset();
diff --git a/chromium/components/viz/common/gpu/vulkan_in_process_context_provider.h b/chromium/components/viz/common/gpu/vulkan_in_process_context_provider.h
index 1215dff230d..05ea0a5c815 100644
--- a/chromium/components/viz/common/gpu/vulkan_in_process_context_provider.h
+++ b/chromium/components/viz/common/gpu/vulkan_in_process_context_provider.h
@@ -16,6 +16,8 @@
#include "third_party/skia/include/gpu/vk/GrVkBackendContext.h"
#endif
+class SkExecutor;
+
namespace gpu {
class VulkanImplementation;
class VulkanDeviceQueue;
@@ -53,6 +55,7 @@ class VIZ_VULKAN_CONTEXT_PROVIDER_EXPORT VulkanInProcessContextProvider
#if BUILDFLAG(ENABLE_VULKAN)
sk_sp<GrContext> gr_context_;
+ std::unique_ptr<SkExecutor> executor_;
gpu::VulkanImplementation* vulkan_implementation_;
std::unique_ptr<gpu::VulkanDeviceQueue> device_queue_;
#endif