Commit a46e55d5 authored by Juanmi Huertas's avatar Juanmi Huertas Committed by Commit Bot

Removing AcceleratedResourceUsage from offscreen_canvas

Refactors the GetOrCreateResourceProvider of OffscreenCanvas
simplifying the logic and removing AcceleratedResourceUsage.

Also removes the usage parameter an metric capture, as in next
CLs this usage will be completely removed.

Part of a big refactor for CanvasResourceProvider.

Bug: 1035589
Change-Id: Icd46f812d312f56454205c6f23f70c72e6e44d5e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2103080
Commit-Queue: Juanmi Huertas <juanmihd@chromium.org>
Reviewed-by: default avatarFernando Serboncini <fserb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#751071}
parent 04d1eec3
...@@ -377,40 +377,47 @@ CanvasResourceProvider* OffscreenCanvas::GetOrCreateResourceProvider() { ...@@ -377,40 +377,47 @@ CanvasResourceProvider* OffscreenCanvas::GetOrCreateResourceProvider() {
} }
IntSize surface_size(width(), height()); IntSize surface_size(width(), height());
CanvasResourceProvider::ResourceUsage usage;
if (can_use_gpu) {
if (HasPlaceholderCanvas()) {
usage = CanvasResourceProvider::ResourceUsage::
kAcceleratedCompositedResourceUsage;
} else {
usage =
CanvasResourceProvider::ResourceUsage::kAcceleratedResourceUsage;
}
} else {
if (HasPlaceholderCanvas()) {
usage = CanvasResourceProvider::ResourceUsage::
kSoftwareCompositedResourceUsage;
} else {
usage = CanvasResourceProvider::ResourceUsage::kSoftwareResourceUsage;
}
}
base::WeakPtr<CanvasResourceDispatcher> dispatcher_weakptr = base::WeakPtr<CanvasResourceDispatcher> dispatcher_weakptr =
HasPlaceholderCanvas() ? GetOrCreateResourceDispatcher()->GetWeakPtr() HasPlaceholderCanvas() ? GetOrCreateResourceDispatcher()->GetWeakPtr()
: nullptr; : nullptr;
base::UmaHistogramEnumeration("Blink.Canvas.ResourceProviderUsage", usage); std::unique_ptr<CanvasResourceProvider> provider;
// kAcceleratedCompositedResourceUsage and kSoftwareCompositedResourceUsage
if (usage == // still need to use the Create method for CanvasResourceProvider.
CanvasResourceProvider::ResourceUsage::kSoftwareResourceUsage) { // The former kAcceleratedResourceUsage and kSoftwareResourceUsage have been
ReplaceResourceProvider(CanvasResourceProvider::CreateBitmapProvider( // replaced by two different constructors (one of sharedImage witt the
surface_size, FilterQuality(), context_->ColorParams())); // fallback to bitmap, and the other one to bitmap)
} else { // This is still WIP and more changes will come in upcoming CLs.
ReplaceResourceProvider(CanvasResourceProvider::Create( if (can_use_gpu && HasPlaceholderCanvas()) {
surface_size, usage, SharedGpuContext::ContextProviderWrapper(), 0, provider = CanvasResourceProvider::Create(
FilterQuality(), context_->ColorParams(), presentation_mode, surface_size,
std::move(dispatcher_weakptr), false /* is_origin_top_left */)); CanvasResourceProvider::ResourceUsage::
kAcceleratedCompositedResourceUsage,
SharedGpuContext::ContextProviderWrapper(), 0, FilterQuality(),
context_->ColorParams(), presentation_mode,
std::move(dispatcher_weakptr), /*is_origin_top_left=*/false);
} else if (!can_use_gpu && HasPlaceholderCanvas()) {
provider = CanvasResourceProvider::Create(
surface_size,
CanvasResourceProvider::ResourceUsage::
kSoftwareCompositedResourceUsage,
SharedGpuContext::ContextProviderWrapper(), 0, FilterQuality(),
context_->ColorParams(), presentation_mode,
std::move(dispatcher_weakptr), /*is_origin_top_left=*/false);
} else if (can_use_gpu) {
provider = CanvasResourceProvider::CreateSharedImageProvider(
surface_size, SharedGpuContext::ContextProviderWrapper(),
FilterQuality(), context_->ColorParams(),
/*is_origin_top_left=*/false, /*shared_image_usage_flags*/ 0u);
} // else will try the BitmapProvider
if (!provider) {
provider = CanvasResourceProvider::CreateBitmapProvider(
surface_size, FilterQuality(), context_->ColorParams());
} }
ReplaceResourceProvider(std::move(provider));
if (ResourceProvider() && ResourceProvider()->IsValid()) { if (ResourceProvider() && ResourceProvider()->IsValid()) {
base::UmaHistogramBoolean("Blink.Canvas.ResourceProviderIsAccelerated", base::UmaHistogramBoolean("Blink.Canvas.ResourceProviderIsAccelerated",
ResourceProvider()->IsAccelerated()); ResourceProvider()->IsAccelerated());
......
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