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); |
} |