| Index: cc/blink/web_external_texture_layer_impl.cc
|
| diff --git a/cc/blink/web_external_texture_layer_impl.cc b/cc/blink/web_external_texture_layer_impl.cc
|
| index 2eef8658361ce36e26bad09113ed390b5d4ac225..c99106b41f8ad5a7518a22d6811012f1621c58c6 100644
|
| --- a/cc/blink/web_external_texture_layer_impl.cc
|
| +++ b/cc/blink/web_external_texture_layer_impl.cc
|
| @@ -61,6 +61,24 @@ void WebExternalTextureLayerImpl::setNearestNeighbor(bool nearest_neighbor) {
|
| ->SetNearestNeighbor(nearest_neighbor);
|
| }
|
|
|
| +static gfx::ColorSpace toGfxColorSpace(const SkColorSpace* skColorSpace) {
|
| + // TODO(crbug.com/634102): eliminate this clumsy conversion by unifying
|
| + // SkColorSpace and gfx::ColorSpace
|
| + if (!skColorSpace)
|
| + return gfx::ColorSpace::ColorSpace();
|
| +
|
| + // Assumption: using srgb or linear-rgb
|
| + DCHECK(skColorSpace->gammaNamed() == SkColorSpace::kSRGB_GammaNamed ||
|
| + skColorSpace->gammaNamed() == SkColorSpace::kLinear_GammaNamed);
|
| + gfx::ColorSpace::TransferID transfer =
|
| + skColorSpace->gammaNamed() == SkColorSpace::kSRGB_GammaNamed
|
| + ? gfx::ColorSpace::TransferID::IEC61966_2_1
|
| + : gfx::ColorSpace::TransferID::LINEAR;
|
| + return gfx::ColorSpace::ColorSpace(gfx::ColorSpace::PrimaryID::BT709,
|
| + transfer, gfx::ColorSpace::MatrixID::RGB,
|
| + gfx::ColorSpace::RangeID::FULL);
|
| +}
|
| +
|
| bool WebExternalTextureLayerImpl::PrepareTextureMailbox(
|
| cc::TextureMailbox* mailbox,
|
| std::unique_ptr<cc::SingleReleaseCallback>* release_callback,
|
| @@ -97,6 +115,7 @@ bool WebExternalTextureLayerImpl::PrepareTextureMailbox(
|
| client_mailbox.allowOverlay, false);
|
| }
|
| mailbox->set_nearest_neighbor(client_mailbox.nearestNeighbor);
|
| + mailbox->set_color_space(toGfxColorSpace(client_mailbox.colorSpace));
|
|
|
| if (mailbox->IsValid()) {
|
| *release_callback = cc::SingleReleaseCallback::Create(
|
|
|