Bug 1415469 - Remove mDeviceResetSequenceNumber from TDR process since we don't need it anymore; r?dvander
MozReview-Commit-ID: 3uQQwW8QOJA
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -3335,27 +3335,16 @@ TabChild::ReinitRenderingForDeviceReset(
return;
}
}
// Proceed with destroying and recreating the layer manager.
ReinitRendering();
}
-void
-TabChild::CompositorUpdated(const TextureFactoryIdentifier& aNewIdentifier,
- uint64_t aDeviceResetSeqNo)
-{
- RefPtr<LayerManager> lm = mPuppetWidget->GetLayerManager();
-
- mTextureFactoryIdentifier = aNewIdentifier;
- lm->UpdateTextureFactoryIdentifier(aNewIdentifier, aDeviceResetSeqNo);
- FrameLayerBuilder::InvalidateAllLayers(lm);
-}
-
NS_IMETHODIMP
TabChild::OnShowTooltip(int32_t aXCoords, int32_t aYCoords, const char16_t *aTipText,
const char16_t *aTipDir)
{
nsString str(aTipText);
nsString dir(aTipDir);
SendShowTooltip(aXCoords, aYCoords, str, dir);
return NS_OK;
--- a/dom/ipc/TabChild.h
+++ b/dom/ipc/TabChild.h
@@ -621,18 +621,16 @@ public:
void DidRequestComposite(const TimeStamp& aCompositeReqStart,
const TimeStamp& aCompositeReqEnd);
void ClearCachedResources();
void InvalidateLayers();
void ReinitRendering();
void ReinitRenderingForDeviceReset();
- void CompositorUpdated(const TextureFactoryIdentifier& aNewIdentifier,
- uint64_t aDeviceResetSeqNo);
static inline TabChild* GetFrom(nsIDOMWindow* aWindow)
{
nsCOMPtr<nsIWebNavigation> webNav = do_GetInterface(aWindow);
nsCOMPtr<nsIDocShell> docShell = do_QueryInterface(webNav);
return GetFrom(docShell);
}
--- a/gfx/layers/Layers.h
+++ b/gfx/layers/Layers.h
@@ -727,18 +727,17 @@ public:
virtual void DidComposite(uint64_t aTransactionId,
const mozilla::TimeStamp& aCompositeStart,
const mozilla::TimeStamp& aCompositeEnd) {}
virtual void AddDidCompositeObserver(DidCompositeObserver* aObserver) { MOZ_CRASH("GFX: LayerManager"); }
virtual void RemoveDidCompositeObserver(DidCompositeObserver* aObserver) { MOZ_CRASH("GFX: LayerManager"); }
- virtual void UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier,
- uint64_t aDeviceResetSeqNo) {}
+ virtual void UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier) {}
virtual TextureFactoryIdentifier GetTextureFactoryIdentifier()
{
return TextureFactoryIdentifier();
}
virtual void SetTransactionIdAllocator(TransactionIdAllocator* aAllocator) {}
--- a/gfx/layers/client/ClientLayerManager.cpp
+++ b/gfx/layers/client/ClientLayerManager.cpp
@@ -98,25 +98,20 @@ ClientLayerManager::ClientLayerManager(n
, mTargetRotation(ROTATION_0)
, mRepeatTransaction(false)
, mIsRepeatTransaction(false)
, mTransactionIncomplete(false)
, mCompositorMightResample(false)
, mNeedsComposite(false)
, mQueuedAsyncPaints(false)
, mPaintSequenceNumber(0)
- , mDeviceResetSequenceNumber(0)
, mForwarder(new ShadowLayerForwarder(this))
{
MOZ_COUNT_CTOR(ClientLayerManager);
mMemoryPressureObserver = new MemoryPressureObserver(this);
-
- if (XRE_IsContentProcess()) {
- mDeviceResetSequenceNumber = CompositorBridgeChild::Get()->DeviceResetSequenceNumber();
- }
}
ClientLayerManager::~ClientLayerManager()
{
mMemoryPressureObserver->Destroy();
ClearCachedResources();
// Stop receiveing AsyncParentMessage at Forwarder.
@@ -236,33 +231,16 @@ ClientLayerManager::BeginTransactionWith
}
MOZ_ASSERT(mForwarder, "ClientLayerManager::BeginTransaction without forwarder");
if (!mForwarder->IPCOpen()) {
gfxCriticalNote << "ClientLayerManager::BeginTransaction with IPC channel down. GPU process may have died.";
return false;
}
- if (XRE_IsContentProcess() &&
- mForwarder->DeviceCanReset() &&
- mDeviceResetSequenceNumber != CompositorBridgeChild::Get()->DeviceResetSequenceNumber())
- {
- // The compositor has informed this process that a device reset occurred,
- // but it has not finished informing each TabChild of its new
- // TextureFactoryIdentifier. Until then, it's illegal to paint. Note that
- // it is also illegal to request a new TIF synchronously, because we're
- // not guaranteed the UI process has finished acquiring new compositors
- // for each widget.
- //
- // Note that we only do this for accelerated backends, since we do not
- // perform resets on basic compositors.
- gfxCriticalNote << "Discarding a paint since a device reset has not yet been acknowledged.";
- return false;
- }
-
mInTransaction = true;
mTransactionStart = TimeStamp::Now();
#ifdef MOZ_LAYERS_HAVE_LOG
MOZ_LAYERS_LOG(("[----- BeginTransaction"));
Log();
#endif
@@ -680,24 +658,19 @@ void
ClientLayerManager::WaitOnTransactionProcessed()
{
CompositorBridgeChild* remoteRenderer = GetCompositorBridgeChild();
if (remoteRenderer) {
remoteRenderer->SendWaitOnTransactionProcessed();
}
}
void
-ClientLayerManager::UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier,
- uint64_t aDeviceResetSeqNo)
+ClientLayerManager::UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier)
{
- MOZ_ASSERT_IF(XRE_IsContentProcess(),
- aDeviceResetSeqNo == CompositorBridgeChild::Get()->DeviceResetSequenceNumber());
-
mForwarder->IdentifyTextureHost(aNewIdentifier);
- mDeviceResetSequenceNumber = aDeviceResetSeqNo;
}
void
ClientLayerManager::SendInvalidRegion(const nsIntRegion& aRegion)
{
if (mWidget) {
if (CompositorBridgeChild* remoteRenderer = mWidget->GetRemoteRenderer()) {
remoteRenderer->SendNotifyRegionInvalidated(aRegion);
--- a/gfx/layers/client/ClientLayerManager.h
+++ b/gfx/layers/client/ClientLayerManager.h
@@ -105,18 +105,17 @@ public:
virtual already_AddRefed<ImageLayer> CreateImageLayer() override;
virtual already_AddRefed<CanvasLayer> CreateCanvasLayer() override;
virtual already_AddRefed<ReadbackLayer> CreateReadbackLayer() override;
virtual already_AddRefed<ColorLayer> CreateColorLayer() override;
virtual already_AddRefed<TextLayer> CreateTextLayer() override;
virtual already_AddRefed<BorderLayer> CreateBorderLayer() override;
virtual already_AddRefed<RefLayer> CreateRefLayer() override;
- virtual void UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier,
- uint64_t aDeviceResetSeqNo) override;
+ virtual void UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier) override;
virtual TextureFactoryIdentifier GetTextureFactoryIdentifier() override
{
return AsShadowForwarder()->GetTextureFactoryIdentifier();
}
virtual void FlushRendering() override;
virtual void WaitOnTransactionProcessed() override;
virtual void SendInvalidRegion(const nsIntRegion& aRegion) override;
@@ -352,20 +351,16 @@ private:
bool mCompositorMightResample;
bool mNeedsComposite;
bool mQueuedAsyncPaints;
// An incrementing sequence number for paints.
// Incremented in BeginTransaction(), but not for repeat transactions.
uint32_t mPaintSequenceNumber;
- // A sequence number for checking whether we have not yet acknowledged
- // a device reset.
- uint64_t mDeviceResetSequenceNumber;
-
APZTestData mApzTestData;
RefPtr<ShadowLayerForwarder> mForwarder;
mozilla::TimeStamp mTransactionStart;
nsTArray<DidCompositeObserver*> mDidCompositeObservers;
RefPtr<MemoryPressureObserver> mMemoryPressureObserver;
--- a/gfx/layers/ipc/CompositorBridgeChild.cpp
+++ b/gfx/layers/ipc/CompositorBridgeChild.cpp
@@ -82,17 +82,16 @@ Atomic<int32_t> KnowsCompositor::sSerial
CompositorBridgeChild::CompositorBridgeChild(CompositorManagerChild *aManager)
: mCompositorManager(aManager)
, mIdNamespace(0)
, mResourceId(0)
, mCanSend(false)
, mActorDestroyed(false)
, mFwdTransactionId(0)
- , mDeviceResetSequenceNumber(0)
, mMessageLoop(MessageLoop::current())
, mProcessToken(0)
, mSectionAllocator(nullptr)
, mPaintLock("CompositorBridgeChild.mPaintLock")
, mOutstandingAsyncPaints(0)
, mOutstandingAsyncEndTransaction(false)
, mIsDelayingForAsyncPaints(false)
, mSlowFlushCount(0)
--- a/gfx/layers/ipc/CompositorBridgeChild.h
+++ b/gfx/layers/ipc/CompositorBridgeChild.h
@@ -209,20 +209,16 @@ public:
void WillEndTransaction();
PWebRenderBridgeChild* AllocPWebRenderBridgeChild(const wr::PipelineId& aPipelineId,
const LayoutDeviceIntSize&,
TextureFactoryIdentifier*,
wr::IdNamespace*) override;
bool DeallocPWebRenderBridgeChild(PWebRenderBridgeChild* aActor) override;
- uint64_t DeviceResetSequenceNumber() const {
- return mDeviceResetSequenceNumber;
- }
-
wr::MaybeExternalImageId GetNextExternalImageId() override;
wr::PipelineId GetNextPipelineId();
// Must only be called from the main thread. Ensures that any paints from
// previous frames have been flushed. The main thread blocks until the
// operation completes.
void FlushAsyncPaints();
@@ -345,21 +341,16 @@ private:
/**
* Transaction id of ShadowLayerForwarder.
* It is incrementaed by UpdateFwdTransactionId() in each BeginTransaction() call.
*/
uint64_t mFwdTransactionId;
/**
- * Last sequence number recognized for a device reset.
- */
- uint64_t mDeviceResetSequenceNumber;
-
- /**
* Hold TextureClients refs until end of their usages on host side.
* It defer calling of TextureClient recycle callback.
*/
nsRefPtrHashtable<nsUint64HashKey, TextureClient> mTexturesWaitingRecycled;
MessageLoop* mMessageLoop;
AutoTArray<RefPtr<TextureClientPool>,2> mTexturePools;
--- a/gfx/layers/wr/WebRenderLayerManager.cpp
+++ b/gfx/layers/wr/WebRenderLayerManager.cpp
@@ -543,18 +543,17 @@ WebRenderLayerManager::ClearCachedResour
void
WebRenderLayerManager::WrUpdated()
{
mWebRenderCommandBuilder.ClearCachedResources();
DiscardLocalImages();
}
void
-WebRenderLayerManager::UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier,
- uint64_t aDeviceResetSeqNo)
+WebRenderLayerManager::UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier)
{
WrBridge()->IdentifyTextureHost(aNewIdentifier);
}
TextureFactoryIdentifier
WebRenderLayerManager::GetTextureFactoryIdentifier()
{
return WrBridge()->GetTextureFactoryIdentifier();
--- a/gfx/layers/wr/WebRenderLayerManager.h
+++ b/gfx/layers/wr/WebRenderLayerManager.h
@@ -89,18 +89,17 @@ public:
virtual void SetLayerObserverEpoch(uint64_t aLayerObserverEpoch) override;
virtual void DidComposite(uint64_t aTransactionId,
const mozilla::TimeStamp& aCompositeStart,
const mozilla::TimeStamp& aCompositeEnd) override;
virtual void ClearCachedResources(Layer* aSubtree = nullptr) override;
- virtual void UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier,
- uint64_t aDeviceResetSeqNo) override;
+ virtual void UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier) override;
virtual TextureFactoryIdentifier GetTextureFactoryIdentifier() override;
virtual void SetTransactionIdAllocator(TransactionIdAllocator* aAllocator) override
{ mTransactionIdAllocator = aAllocator; }
virtual void AddDidCompositeObserver(DidCompositeObserver* aObserver) override;
virtual void RemoveDidCompositeObserver(DidCompositeObserver* aObserver) override;
--- a/widget/nsBaseWidget.cpp
+++ b/widget/nsBaseWidget.cpp
@@ -1383,17 +1383,17 @@ void nsBaseWidget::CreateCompositor(int
if (!success) {
NS_WARNING("Failed to create an OMT compositor.");
DestroyCompositor();
mLayerManager = nullptr;
return;
}
lf->SetShadowManager(shadowManager);
- lm->UpdateTextureFactoryIdentifier(textureFactoryIdentifier, 0);
+ lm->UpdateTextureFactoryIdentifier(textureFactoryIdentifier);
// Some popup or transparent widgets may use a different backend than the
// compositors used with ImageBridge and VR (and more generally web content).
if (WidgetTypeSupportsAcceleration()) {
ImageBridgeChild::IdentifyCompositorTextureHost(textureFactoryIdentifier);
gfx::VRManagerChild::IdentifyTextureHost(textureFactoryIdentifier);
}
}