Commit 35557898 authored by Jonathan Backer's avatar Jonathan Backer Committed by Commit Bot

Call MakePromiseSkImage every frame

This allows SkiaOutputSurfaceImpl to add the ImageContextImpl to
images_in_current_paint_. This will
ImageContextImpl::BeginAccessIfNecessary for every ImageContext
displayed in the current frame. This guarantees that
ImageContextImpl::promise_image_texture_ when Skia calls fulfill on the
promise SkImage.

This particular fix was picked because
(a) it is obviously correct
(b) is easy to merge onto M78 branch

Bug: 1000004
Change-Id: I9c46a22813cc474738b744fcefb34c4a765bec5d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1801029Reviewed-by: default avatarPeng Huang <penghuang@chromium.org>
Commit-Queue: Jonathan Backer <backer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#696038}
parent 97f1670e
...@@ -508,10 +508,10 @@ SkiaRenderer::ScopedSkImageBuilder::ScopedSkImageBuilder( ...@@ -508,10 +508,10 @@ SkiaRenderer::ScopedSkImageBuilder::ScopedSkImageBuilder(
image_context->set_alpha_type(alpha_type); image_context->set_alpha_type(alpha_type);
image_context->set_origin(origin); image_context->set_origin(origin);
image_context->set_ycbcr_info(ycbcr_info); image_context->set_ycbcr_info(ycbcr_info);
skia_renderer->skia_output_surface_->MakePromiseSkImage(image_context);
LOG_IF(ERROR, !image_context->has_image())
<< "Failed to create the promise sk image.";
} }
skia_renderer->skia_output_surface_->MakePromiseSkImage(image_context);
LOG_IF(ERROR, !image_context->has_image())
<< "Failed to create the promise sk image.";
sk_image_ = image_context->image().get(); sk_image_ = image_context->image().get();
} }
} }
......
...@@ -234,7 +234,12 @@ void SkiaOutputSurfaceImpl::MakePromiseSkImage(ImageContext* image_context) { ...@@ -234,7 +234,12 @@ void SkiaOutputSurfaceImpl::MakePromiseSkImage(ImageContext* image_context) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
DCHECK(recorder_); DCHECK(recorder_);
DCHECK(!image_context->mailbox_holder().mailbox.IsZero()); DCHECK(!image_context->mailbox_holder().mailbox.IsZero());
DCHECK(!image_context->has_image());
images_in_current_paint_.push_back(
static_cast<ImageContextImpl*>(image_context));
if (image_context->has_image())
return;
SkColorType color_type = ResourceFormatToClosestSkColorType( SkColorType color_type = ResourceFormatToClosestSkColorType(
true /* gpu_compositing */, image_context->resource_format()); true /* gpu_compositing */, image_context->resource_format());
...@@ -256,8 +261,6 @@ void SkiaOutputSurfaceImpl::MakePromiseSkImage(ImageContext* image_context) { ...@@ -256,8 +261,6 @@ void SkiaOutputSurfaceImpl::MakePromiseSkImage(ImageContext* image_context) {
resource_sync_tokens_.push_back(image_context->mailbox_holder().sync_token); resource_sync_tokens_.push_back(image_context->mailbox_holder().sync_token);
image_context->mutable_mailbox_holder()->sync_token.Clear(); image_context->mutable_mailbox_holder()->sync_token.Clear();
} }
images_in_current_paint_.push_back(
static_cast<ImageContextImpl*>(image_context));
} }
sk_sp<SkImage> SkiaOutputSurfaceImpl::MakePromiseSkImageFromYUV( sk_sp<SkImage> SkiaOutputSurfaceImpl::MakePromiseSkImageFromYUV(
......
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