Bug 1345142. Move Image discard back to child. r=nical

This gets rid of the implicit discard that happens on the parent side
when using external images.
This commit is contained in:
Jeff Muizelaar 2017-03-03 10:45:28 -05:00
Родитель 243c73c180
Коммит 93b3636151
4 изменённых файлов: 3 добавлений и 10 удалений

Просмотреть файл

@ -343,8 +343,6 @@ WebRenderBridgeParent::ProcessWebRenderCommands(const gfx::IntSize &aSize,
const ByteBuffer& aux,
const WrAuxiliaryListsDescriptor& auxDesc)
{
// XXX remove it when external image key is used.
std::vector<wr::ImageKey> keysToDelete;
for (InfallibleTArray<WebRenderParentCommand>::index_type i = 0; i < aCommands.Length(); ++i) {
const WebRenderParentCommand& cmd = aCommands[i];
@ -375,7 +373,6 @@ WebRenderBridgeParent::ProcessWebRenderCommands(const gfx::IntSize &aSize,
descriptor,
wrTexture->GetExternalImageKey());
mCompositableHolder->HoldExternalImage(mPipelineId, aEpoch, texture->AsWebRenderTextureHost());
keysToDelete.push_back(key);
} else {
// XXX handling YUV
gfx::SurfaceFormat format =
@ -385,7 +382,6 @@ WebRenderBridgeParent::ProcessWebRenderCommands(const gfx::IntSize &aSize,
descriptor,
wrTexture->GetExternalImageKey());
mCompositableHolder->HoldExternalImage(mPipelineId, aEpoch, texture->AsWebRenderTextureHost());
keysToDelete.push_back(key);
}
break;
@ -405,7 +401,6 @@ WebRenderBridgeParent::ProcessWebRenderCommands(const gfx::IntSize &aSize,
auto slice = Range<uint8_t>(map.mData, size.height * map.mStride);
mApi->AddImage(key, descriptor, slice);
keysToDelete.push_back(key);
dSurf->Unmap();
break;
}
@ -433,11 +428,6 @@ WebRenderBridgeParent::ProcessWebRenderCommands(const gfx::IntSize &aSize,
ScheduleComposition();
DeleteOldImages();
// XXX remove it when external image key is used.
if (!keysToDelete.empty()) {
mKeysToDelete.swap(keysToDelete);
}
if (ShouldParentObserveEpoch()) {
mCompositorBridge->ObserveLayerUpdate(wr::AsUint64(mPipelineId), GetChildLayerObserverEpoch(), true);
}

Просмотреть файл

@ -83,6 +83,7 @@ WebRenderCanvasLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
key.mNamespace = WrBridge()->GetNamespace();
key.mHandle = WrBridge()->GetNextResourceId();
WrBridge()->AddWebRenderParentCommand(OpAddExternalImage(mExternalImageId, key));
Manager()->AddImageKeyForDiscard(key);
aBuilder.PushStackingContext(wr::ToWrRect(relBounds),
1.0f,

Просмотреть файл

@ -211,6 +211,7 @@ WebRenderImageLayer::RenderMaskLayer(const gfx::Matrix4x4& aTransform)
key.mNamespace = WrBridge()->GetNamespace();
key.mHandle = WrBridge()->GetNextResourceId();
WrBridge()->AddWebRenderParentCommand(OpAddExternalImage(mExternalImageId, key));
Manager()->AddImageKeyForDiscard(key);
gfx::IntSize size = image->GetSize();
WrImageMask imageMask;

Просмотреть файл

@ -208,6 +208,7 @@ WebRenderPaintedLayer::RenderLayer(wr::DisplayListBuilder& aBuilder)
mixBlendMode);
aBuilder.PushImage(wr::ToWrRect(rect), clip, wr::ImageRendering::Auto, key);
aBuilder.PopStackingContext();
Manager()->AddImageKeyForDiscard(key);
}
} // namespace layers