Chromium Code Reviews| 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..08c37106c45ce81c2da23f3082ccc651ef090b3b 100644 |
| --- a/cc/blink/web_external_texture_layer_impl.cc |
| +++ b/cc/blink/web_external_texture_layer_impl.cc |
| @@ -61,6 +61,22 @@ 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 |
|
Stephen White
2016/08/11 20:41:27
Assert that assumption?
Justin Novosad
2016/08/12 17:40:18
Done.
|
| + 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 +113,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( |