| Index: cc/resources/resource_provider.cc
|
| diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc
|
| index ce9b233b6790206c69a9374a594bb0eaa79c9d95..7aae2b21e6ba2673b1e35ccdf5ced973b4acef75 100644
|
| --- a/cc/resources/resource_provider.cc
|
| +++ b/cc/resources/resource_provider.cc
|
| @@ -663,6 +663,7 @@ ResourceId ResourceProvider::CreateResourceFromTextureMailbox(
|
| }
|
| resource->allocated = true;
|
| resource->set_mailbox(mailbox);
|
| + resource->color_space = mailbox.color_space();
|
| resource->release_callback_impl =
|
| base::Bind(&SingleReleaseCallbackImpl::Run,
|
| base::Owned(release_callback_impl.release()));
|
| @@ -810,6 +811,12 @@ ResourceProvider::TextureHint ResourceProvider::GetTextureHint(ResourceId id) {
|
| return GetResource(id)->hint;
|
| }
|
|
|
| +static sk_sp<SkColorSpace> toSkColorSpace(const gfx::ColorSpace& color_space) {
|
| + // TODO(crbug.com/634102): Implement conversion for skia-based compositing to
|
| + // be color-managed
|
| + return nullptr;
|
| +}
|
| +
|
| void ResourceProvider::CopyToResource(ResourceId id,
|
| const uint8_t* image,
|
| const gfx::Size& image_size) {
|
| @@ -831,7 +838,8 @@ void ResourceProvider::CopyToResource(ResourceId id,
|
| DCHECK(resource->allocated);
|
| DCHECK_EQ(RGBA_8888, resource->format);
|
| SkImageInfo source_info =
|
| - SkImageInfo::MakeN32Premul(image_size.width(), image_size.height());
|
| + SkImageInfo::MakeN32Premul(image_size.width(), image_size.height(),
|
| + toSkColorSpace(resource->color_space));
|
| size_t image_stride = image_size.width() * 4;
|
|
|
| ScopedWriteLockSoftware lock(this, id);
|
| @@ -1156,8 +1164,9 @@ ResourceProvider::ScopedSkSurfaceProvider::~ScopedSkSurfaceProvider() {
|
| void ResourceProvider::PopulateSkBitmapWithResource(SkBitmap* sk_bitmap,
|
| const Resource* resource) {
|
| DCHECK_EQ(RGBA_8888, resource->format);
|
| - SkImageInfo info = SkImageInfo::MakeN32Premul(resource->size.width(),
|
| - resource->size.height());
|
| + SkImageInfo info = SkImageInfo::MakeN32Premul(
|
| + resource->size.width(), resource->size.height(),
|
| + toSkColorSpace(resource->color_space));
|
| sk_bitmap->installPixels(info, resource->pixels, info.minRowBytes());
|
| }
|
|
|
| @@ -1190,7 +1199,9 @@ ResourceProvider::ScopedReadLockSkImage::ScopedReadLockSkImage(
|
| desc.fOrigin = kTopLeft_GrSurfaceOrigin;
|
| desc.fTextureHandle = skia::GrGLTextureInfoToGrBackendObject(texture_info);
|
| sk_image_ = SkImage::MakeFromTexture(
|
| - resource_provider->compositor_context_provider_->GrContext(), desc);
|
| + resource_provider->compositor_context_provider_->GrContext(), desc,
|
| + kPremul_SkAlphaType, toSkColorSpace(resource->color_space), nullptr,
|
| + nullptr);
|
| } else if (resource->pixels) {
|
| SkBitmap sk_bitmap;
|
| ResourceProvider::PopulateSkBitmapWithResource(&sk_bitmap, resource);
|
|
|