зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
243c73c180
Коммит
93b3636151
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче