Chromium Code Reviews| Index: cc/layers/texture_layer_impl.cc |
| diff --git a/cc/layers/texture_layer_impl.cc b/cc/layers/texture_layer_impl.cc |
| index 63d054900425d9af04ff18724f5b3088b569daca..3668503d77a6310441dca19c9f8c487167d08267 100644 |
| --- a/cc/layers/texture_layer_impl.cc |
| +++ b/cc/layers/texture_layer_impl.cc |
| @@ -20,6 +20,7 @@ namespace cc { |
| TextureLayerImpl::TextureLayerImpl(LayerTreeImpl* tree_impl, int id) |
| : LayerImpl(tree_impl, id), |
| external_texture_resource_(0), |
| + external_texture_allow_overlay_(false), |
| premultiplied_alpha_(true), |
| blend_background_color_(false), |
| flipped_(true), |
| @@ -84,6 +85,8 @@ bool TextureLayerImpl::WillDraw(DrawMode draw_mode, |
| external_texture_resource_ = |
| resource_provider->CreateResourceFromTextureMailbox( |
| texture_mailbox_, release_callback_.Pass()); |
| + external_texture_resource_size_ = texture_mailbox_.size(); |
| + external_texture_allow_overlay_ = texture_mailbox_.allow_overlay(); |
| DCHECK(external_texture_resource_); |
| texture_copy_ = nullptr; |
| valid_texture_copy_ = false; |
| @@ -99,12 +102,12 @@ bool TextureLayerImpl::WillDraw(DrawMode draw_mode, |
| // hardware draw. |
| if (!texture_copy_) |
| texture_copy_ = ScopedResource::Create(resource_provider); |
| - if (texture_copy_->size() != texture_mailbox_.shared_memory_size() || |
| + if (texture_copy_->size() != texture_mailbox_.size() || |
| resource_provider->InUseByConsumer(texture_copy_->id())) |
| texture_copy_->Free(); |
| if (!texture_copy_->id()) { |
| - texture_copy_->Allocate(texture_mailbox_.shared_memory_size(), |
| + texture_copy_->Allocate(texture_mailbox_.size(), |
| ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
| resource_provider->best_texture_format()); |
| } |
| @@ -127,11 +130,8 @@ bool TextureLayerImpl::WillDraw(DrawMode draw_mode, |
| } |
| resource_provider->SetPixels( |
| - texture_copy_->id(), |
| - pixels, |
| - gfx::Rect(texture_mailbox_.shared_memory_size()), |
| - gfx::Rect(texture_mailbox_.shared_memory_size()), |
| - gfx::Vector2d()); |
| + texture_copy_->id(), pixels, gfx::Rect(texture_mailbox_.size()), |
| + gfx::Rect(texture_mailbox_.size()), gfx::Vector2d()); |
| valid_texture_copy_ = true; |
| } |
| @@ -179,6 +179,10 @@ void TextureLayerImpl::AppendQuads(RenderPass* render_pass, |
| vertex_opacity_, |
| flipped_, |
| nearest_neighbor_); |
| + if (!valid_texture_copy_) { |
| + quad->resource_size = external_texture_resource_size_; |
|
danakj
2015/05/29 20:04:14
could you just pull these from the texture_mailbox
achaulk
2015/06/01 15:43:10
Done.
|
| + quad->allow_overlay = external_texture_allow_overlay_; |
| + } |
| ValidateQuadResources(quad); |
| } |