gfx/layers/wr/WebRenderLayerManager.cpp
author Matt Woodrow <mwoodrow@mozilla.com>
Sun, 05 Sep 2021 22:36:45 +0000 (2021-09-05)
changeset 591057 1b49e7328ae43c6565d167f4c391430575097fd3
parent 591044 96aa4b688465e7a822cf4012a2c1397cc3cd7e93
child 593678 4ad22daf744b49726e02bcf489591fd8edb96a25
permissions -rw-r--r--
Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel Differential Revision: https://phabricator.services.mozilla.com/D124433
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
389027
5f74d262924171a8fa0b4483a64f4cac34c4c9b8 Bug 1412427 part 8: (automated patch) Switch a bunch of C++ files in gfx to use our standard mode lines. r=jrmuizel
Daniel Holbert <dholbert@cs.stanford.edu>
parents: 388729
diff changeset
     1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
5f74d262924171a8fa0b4483a64f4cac34c4c9b8 Bug 1412427 part 8: (automated patch) Switch a bunch of C++ files in gfx to use our standard mode lines. r=jrmuizel
Daniel Holbert <dholbert@cs.stanford.edu>
parents: 388729
diff changeset
     2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
5f74d262924171a8fa0b4483a64f4cac34c4c9b8 Bug 1412427 part 8: (automated patch) Switch a bunch of C++ files in gfx to use our standard mode lines. r=jrmuizel
Daniel Holbert <dholbert@cs.stanford.edu>
parents: 388729
diff changeset
     3
/* This Source Code Form is subject to the terms of the Mozilla Public
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
     4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
     5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
     6
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
     7
#include "WebRenderLayerManager.h"
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
     8
558319
93fabad45659d172b723c9606215d3acaab54df1 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Simon Giesecke <sgiesecke@mozilla.com>
parents: 557770
diff changeset
     9
#include "Layers.h"
475624
5440467afab5639d3626dbaeadef000a2953e30e Bug 1550422 - P23. Remove now unused gfxPrefs. r=jrmuizel
Jean-Yves Avenard <jyavenard@mozilla.com>
parents: 475614
diff changeset
    10
363416
2629ca0641a72087efcc1d12498519450070dbc7 Bug 1371114 - Add gecko profiler labels for WebRender, r=kats
peter chang <pchang@mozilla.com>
parents: 362306
diff changeset
    11
#include "GeckoProfiler.h"
484792
4e4751677534ad208d37a0630bbcf39cf04de8e9 Bug 1563139 - Remove StaticPrefs.h. r=glandium
Nicholas Nethercote <nnethercote@mozilla.com>
parents: 484008
diff changeset
    12
#include "mozilla/StaticPrefs_apz.h"
4e4751677534ad208d37a0630bbcf39cf04de8e9 Bug 1563139 - Remove StaticPrefs.h. r=glandium
Nicholas Nethercote <nnethercote@mozilla.com>
parents: 484008
diff changeset
    13
#include "mozilla/StaticPrefs_layers.h"
470938
9813ce146bc725dd83e8ff6f41bfc36dd17d935b Bug 1534395 - Rename TabChild to BrowserChild. r=nika
Ryan Hunt <rhunt@eqrion.net>
parents: 470478
diff changeset
    14
#include "mozilla/dom/BrowserChild.h"
367270
c14a46dee9f0d7f9301f4bccaabb6f51844ffd7f Bug 1376855 - Support nsDisplayBullet in layers free mode. r=kats
Morris Tseng <mtseng@mozilla.com>
parents: 367266
diff changeset
    15
#include "mozilla/gfx/DrawEventRecorder.h"
544735
39f24a827034235435fe52a0e58702357fbad60a Bug 1657498 - report Software WebRender in about:support. r=emilio
Lee Salzman <lsalzman@mozilla.com>
parents: 544716
diff changeset
    16
#include "mozilla/gfx/gfxVars.h"
341901
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341897
diff changeset
    17
#include "mozilla/layers/CompositorBridgeChild.h"
357026
8e529a1e760efca512a14abd01f80849dc44a6f4 Bug 1360246 - Propagate a StackingContextHelper all the way through the RenderLayer traversal. r=nical
Kartikaya Gupta <kgupta@mozilla.com>
parents: 357017
diff changeset
    18
#include "mozilla/layers/StackingContextHelper.h"
341894
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
    19
#include "mozilla/layers/TextureClient.h"
558319
93fabad45659d172b723c9606215d3acaab54df1 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Simon Giesecke <sgiesecke@mozilla.com>
parents: 557770
diff changeset
    20
#include "mozilla/layers/TransactionIdAllocator.h"
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    21
#include "mozilla/layers/WebRenderBridgeChild.h"
368422
a62238e43aca2d5299f6c65dd082af3879529c18 Bug 1377571 - Add fallback path for layers-free. r=jrmuizel
Ethan Lin <ethlin@mozilla.com>
parents: 367270
diff changeset
    22
#include "mozilla/layers/UpdateImageHelper.h"
375621
ee2d234483263f55f7241181651293ae858a936a Bug 1388235 - Support fallback path for nsDisplayFilter. r=jrmuizel
Morris Tseng <mtseng@mozilla.com>
parents: 375620
diff changeset
    23
#include "nsDisplayList.h"
550982
adf38a6442cf89e88135dbf0b2d3b53c07a9d800 Bug 1667594 - Move nsLayoutUtils::RectCallback to namespace scope. r=emilio,jgilbert
Botond Ballo <botond@mozilla.com>
parents: 547986
diff changeset
    24
#include "nsLayoutUtils.h"
372596
b9317e74f705bdceb4f6cf075ea90a86af45402e Bug 1379920 - Introduce mLastCanvasDatas. r=kats
Morris Tseng <mtseng@mozilla.com>
parents: 372183
diff changeset
    25
#include "WebRenderCanvasRenderer.h"
591057
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
    26
#include "LayerUserData.h"
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    27
402864
5b5d0df3b6eed562b1489e4f910735b7a77b56f7 Bug 1436265 - update ClearType usage in WebRenderLayerManager. r=jrmuizel
Lee Salzman <lsalzman@mozilla.com>
parents: 400335
diff changeset
    28
#ifdef XP_WIN
454520
5f4630838d46dd81dadb13220a4af0da9e23a619 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
Ehsan Akhgari <ehsan@mozilla.com>
parents: 453327
diff changeset
    29
#  include "gfxDWriteFonts.h"
402864
5b5d0df3b6eed562b1489e4f910735b7a77b56f7 Bug 1436265 - update ClearType usage in WebRenderLayerManager. r=jrmuizel
Lee Salzman <lsalzman@mozilla.com>
parents: 400335
diff changeset
    30
#endif
5b5d0df3b6eed562b1489e4f910735b7a77b56f7 Bug 1436265 - update ClearType usage in WebRenderLayerManager. r=jrmuizel
Lee Salzman <lsalzman@mozilla.com>
parents: 400335
diff changeset
    31
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    32
namespace mozilla {
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    33
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    34
using namespace gfx;
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    35
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    36
namespace layers {
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    37
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    38
WebRenderLayerManager::WebRenderLayerManager(nsIWidget* aWidget)
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    39
    : mWidget(aWidget),
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    40
      mLatestTransactionId{0},
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    41
      mNeedsComposite(false),
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    42
      mIsFirstPaint(false),
591057
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
    43
      mDestroyed(false),
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    44
      mTarget(nullptr),
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    45
      mPaintSequenceNumber(0),
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
    46
      mWebRenderCommandBuilder(this) {
342003
f141ee9b993c83a623f2e4ceb162c271502f84cb Bug 1325678 - Have WebRenderContainerLayer release child layers on destruction to avoid leaking them. r=gfx?
Kartikaya Gupta <kgupta@mozilla.com>
parents: 342001
diff changeset
    47
  MOZ_COUNT_CTOR(WebRenderLayerManager);
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
    48
  mStateManager.mLayerManager = this;
520774
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
    49
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
    50
  if (XRE_IsContentProcess() &&
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
    51
      StaticPrefs::gfx_webrender_enable_item_cache_AtStartup()) {
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
    52
    static const size_t kInitialCacheSize = 1024;
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
    53
    static const size_t kMaximumCacheSize = 10240;
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
    54
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
    55
    mDisplayItemCache.SetCapacity(kInitialCacheSize, kMaximumCacheSize);
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
    56
  }
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    57
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    58
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    59
KnowsCompositor* WebRenderLayerManager::AsKnowsCompositor() { return mWrChild; }
342058
d9361bf7a173d95afd1f399ca5ab78ecec0f56fd Bug 1330480 - Move toWr* functions into WebRenderTypes.h r=gfx?
Ryan Hunt <rhunt@eqrion.net>
parents: 342042
diff changeset
    60
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    61
bool WebRenderLayerManager::Initialize(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    62
    PCompositorBridgeChild* aCBChild, wr::PipelineId aLayersId,
547789
fe5a386982266a8cd44984bac1dd4565fad0384a Bug 1662836 - Expose detailed initialization failure reason for WebRender. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 544735
diff changeset
    63
    TextureFactoryIdentifier* aTextureFactoryIdentifier, nsCString& aError) {
342122
8f272d554787e096ae515ba635c3705a6b9b6bcf Bug 1331515 - More WR to Wr prefix conversion. r=gfx?
Nicolas Silva <nsilva@mozilla.com>
parents: 342121
diff changeset
    64
  MOZ_ASSERT(mWrChild == nullptr);
341911
dc2b7e346fc28a9658ba01008710ff97cffe0e4b Bug 1321183 - Deliver TextureFactoryIdentifier r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341905
diff changeset
    65
  MOZ_ASSERT(aTextureFactoryIdentifier);
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
    66
547986
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
    67
  // When we fail to initialize WebRender, it is useful to know if it has ever
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
    68
  // succeeded, or if this is the first attempt.
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
    69
  static bool hasInitialized = false;
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
    70
561253
207b0761ade5421696ed4865d41552add6edaaa3 Bug 1624264 - Use different texture cache sizes for popup windows. r=jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 560682
diff changeset
    71
  WindowKind windowKind;
562454
e066d5e8974d4ff68af1d0db9d3cde365ccd3f61 Bug 1685564 - Check for popup widgets instead of toplevel widgets. r=nical
Markus Stange <mstange.moz@gmail.com>
parents: 561253
diff changeset
    72
  if (mWidget->WindowType() != eWindowType_popup) {
561253
207b0761ade5421696ed4865d41552add6edaaa3 Bug 1624264 - Use different texture cache sizes for popup windows. r=jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 560682
diff changeset
    73
    windowKind = WindowKind::MAIN;
207b0761ade5421696ed4865d41552add6edaaa3 Bug 1624264 - Use different texture cache sizes for popup windows. r=jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 560682
diff changeset
    74
  } else {
207b0761ade5421696ed4865d41552add6edaaa3 Bug 1624264 - Use different texture cache sizes for popup windows. r=jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 560682
diff changeset
    75
    windowKind = WindowKind::SECONDARY;
207b0761ade5421696ed4865d41552add6edaaa3 Bug 1624264 - Use different texture cache sizes for popup windows. r=jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 560682
diff changeset
    76
  }
207b0761ade5421696ed4865d41552add6edaaa3 Bug 1624264 - Use different texture cache sizes for popup windows. r=jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 560682
diff changeset
    77
347274
4044ae77bb4df9d3aaedadaf19649e88bd6e548a Bug 1343019 - Update webrender to cset 178a65d098afcda7de0298d80d423bc80c6426ba. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 345780
diff changeset
    78
  LayoutDeviceIntSize size = mWidget->GetClientSize();
589964
b41457a3dc25e9e97d309d36234942407aa7609b Bug 1727459 - Add more logs around widget size in WebRenderLayerManager::Initialize() r=gfx-reviewers,jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 589858
diff changeset
    79
  // Check widget size
b41457a3dc25e9e97d309d36234942407aa7609b Bug 1727459 - Add more logs around widget size in WebRenderLayerManager::Initialize() r=gfx-reviewers,jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 589858
diff changeset
    80
  if (XRE_IsParentProcess() &&
b41457a3dc25e9e97d309d36234942407aa7609b Bug 1727459 - Add more logs around widget size in WebRenderLayerManager::Initialize() r=gfx-reviewers,jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 589858
diff changeset
    81
      (size.width < 0 || size.width > wr::MAX_RENDER_TASK_SIZE ||
b41457a3dc25e9e97d309d36234942407aa7609b Bug 1727459 - Add more logs around widget size in WebRenderLayerManager::Initialize() r=gfx-reviewers,jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 589858
diff changeset
    82
       size.height < 0 || size.height > wr::MAX_RENDER_TASK_SIZE)) {
b41457a3dc25e9e97d309d36234942407aa7609b Bug 1727459 - Add more logs around widget size in WebRenderLayerManager::Initialize() r=gfx-reviewers,jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 589858
diff changeset
    83
    gfxCriticalNote << "Widget size is not valid " << size;
b41457a3dc25e9e97d309d36234942407aa7609b Bug 1727459 - Add more logs around widget size in WebRenderLayerManager::Initialize() r=gfx-reviewers,jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 589858
diff changeset
    84
  }
b41457a3dc25e9e97d309d36234942407aa7609b Bug 1727459 - Add more logs around widget size in WebRenderLayerManager::Initialize() r=gfx-reviewers,jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 589858
diff changeset
    85
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
    86
  PWebRenderBridgeChild* bridge =
561253
207b0761ade5421696ed4865d41552add6edaaa3 Bug 1624264 - Use different texture cache sizes for popup windows. r=jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 560682
diff changeset
    87
      aCBChild->SendPWebRenderBridgeConstructor(aLayersId, size, windowKind);
369574
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
    88
  if (!bridge) {
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
    89
    // This should only fail if we attempt to access a layer we don't have
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
    90
    // permission for, or more likely, the GPU process crashed again during
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
    91
    // reinitialization. We can expect to be notified again to reinitialize
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
    92
    // (which may or may not be using WebRender).
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
    93
    gfxCriticalNote << "Failed to create WebRenderBridgeChild.";
547986
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
    94
    aError.Assign(hasInitialized
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
    95
                      ? "FEATURE_FAILURE_WEBRENDER_INITIALIZE_IPDL_POST"_ns
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
    96
                      : "FEATURE_FAILURE_WEBRENDER_INITIALIZE_IPDL_FIRST"_ns);
369574
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
    97
    return false;
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
    98
  }
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
    99
439776
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   100
  TextureFactoryIdentifier textureFactoryIdentifier;
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   101
  wr::MaybeIdNamespace idNamespace;
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   102
  // Sync ipc
547986
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   103
  if (!bridge->SendEnsureConnected(&textureFactoryIdentifier, &idNamespace,
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   104
                                   &aError)) {
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   105
    gfxCriticalNote << "Failed as lost WebRenderBridgeChild.";
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   106
    aError.Assign(hasInitialized
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   107
                      ? "FEATURE_FAILURE_WEBRENDER_INITIALIZE_SYNC_POST"_ns
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   108
                      : "FEATURE_FAILURE_WEBRENDER_INITIALIZE_SYNC_FIRST"_ns);
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   109
    return false;
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   110
  }
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   111
439776
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   112
  if (textureFactoryIdentifier.mParentBackend == LayersBackend::LAYERS_NONE ||
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   113
      idNamespace.isNothing()) {
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   114
    gfxCriticalNote << "Failed to connect WebRenderBridgeChild.";
547986
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   115
    aError.Append(hasInitialized ? "_POST"_ns : "_FIRST"_ns);
439776
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   116
    return false;
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   117
  }
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   118
342122
8f272d554787e096ae515ba635c3705a6b9b6bcf Bug 1331515 - More WR to Wr prefix conversion. r=gfx?
Nicolas Silva <nsilva@mozilla.com>
parents: 342121
diff changeset
   119
  mWrChild = static_cast<WebRenderBridgeChild*>(bridge);
387093
fef60dc3adecc4378456e6e73bb60eca28de9921 Bug 1404232 - Add WebRenderLayerManager::WrUpdated() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 387089
diff changeset
   120
  WrBridge()->SetWebRenderLayerManager(this);
342122
8f272d554787e096ae515ba635c3705a6b9b6bcf Bug 1331515 - More WR to Wr prefix conversion. r=gfx?
Nicolas Silva <nsilva@mozilla.com>
parents: 342121
diff changeset
   121
  WrBridge()->IdentifyTextureHost(textureFactoryIdentifier);
439776
0052f643487612ccd8993a8687b1a3b1cbede32d Bug 1496003 - Add sync ipc WebRenderBridgeChild::SendEnsureConnected() r=mattwoodrow,froydnj
sotaro <sotaro.ikeda.g@gmail.com>
parents: 439609
diff changeset
   122
  WrBridge()->SetNamespace(idNamespace.ref());
341911
dc2b7e346fc28a9658ba01008710ff97cffe0e4b Bug 1321183 - Deliver TextureFactoryIdentifier r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341905
diff changeset
   123
  *aTextureFactoryIdentifier = textureFactoryIdentifier;
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   124
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   125
  mDLBuilder = MakeUnique<wr::DisplayListBuilder>(
590873
a480a8364911e38883ecab2e38e4432cb456dcf7 Bug 1728774 - Fix display item cache with retained DL builder. r=miko,gfx-reviewers
Glenn Watson <git@intuitionlibrary.com>
parents: 590475
diff changeset
   126
      WrBridge()->GetPipeline(), WrBridge()->GetWebRenderBackend());
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   127
547986
598cb04b94e491454d99a497037572a7106b2bd3 Bug 1663923 - Cover more WebRender initialization failure paths with explicit reasons. r=kvark
Andrew Osmond <aosmond@mozilla.com>
parents: 547789
diff changeset
   128
  hasInitialized = true;
369574
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
   129
  return true;
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   130
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   131
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   132
void WebRenderLayerManager::Destroy() { DoDestroy(/* aIsSync */ false); }
366862
c00b134804208c2652ebd4f45a1d37277c54e60b Bug 1377024 - Add support of device reset test from about:support r=kats,dvander
sotaro <sotaro.ikeda.g@gmail.com>
parents: 366286
diff changeset
   133
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   134
void WebRenderLayerManager::DoDestroy(bool aIsSync) {
392157
4a74a02c20ba4649bfdb5bdd49f5907c6f22b2d5 Bug 1411472 - Add support of PersistentBufferProviderShared r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 391829
diff changeset
   135
  MOZ_ASSERT(NS_IsMainThread());
4a74a02c20ba4649bfdb5bdd49f5907c6f22b2d5 Bug 1411472 - Add support of PersistentBufferProviderShared r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 391829
diff changeset
   136
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   137
  if (IsDestroyed()) {
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   138
    return;
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   139
  }
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   140
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   141
  mDLBuilder = nullptr;
591057
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   142
  mUserData.Destroy();
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   143
  mPartialPrerenderedAnimations.Clear();
369574
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
   144
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   145
  mStateManager.Destroy();
452761
ee870d4a43083769491e0964ae180304542fc10f Bug 1441308 - Split out document pieces of WebRenderLayerManager r=jrmuizel
Doug Thayer <dothayer@mozilla.com>
parents: 452465
diff changeset
   146
369574
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
   147
  if (WrBridge()) {
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
   148
    WrBridge()->Destroy(aIsSync);
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
   149
  }
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   150
384447
dbd85646f4440446b95517a01e53f34db5a3a09f Bug 1391816 - Follow-up to rename WebRenderCommandsBuilder to WebRenderCommandBuilder. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 384371
diff changeset
   151
  mWebRenderCommandBuilder.Destroy();
375620
7cbc5c672ea43e4868801a7e999241dd65b40088 Bug 1391135 - Only retain WebRenderUserData when layer manager and namespaceID is match. r=kats
Morris Tseng <mtseng@mozilla.com>
parents: 375616
diff changeset
   152
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   153
  if (mTransactionIdAllocator) {
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   154
    // Make sure to notify the refresh driver just in case it's waiting on a
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   155
    // pending transaction. Do this at the top of the event loop so we don't
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   156
    // cause a paint to occur during compositor shutdown.
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   157
    RefPtr<TransactionIdAllocator> allocator = mTransactionIdAllocator;
414973
1224b46e13922d7fd3cec29a441560439d0166cb Bug 1455691 - Make the transaction id a struct instead of a uint64_t. r=mattwoodrow
Kartikaya Gupta <kgupta@mozilla.com>
parents: 412606
diff changeset
   158
    TransactionId id = mLatestTransactionId;
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   159
355167
68b48ae09aedd2a291867c270b23f6aeac75fcdc Bug 1346143 - Forget the widget pointer in WebRenderLayerManager::Destroy() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 355164
diff changeset
   160
    RefPtr<Runnable> task = NS_NewRunnableFunction(
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   161
        "TransactionIdAllocator::NotifyTransactionCompleted",
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   162
        [allocator, id]() -> void {
590383
5f5504699d3cf63ef7972757dbdb0106224cd1af Bug 1727703 - Clear pending transactions in WebRenderLayerManager::DoDestroy() r=mattwoodrow,gfx-reviewers
sotaro <sotaro.ikeda.g@gmail.com>
parents: 590268
diff changeset
   163
          allocator->ClearPendingTransactions();
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   164
          allocator->NotifyTransactionCompleted(id);
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   165
        });
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   166
    NS_DispatchToMainThread(task.forget());
341884
33f60336b599a89e0f809abbb3765dc736d392de Bug 1319521 - Send PWebRenderBridge::Destroy earlier. r=gfx?
Kartikaya Gupta <kgupta@mozilla.com>
parents: 341869
diff changeset
   167
  }
355167
68b48ae09aedd2a291867c270b23f6aeac75fcdc Bug 1346143 - Forget the widget pointer in WebRenderLayerManager::Destroy() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 355164
diff changeset
   168
68b48ae09aedd2a291867c270b23f6aeac75fcdc Bug 1346143 - Forget the widget pointer in WebRenderLayerManager::Destroy() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 355164
diff changeset
   169
  // Forget the widget pointer in case we outlive our owning widget.
68b48ae09aedd2a291867c270b23f6aeac75fcdc Bug 1346143 - Forget the widget pointer in WebRenderLayerManager::Destroy() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 355164
diff changeset
   170
  mWidget = nullptr;
591057
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   171
  mDestroyed = true;
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   172
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   173
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   174
WebRenderLayerManager::~WebRenderLayerManager() {
341884
33f60336b599a89e0f809abbb3765dc736d392de Bug 1319521 - Send PWebRenderBridge::Destroy earlier. r=gfx?
Kartikaya Gupta <kgupta@mozilla.com>
parents: 341869
diff changeset
   175
  Destroy();
342003
f141ee9b993c83a623f2e4ceb162c271502f84cb Bug 1325678 - Have WebRenderContainerLayer release child layers on destruction to avoid leaking them. r=gfx?
Kartikaya Gupta <kgupta@mozilla.com>
parents: 342001
diff changeset
   176
  MOZ_COUNT_DTOR(WebRenderLayerManager);
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   177
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   178
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   179
CompositorBridgeChild* WebRenderLayerManager::GetCompositorBridgeChild() {
359325
33adaa3e80315b3883250b30b9a71a656ab36bc2 Bug 1364626. Ensure our transaction arrives at the compositor before asking the parent to paint. r=dvander
Jeff Muizelaar <jmuizelaar@mozilla.com>
parents: 359324
diff changeset
   180
  return WrBridge()->GetCompositorBridgeChild();
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   181
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   182
544735
39f24a827034235435fe52a0e58702357fbad60a Bug 1657498 - report Software WebRender in about:support. r=emilio
Lee Salzman <lsalzman@mozilla.com>
parents: 544716
diff changeset
   183
void WebRenderLayerManager::GetBackendName(nsAString& name) {
560682
9c2b18e58353b67dcb3020155acd49a3f99ecaa7 Bug 1681660 - Show SWGL with CompositorD3D11 state in about:support r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 559908
diff changeset
   184
  if (WrBridge()->UsingSoftwareWebRenderD3D11()) {
9c2b18e58353b67dcb3020155acd49a3f99ecaa7 Bug 1681660 - Show SWGL with CompositorD3D11 state in about:support r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 559908
diff changeset
   185
    name.AssignLiteral("WebRender (Software D3D11)");
569076
c2a11810933e52b8b527bb277e11f877aec6379a Bug 1673342 - Add Support of software WebRender with CompositorOGL on Android and Linux r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 568767
diff changeset
   186
  } else if (WrBridge()->UsingSoftwareWebRenderOpenGL()) {
c2a11810933e52b8b527bb277e11f877aec6379a Bug 1673342 - Add Support of software WebRender with CompositorOGL on Android and Linux r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 568767
diff changeset
   187
    name.AssignLiteral("WebRender (Software OpenGL)");
560682
9c2b18e58353b67dcb3020155acd49a3f99ecaa7 Bug 1681660 - Show SWGL with CompositorD3D11 state in about:support r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 559908
diff changeset
   188
  } else if (WrBridge()->UsingSoftwareWebRender()) {
544735
39f24a827034235435fe52a0e58702357fbad60a Bug 1657498 - report Software WebRender in about:support. r=emilio
Lee Salzman <lsalzman@mozilla.com>
parents: 544716
diff changeset
   189
    name.AssignLiteral("WebRender (Software)");
39f24a827034235435fe52a0e58702357fbad60a Bug 1657498 - report Software WebRender in about:support. r=emilio
Lee Salzman <lsalzman@mozilla.com>
parents: 544716
diff changeset
   190
  } else {
39f24a827034235435fe52a0e58702357fbad60a Bug 1657498 - report Software WebRender in about:support. r=emilio
Lee Salzman <lsalzman@mozilla.com>
parents: 544716
diff changeset
   191
    name.AssignLiteral("WebRender");
39f24a827034235435fe52a0e58702357fbad60a Bug 1657498 - report Software WebRender in about:support. r=emilio
Lee Salzman <lsalzman@mozilla.com>
parents: 544716
diff changeset
   192
  }
39f24a827034235435fe52a0e58702357fbad60a Bug 1657498 - report Software WebRender in about:support. r=emilio
Lee Salzman <lsalzman@mozilla.com>
parents: 544716
diff changeset
   193
}
39f24a827034235435fe52a0e58702357fbad60a Bug 1657498 - report Software WebRender in about:support. r=emilio
Lee Salzman <lsalzman@mozilla.com>
parents: 544716
diff changeset
   194
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   195
uint32_t WebRenderLayerManager::StartFrameTimeRecording(int32_t aBufferSize) {
435325
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   196
  CompositorBridgeChild* renderer = GetCompositorBridgeChild();
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   197
  if (renderer) {
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   198
    uint32_t startIndex;
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   199
    renderer->SendStartFrameTimeRecording(aBufferSize, &startIndex);
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   200
    return startIndex;
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   201
  }
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   202
  return -1;
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   203
}
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   204
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   205
void WebRenderLayerManager::StopFrameTimeRecording(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   206
    uint32_t aStartIndex, nsTArray<float>& aFrameIntervals) {
435325
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   207
  CompositorBridgeChild* renderer = GetCompositorBridgeChild();
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   208
  if (renderer) {
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   209
    renderer->SendStopFrameTimeRecording(aStartIndex, &aFrameIntervals);
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   210
  }
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   211
}
6d3db9b4da3259cdf2c2f2f0fd49218efcd878ea Bug 1488980 - Implement StartFrameTimeRecording for WebRender. r=mstange
Matt Woodrow <mwoodrow@mozilla.com>
parents: 429191
diff changeset
   212
475949
c6cf628d60453bafcaf4e19675f00c4127b2b3e9 Bug 1553261 - Register CompositionPayloads with the WebRenderBridge and enable key press telemetry r=kats
Barret Rennie <barret@brennie.ca>
parents: 475624
diff changeset
   213
void WebRenderLayerManager::TakeCompositionPayloads(
c6cf628d60453bafcaf4e19675f00c4127b2b3e9 Bug 1553261 - Register CompositionPayloads with the WebRenderBridge and enable key press telemetry r=kats
Barret Rennie <barret@brennie.ca>
parents: 475624
diff changeset
   214
    nsTArray<CompositionPayload>& aPayloads) {
c6cf628d60453bafcaf4e19675f00c4127b2b3e9 Bug 1553261 - Register CompositionPayloads with the WebRenderBridge and enable key press telemetry r=kats
Barret Rennie <barret@brennie.ca>
parents: 475624
diff changeset
   215
  aPayloads.Clear();
c6cf628d60453bafcaf4e19675f00c4127b2b3e9 Bug 1553261 - Register CompositionPayloads with the WebRenderBridge and enable key press telemetry r=kats
Barret Rennie <barret@brennie.ca>
parents: 475624
diff changeset
   216
c6cf628d60453bafcaf4e19675f00c4127b2b3e9 Bug 1553261 - Register CompositionPayloads with the WebRenderBridge and enable key press telemetry r=kats
Barret Rennie <barret@brennie.ca>
parents: 475624
diff changeset
   217
  std::swap(mPayload, aPayloads);
c6cf628d60453bafcaf4e19675f00c4127b2b3e9 Bug 1553261 - Register CompositionPayloads with the WebRenderBridge and enable key press telemetry r=kats
Barret Rennie <barret@brennie.ca>
parents: 475624
diff changeset
   218
}
c6cf628d60453bafcaf4e19675f00c4127b2b3e9 Bug 1553261 - Register CompositionPayloads with the WebRenderBridge and enable key press telemetry r=kats
Barret Rennie <barret@brennie.ca>
parents: 475624
diff changeset
   219
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   220
bool WebRenderLayerManager::BeginTransactionWithTarget(gfxContext* aTarget,
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   221
                                                       const nsCString& aURL) {
341868
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   222
  mTarget = aTarget;
447334
25d79223c2dedd0b06abd48dbfc815c750b6473c Bug 1507686 - Record LayerManager URL for each paint so that we can correlate it with slow paints. r=mattwoodrow
Jeff Muizelaar <jmuizelaar@mozilla.com>
parents: 444115
diff changeset
   223
  return BeginTransaction(aURL);
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   224
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   225
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   226
bool WebRenderLayerManager::BeginTransaction(const nsCString& aURL) {
378255
378e69fe5a92828602eec310b0206c6873ced5e6 Bug 1391458 - Make sure WrBridge is ready in the head of BeginTransaction. r=kats
vincentliu <vliu@mozilla.com>
parents: 377614
diff changeset
   227
  if (!WrBridge()->IPCOpen()) {
378e69fe5a92828602eec310b0206c6873ced5e6 Bug 1391458 - Make sure WrBridge is ready in the head of BeginTransaction. r=kats
vincentliu <vliu@mozilla.com>
parents: 377614
diff changeset
   228
    gfxCriticalNote << "IPC Channel is already torn down unexpectedly\n";
378e69fe5a92828602eec310b0206c6873ced5e6 Bug 1391458 - Make sure WrBridge is ready in the head of BeginTransaction. r=kats
vincentliu <vliu@mozilla.com>
parents: 377614
diff changeset
   229
    return false;
378e69fe5a92828602eec310b0206c6873ced5e6 Bug 1391458 - Make sure WrBridge is ready in the head of BeginTransaction. r=kats
vincentliu <vliu@mozilla.com>
parents: 377614
diff changeset
   230
  }
378e69fe5a92828602eec310b0206c6873ced5e6 Bug 1391458 - Make sure WrBridge is ready in the head of BeginTransaction. r=kats
vincentliu <vliu@mozilla.com>
parents: 377614
diff changeset
   231
425069
c572bc658fec6ec6904eff12350962af3346ba8c Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
Ryan Hunt <rhunt@eqrion.net>
parents: 424926
diff changeset
   232
  mTransactionStart = TimeStamp::Now();
447334
25d79223c2dedd0b06abd48dbfc815c750b6473c Bug 1507686 - Record LayerManager URL for each paint so that we can correlate it with slow paints. r=mattwoodrow
Jeff Muizelaar <jmuizelaar@mozilla.com>
parents: 444115
diff changeset
   233
  mURL = aURL;
425069
c572bc658fec6ec6904eff12350962af3346ba8c Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
Ryan Hunt <rhunt@eqrion.net>
parents: 424926
diff changeset
   234
362306
35a1edcf472648b9fab32a6766527fe198d4a4b6 Bug 1369840 - Support content-side APZ test data in WebRenderLayerManager. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 362139
diff changeset
   235
  // Increment the paint sequence number even if test logging isn't
35a1edcf472648b9fab32a6766527fe198d4a4b6 Bug 1369840 - Support content-side APZ test data in WebRenderLayerManager. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 362139
diff changeset
   236
  // enabled in this process; it may be enabled in the parent process,
35a1edcf472648b9fab32a6766527fe198d4a4b6 Bug 1369840 - Support content-side APZ test data in WebRenderLayerManager. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 362139
diff changeset
   237
  // and the parent process expects unique sequence numbers.
35a1edcf472648b9fab32a6766527fe198d4a4b6 Bug 1369840 - Support content-side APZ test data in WebRenderLayerManager. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 362139
diff changeset
   238
  ++mPaintSequenceNumber;
476237
af355d7ab17e8253a62afd19b65e503133993376 Bug 1553018 part 2. Make various gfx preferences bindings use in Pref annotations on interfaces follow the StaticPrefs naming convention for getters. r=jrmuizel
Boris Zbarsky <bzbarsky@mit.edu>
parents: 475949
diff changeset
   239
  if (StaticPrefs::apz_test_logging_enabled()) {
362306
35a1edcf472648b9fab32a6766527fe198d4a4b6 Bug 1369840 - Support content-side APZ test data in WebRenderLayerManager. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 362139
diff changeset
   240
    mApzTestData.StartNewPaint(mPaintSequenceNumber);
35a1edcf472648b9fab32a6766527fe198d4a4b6 Bug 1369840 - Support content-side APZ test data in WebRenderLayerManager. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 362139
diff changeset
   241
  }
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   242
  return true;
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   243
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   244
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   245
bool WebRenderLayerManager::EndEmptyTransaction(EndTransactionFlags aFlags) {
513474
1012d4dab45befe127342e456bb712180c15830c Bug 1613143. Don't allow an empty transaction to succeed with webrender if we haven't sent a display list to the parent. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 513463
diff changeset
   246
  // If we haven't sent a display list (since creation or since the last time we
1012d4dab45befe127342e456bb712180c15830c Bug 1613143. Don't allow an empty transaction to succeed with webrender if we haven't sent a display list to the parent. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 513463
diff changeset
   247
  // sent ClearDisplayList to the parent) then we can't do an empty transaction
1012d4dab45befe127342e456bb712180c15830c Bug 1613143. Don't allow an empty transaction to succeed with webrender if we haven't sent a display list to the parent. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 513463
diff changeset
   248
  // because the parent doesn't have a display list for us and we need to send a
1012d4dab45befe127342e456bb712180c15830c Bug 1613143. Don't allow an empty transaction to succeed with webrender if we haven't sent a display list to the parent. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 513463
diff changeset
   249
  // display list first.
1012d4dab45befe127342e456bb712180c15830c Bug 1613143. Don't allow an empty transaction to succeed with webrender if we haven't sent a display list to the parent. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 513463
diff changeset
   250
  if (!WrBridge()->GetSentDisplayList()) {
1012d4dab45befe127342e456bb712180c15830c Bug 1613143. Don't allow an empty transaction to succeed with webrender if we haven't sent a display list to the parent. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 513463
diff changeset
   251
    return false;
1012d4dab45befe127342e456bb712180c15830c Bug 1613143. Don't allow an empty transaction to succeed with webrender if we haven't sent a display list to the parent. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 513463
diff changeset
   252
  }
1012d4dab45befe127342e456bb712180c15830c Bug 1613143. Don't allow an empty transaction to succeed with webrender if we haven't sent a display list to the parent. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 513463
diff changeset
   253
520774
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
   254
  mDisplayItemCache.SkipWaitingForPartialDisplayList();
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
   255
412606
bb1d1bcb3e0683a4b05b2270717d8432e490cc66 Bug 1452791 - Update WebRenderLayerManager mAnimationReadyTime in empty transactions r=kats
Miko Mynttinen <mikokm@gmail.com>
parents: 410476
diff changeset
   256
  // Since we don't do repeat transactions right now, just set the time
bb1d1bcb3e0683a4b05b2270717d8432e490cc66 Bug 1452791 - Update WebRenderLayerManager mAnimationReadyTime in empty transactions r=kats
Miko Mynttinen <mikokm@gmail.com>
parents: 410476
diff changeset
   257
  mAnimationReadyTime = TimeStamp::Now();
bb1d1bcb3e0683a4b05b2270717d8432e490cc66 Bug 1452791 - Update WebRenderLayerManager mAnimationReadyTime in empty transactions r=kats
Miko Mynttinen <mikokm@gmail.com>
parents: 410476
diff changeset
   258
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   259
  mLatestTransactionId =
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   260
      mTransactionIdAllocator->GetTransactionId(/*aThrottle*/ true);
439609
1b41309fe5d6f6de409350146c6a3add0b65a950 Bug 1496324 - Revoke TransactionId when transaction is not forwarded r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 438931
diff changeset
   261
1b41309fe5d6f6de409350146c6a3add0b65a950 Bug 1496324 - Revoke TransactionId when transaction is not forwarded r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 438931
diff changeset
   262
  if (aFlags & EndTransactionFlags::END_NO_COMPOSITE &&
465755
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   263
      !mWebRenderCommandBuilder.NeedsEmptyTransaction()) {
522546
5396cc20b4ad5e8f9627306d28d8aa63a1eb9221 Bug 1622360 - Downgrade mPendingScrollUpdates from RenderRootArray. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 521577
diff changeset
   264
    if (mPendingScrollUpdates.IsEmpty()) {
465755
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   265
      MOZ_ASSERT(!mTarget);
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   266
      WrBridge()->SendSetFocusTarget(mFocusTarget);
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   267
      // Revoke TransactionId to trigger next paint.
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   268
      mTransactionIdAllocator->RevokeTransactionId(mLatestTransactionId);
467648
10a446ed2a38d6af1eaa8b6d51ad9f1333b247d8 Bug 1540908. If the layer manager revokes a transaction id then revert the last stored transaction id too. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 466606
diff changeset
   269
      mLatestTransactionId = mLatestTransactionId.Prev();
465755
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   270
      return true;
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   271
    }
385834
077b6ec36d84589557e581742abf7557974a8463 Bug 1405481 - Suppress to composite when END_NO_COMPOSITE is set r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385833
diff changeset
   272
  }
077b6ec36d84589557e581742abf7557974a8463 Bug 1405481 - Suppress to composite when END_NO_COMPOSITE is set r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385833
diff changeset
   273
077b6ec36d84589557e581742abf7557974a8463 Bug 1405481 - Suppress to composite when END_NO_COMPOSITE is set r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385833
diff changeset
   274
  LayoutDeviceIntSize size = mWidget->GetClientSize();
077b6ec36d84589557e581742abf7557974a8463 Bug 1405481 - Suppress to composite when END_NO_COMPOSITE is set r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385833
diff changeset
   275
  WrBridge()->BeginTransaction();
077b6ec36d84589557e581742abf7557974a8463 Bug 1405481 - Suppress to composite when END_NO_COMPOSITE is set r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385833
diff changeset
   276
385833
86c487f84974c727365d6cc266d7a8949ba253bb Bug 1405481 - Push canvas updates to the compositor on empty transactions r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385069
diff changeset
   277
  mWebRenderCommandBuilder.EmptyTransaction();
86c487f84974c727365d6cc266d7a8949ba253bb Bug 1405481 - Push canvas updates to the compositor on empty transactions r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385069
diff changeset
   278
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   279
  // Get the time of when the refresh driver start its tick (if available),
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   280
  // otherwise use the time of when LayerManager::BeginTransaction was called.
425069
c572bc658fec6ec6904eff12350962af3346ba8c Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
Ryan Hunt <rhunt@eqrion.net>
parents: 424926
diff changeset
   281
  TimeStamp refreshStart = mTransactionIdAllocator->GetTransactionStart();
447335
52a798ad6583b97fb3faf68f1849e7098d9ce4ae Bug 1507680 - Record detailed statistics about slow WebRender frames in about:support. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 447334
diff changeset
   282
  if (!refreshStart) {
52a798ad6583b97fb3faf68f1849e7098d9ce4ae Bug 1507680 - Record detailed statistics about slow WebRender frames in about:support. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 447334
diff changeset
   283
    refreshStart = mTransactionStart;
52a798ad6583b97fb3faf68f1849e7098d9ce4ae Bug 1507680 - Record detailed statistics about slow WebRender frames in about:support. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 447334
diff changeset
   284
  }
384288
87c152551a93293250b80e9f3840874ea2a15b7f Bug 1403915 - Collapse EndTransactionInternal into EndTransactionWithoutLayers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 384287
diff changeset
   285
512561
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   286
  // Skip the synchronization for buffer since we also skip the painting during
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   287
  // device-reset status.
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   288
  if (!gfxPlatform::GetPlatform()->DidRenderingDeviceReset()) {
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   289
    if (WrBridge()->GetSyncObject() &&
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   290
        WrBridge()->GetSyncObject()->IsSyncObjectValid()) {
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   291
      WrBridge()->GetSyncObject()->Synchronize();
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   292
    }
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   293
  }
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   294
477808
4357d695b8d5dd901788d922b73e89f16c45b2c9 Bug 1464032 Part 12: Add CanvasParent, CanvasChild and RecordedTextureData. r=mattwoodrow, jld
Bob Owen <bobowencode@gmail.com>
parents: 477802
diff changeset
   295
  GetCompositorBridgeChild()->EndCanvasTransaction();
4357d695b8d5dd901788d922b73e89f16c45b2c9 Bug 1464032 Part 12: Add CanvasParent, CanvasChild and RecordedTextureData. r=mattwoodrow, jld
Bob Owen <bobowencode@gmail.com>
parents: 477802
diff changeset
   296
530257
fc6c313294232c5a8ba700d941c1e654d0b33c28 Bug 1622360 - Singularize the TransactionData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530256
diff changeset
   297
  Maybe<TransactionData> transactionData;
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   298
  if (mStateManager.mAsyncResourceUpdates || !mPendingScrollUpdates.IsEmpty() ||
529367
464f335b72832843ff82b392ec8f4131ec858f6d Bug 1622360 - Stop feeding render root into WebRenderBridgeChild::*ParentCommand*. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529362
diff changeset
   299
      WrBridge()->HasWebRenderParentCommands()) {
530257
fc6c313294232c5a8ba700d941c1e654d0b33c28 Bug 1622360 - Singularize the TransactionData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530256
diff changeset
   300
    transactionData.emplace();
566287
f0e9e8ac401cb01ae412bf6fd098562892136456 Bug 1691065 - Discard invalid resource update transactions due to namespace changes. r=jrmuizel
Andrew Osmond <aosmond@mozilla.com>
parents: 566225
diff changeset
   301
    transactionData->mIdNamespace = WrBridge()->GetNamespace();
530257
fc6c313294232c5a8ba700d941c1e654d0b33c28 Bug 1622360 - Singularize the TransactionData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530256
diff changeset
   302
    transactionData->mPaintSequenceNumber = mPaintSequenceNumber;
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   303
    if (mStateManager.mAsyncResourceUpdates) {
530255
a49fa33ffbe6f2e95427020d386194d6346b6e50 Bug 1622360 - Rename RenderRootUpdates. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530254
diff changeset
   304
      mStateManager.mAsyncResourceUpdates->Flush(
530257
fc6c313294232c5a8ba700d941c1e654d0b33c28 Bug 1622360 - Singularize the TransactionData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530256
diff changeset
   305
          transactionData->mResourceUpdates, transactionData->mSmallShmems,
fc6c313294232c5a8ba700d941c1e654d0b33c28 Bug 1622360 - Singularize the TransactionData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530256
diff changeset
   306
          transactionData->mLargeShmems);
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   307
    }
530257
fc6c313294232c5a8ba700d941c1e654d0b33c28 Bug 1622360 - Singularize the TransactionData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530256
diff changeset
   308
    transactionData->mScrollUpdates = std::move(mPendingScrollUpdates);
572905
3fa425a7f1295f3b056453f8d62be43bdbe85ca9 Bug 1184468 - Use nsTHashtable::Keys where possible. r=xpcom-reviewers,nika
Simon Giesecke <sgiesecke@mozilla.com>
parents: 571291
diff changeset
   309
    for (const auto& scrollId : transactionData->mScrollUpdates.Keys()) {
3fa425a7f1295f3b056453f8d62be43bdbe85ca9 Bug 1184468 - Use nsTHashtable::Keys where possible. r=xpcom-reviewers,nika
Simon Giesecke <sgiesecke@mozilla.com>
parents: 571291
diff changeset
   310
      nsLayoutUtils::NotifyPaintSkipTransaction(/*scroll id=*/scrollId);
465755
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   311
    }
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   312
  }
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   313
452761
ee870d4a43083769491e0964ae180304542fc10f Bug 1441308 - Split out document pieces of WebRenderLayerManager r=jrmuizel
Doug Thayer <dothayer@mozilla.com>
parents: 452465
diff changeset
   314
  Maybe<wr::IpcResourceUpdateQueue> nothing;
530257
fc6c313294232c5a8ba700d941c1e654d0b33c28 Bug 1622360 - Singularize the TransactionData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530256
diff changeset
   315
  WrBridge()->EndEmptyTransaction(mFocusTarget, std::move(transactionData),
484008
0c25260c4edf97fdfef11320c2a91bc0698b4c11 Bug 1547351 - Automatically set content process render root r=kats
Alexis Beingessner <a.beingessner@gmail.com>
parents: 482770
diff changeset
   316
                                  mLatestTransactionId,
449634
eda7bfb669dad4b47dd28b0dbb0fd4192895d4ac Bug 1510853 - Make VsyncId available to compositor. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 449600
diff changeset
   317
                                  mTransactionIdAllocator->GetVsyncId(),
452465
4a8c79b919b2b565219da4adf9c7f74686d4296b Bug 1517355 - Add CONTENT_FRAME_TIME variant that records from the vsync time. data-review=rrayborn, r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 452040
diff changeset
   318
                                  mTransactionIdAllocator->GetVsyncStart(),
449634
eda7bfb669dad4b47dd28b0dbb0fd4192895d4ac Bug 1510853 - Make VsyncId available to compositor. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 449600
diff changeset
   319
                                  refreshStart, mTransactionStart, mURL);
425069
c572bc658fec6ec6904eff12350962af3346ba8c Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
Ryan Hunt <rhunt@eqrion.net>
parents: 424926
diff changeset
   320
  mTransactionStart = TimeStamp();
c572bc658fec6ec6904eff12350962af3346ba8c Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
Ryan Hunt <rhunt@eqrion.net>
parents: 424926
diff changeset
   321
385833
86c487f84974c727365d6cc266d7a8949ba253bb Bug 1405481 - Push canvas updates to the compositor on empty transactions r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385069
diff changeset
   322
  MakeSnapshotIfRequired(size);
384287
f407f597b7bf6ccfd9bfb1ec5747a7ab56d0c534 Bug 1403915 - Remove some leftover Layer-related goop. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 384286
diff changeset
   323
  return true;
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   324
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   325
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   326
void WebRenderLayerManager::EndTransactionWithoutLayer(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   327
    nsDisplayList* aDisplayList, nsDisplayListBuilder* aDisplayListBuilder,
573310
3290d898be8adef5e794d7125d2a9f1384cae3ee Bug 1700642 - Part 1: Track per frame paint phase durations r=nical
Miko Mynttinen <mikokm@gmail.com>
parents: 573276
diff changeset
   328
    WrFiltersHolder&& aFilters, WebRenderBackgroundData* aBackground,
3290d898be8adef5e794d7125d2a9f1384cae3ee Bug 1700642 - Part 1: Track per frame paint phase durations r=nical
Miko Mynttinen <mikokm@gmail.com>
parents: 573276
diff changeset
   329
    const double aGeckoDLBuildTime) {
510659
7e4ffedd64374713b65aeb7d120f739887d6750d Bug 1609708 - Rename PROFILER_TRACING to PROFILER_TRACING_MARKER. r=gerald
Nazım Can Altınova <canaltinova@gmail.com>
parents: 502411
diff changeset
   330
  AUTO_PROFILER_TRACING_MARKER("Paint", "RenderLayers", GRAPHICS);
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   331
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   332
  // Since we don't do repeat transactions right now, just set the time
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   333
  mAnimationReadyTime = TimeStamp::Now();
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   334
385061
2350d8369f3b3c65453b84ca4f2ea83cc3159b2f Bug 1406707 - Change WebRenderBridgeChild::BeginTransaction() as to return void r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 384945
diff changeset
   335
  WrBridge()->BeginTransaction();
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   336
384723
2b2ed7093ab2fd9c599bcfcb7cb869bda8422147 Bug 1405947 - Remove argument of BeginTransaction() r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 384644
diff changeset
   337
  LayoutDeviceIntSize size = mWidget->GetClientSize();
465755
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   338
590873
a480a8364911e38883ecab2e38e4432cb456dcf7 Bug 1728774 - Fix display item cache with retained DL builder. r=miko,gfx-reviewers
Glenn Watson <git@intuitionlibrary.com>
parents: 590475
diff changeset
   339
  mDLBuilder->Begin(&mDisplayItemCache);
518276
f792d895cdf8f3819b987389301e98b5873123d8 Bug 1620005 - Refactor WebRender display item caching r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518226
diff changeset
   340
399062
62401d22f92a45c4a50040424b77915fdea687bc Bug 1405824 - Use WebRenderBridgeChild instead of IShmemAllocator in IpcResourceUpdateQueue. r=jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 398790
diff changeset
   341
  wr::IpcResourceUpdateQueue resourceUpdates(WrBridge());
427371
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   342
  wr::usize builderDumpIndex = 0;
437415
2c10fe6e34c0f6c62984515fc48d81295d609f03 Bug 1483549 - Add separate CONTENT_FRAME_TIME recording for SVG with WR. r=jrmuizel data-review=francois
Matt Woodrow <mwoodrow@mozilla.com>
parents: 437016
diff changeset
   343
  bool containsSVGGroup = false;
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   344
  bool dumpEnabled =
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   345
      mWebRenderCommandBuilder.ShouldDumpDisplayList(aDisplayListBuilder);
540730
422a055dfbae293ad9277720e5d9a0901e5cdad5 Bug 1652986 - Restore ability to dump the WR display list interleaved with the the gecko DL. r=miko
Kartikaya Gupta <kgupta@mozilla.com>
parents: 534081
diff changeset
   346
  Maybe<AutoDisplayItemCacheSuppressor> cacheSuppressor;
427371
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   347
  if (dumpEnabled) {
540730
422a055dfbae293ad9277720e5d9a0901e5cdad5 Bug 1652986 - Restore ability to dump the WR display list interleaved with the the gecko DL. r=miko
Kartikaya Gupta <kgupta@mozilla.com>
parents: 534081
diff changeset
   348
    cacheSuppressor.emplace(&mDisplayItemCache);
427371
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   349
    printf_stderr("-- WebRender display list build --\n");
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   350
  }
367091
3280d069c65002c55e7c68c874ceac5d66774f19 Bug 1372118 - Part1. Have a path to create WebRender commands without layers. r=jrmuizel, r=kats, r=mattwoodrow
Ethan Lin <ethlin@mozilla.com>
parents: 366862
diff changeset
   351
514919
cee2ebb35aa78184cfdd1064eb965acc22b0ee4a Bug 1616335 - Add a pref to dump the serialized WebRender display list r=kvark
Miko Mynttinen <mikokm@gmail.com>
parents: 514882
diff changeset
   352
  if (XRE_IsContentProcess() &&
590475
a14528944cc8af7672ee12ea2820382b91e7fd2f Bug 1726118 - Prefix all webrender debug prefs with gfx.webrender.debug. r=gfx-reviewers,jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 590442
diff changeset
   353
      StaticPrefs::gfx_webrender_debug_dl_dump_content_serialized()) {
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   354
    mDLBuilder->DumpSerializedDisplayList();
514919
cee2ebb35aa78184cfdd1064eb965acc22b0ee4a Bug 1616335 - Add a pref to dump the serialized WebRender display list r=kvark
Miko Mynttinen <mikokm@gmail.com>
parents: 514882
diff changeset
   355
  }
cee2ebb35aa78184cfdd1064eb965acc22b0ee4a Bug 1616335 - Add a pref to dump the serialized WebRender display list r=kvark
Miko Mynttinen <mikokm@gmail.com>
parents: 514882
diff changeset
   356
424378
0d8a19147238828cfb0097cd9e856d815eed5b7d Bug 1405465 - Handle WR paint codepath with no frame r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 423788
diff changeset
   357
  if (aDisplayList) {
0d8a19147238828cfb0097cd9e856d815eed5b7d Bug 1405465 - Handle WR paint codepath with no frame r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 423788
diff changeset
   358
    MOZ_ASSERT(aDisplayListBuilder && !aBackground);
520774
f215196f1d1c8c6b42214b35fee351ef021bd704 Bug 1624125 - Track display list changes in DisplayItemCache r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518276
diff changeset
   359
    mDisplayItemCache.SetDisplayList(aDisplayListBuilder, aDisplayList);
518276
f792d895cdf8f3819b987389301e98b5873123d8 Bug 1620005 - Refactor WebRender display item caching r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518226
diff changeset
   360
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   361
    mWebRenderCommandBuilder.BuildWebRenderCommands(
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   362
        *mDLBuilder, resourceUpdates, aDisplayList, aDisplayListBuilder,
522549
82b6993806c5494341f14bf691e99906a058ca27 Bug 1622360 - Remove WebRenderScrollDataCollection. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 522548
diff changeset
   363
        mScrollData, std::move(aFilters));
518276
f792d895cdf8f3819b987389301e98b5873123d8 Bug 1620005 - Refactor WebRender display item caching r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 518226
diff changeset
   364
557770
f10ece478501cfe4cb9f03478e7c0748913f6de0 Bug 1675709. Make sure to only call NotifyApzTransaction on scroll frames after the paint transaction is complete in the webrender case. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 557507
diff changeset
   365
    aDisplayListBuilder->NotifyAndClearScrollFrames();
f10ece478501cfe4cb9f03478e7c0748913f6de0 Bug 1675709. Make sure to only call NotifyApzTransaction on scroll frames after the paint transaction is complete in the webrender case. r=mattwoodrow
Timothy Nikkel <tnikkel@gmail.com>
parents: 557507
diff changeset
   366
523747
368bcfc1efad4bd8107163581d65d5880dd91987 Bug 1622360 - Downgrade builder dump index from RenderRootArray. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 522676
diff changeset
   367
    builderDumpIndex = mWebRenderCommandBuilder.GetBuilderDumpIndex();
437415
2c10fe6e34c0f6c62984515fc48d81295d609f03 Bug 1483549 - Add separate CONTENT_FRAME_TIME recording for SVG with WR. r=jrmuizel data-review=francois
Matt Woodrow <mwoodrow@mozilla.com>
parents: 437016
diff changeset
   368
    containsSVGGroup = mWebRenderCommandBuilder.GetContainsSVGGroup();
424378
0d8a19147238828cfb0097cd9e856d815eed5b7d Bug 1405465 - Handle WR paint codepath with no frame r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 423788
diff changeset
   369
  } else {
0d8a19147238828cfb0097cd9e856d815eed5b7d Bug 1405465 - Handle WR paint codepath with no frame r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 423788
diff changeset
   370
    // ViewToPaint does not have frame yet, then render only background clolor.
0d8a19147238828cfb0097cd9e856d815eed5b7d Bug 1405465 - Handle WR paint codepath with no frame r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 423788
diff changeset
   371
    MOZ_ASSERT(!aDisplayListBuilder && aBackground);
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   372
    aBackground->AddWebRenderCommands(*mDLBuilder);
427371
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   373
    if (dumpEnabled) {
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   374
      printf_stderr("(no display list; background only)\n");
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   375
      builderDumpIndex =
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   376
          mDLBuilder->Dump(/*indent*/ 1, Some(builderDumpIndex), Nothing());
427371
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   377
    }
423788
a54c4cc96505799a60706b586d004db2be2da638 Bug 1471220 - Record the WR display list build time in the flb phase of content paint telemetry. r=mattwoodrow
Kartikaya Gupta <kgupta@mozilla.com>
parents: 419608
diff changeset
   378
  }
367091
3280d069c65002c55e7c68c874ceac5d66774f19 Bug 1372118 - Part1. Have a path to create WebRender commands without layers. r=jrmuizel, r=kats, r=mattwoodrow
Ethan Lin <ethlin@mozilla.com>
parents: 366862
diff changeset
   379
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   380
  mWidget->AddWindowOverlayWebRenderCommands(WrBridge(), *mDLBuilder,
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   381
                                             resourceUpdates);
427371
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   382
  if (dumpEnabled) {
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   383
    printf_stderr("(window overlay)\n");
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   384
    Unused << mDLBuilder->Dump(/*indent*/ 1, Some(builderDumpIndex), Nothing());
427371
6e38a0f11e038dc80c4a58eef65652d44311eda0 Bug 1475637 - Add a mechanism for dumping an interleaved display list. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 425069
diff changeset
   385
  }
388729
7b501bcc9d3f2a9d7ff3cee0a9019cb3fd2bea3f Bug 1410777 - Force a full transaction for WR when the window overlay changes. r=mstange
Kartikaya Gupta <kgupta@mozilla.com>
parents: 388728
diff changeset
   386
522549
82b6993806c5494341f14bf691e99906a058ca27 Bug 1622360 - Remove WebRenderScrollDataCollection. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 522548
diff changeset
   387
  if (AsyncPanZoomEnabled()) {
82b6993806c5494341f14bf691e99906a058ca27 Bug 1622360 - Remove WebRenderScrollDataCollection. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 522548
diff changeset
   388
    if (mIsFirstPaint) {
82b6993806c5494341f14bf691e99906a058ca27 Bug 1622360 - Remove WebRenderScrollDataCollection. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 522548
diff changeset
   389
      mScrollData.SetIsFirstPaint();
82b6993806c5494341f14bf691e99906a058ca27 Bug 1622360 - Remove WebRenderScrollDataCollection. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 522548
diff changeset
   390
      mIsFirstPaint = false;
355164
9a89384b0d2c19e874059db52db86e893e5c3e6c Bug 1357754 - Record the isFirstPaint flag in the WebRenderScrollData. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 355156
diff changeset
   391
    }
522549
82b6993806c5494341f14bf691e99906a058ca27 Bug 1622360 - Remove WebRenderScrollDataCollection. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 522548
diff changeset
   392
    mScrollData.SetPaintSequenceNumber(mPaintSequenceNumber);
524239
ba223c9eb4fdd088995bbab5087dd88a93b3b892 Bug 1627362 - Improve logging for fixed/sticky data on the WR codepath. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 523747
diff changeset
   393
    if (dumpEnabled) {
556923
77c19223a20f1ed0df92c8d26ae50467d9c783f8 Bug 1662800 - Make the WebRenderScrollData dump nicer. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 556414
diff changeset
   394
      std::stringstream str;
77c19223a20f1ed0df92c8d26ae50467d9c783f8 Bug 1662800 - Make the WebRenderScrollData dump nicer. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 556414
diff changeset
   395
      str << mScrollData;
77c19223a20f1ed0df92c8d26ae50467d9c783f8 Bug 1662800 - Make the WebRenderScrollData dump nicer. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 556414
diff changeset
   396
      print_stderr(str);
524239
ba223c9eb4fdd088995bbab5087dd88a93b3b892 Bug 1627362 - Improve logging for fixed/sticky data on the WR codepath. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 523747
diff changeset
   397
    }
355156
9801b8ad5dc2d77edd387c7b508f2bffdb409a5b Bug 1357754 - Add a mechanism to send scroll data to APZ over PWebRenderBridge. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 355152
diff changeset
   398
  }
465755
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   399
417939
61f51684cc29e527504f1ec72824bf5b53fa1853 Bug 1452390 - Implement paint-skipping support in WebRender. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 416673
diff changeset
   400
  // Since we're sending a full mScrollData that will include the new scroll
61f51684cc29e527504f1ec72824bf5b53fa1853 Bug 1452390 - Implement paint-skipping support in WebRender. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 416673
diff changeset
   401
  // offsets, and we can throw away the pending scroll updates we had kept for
61f51684cc29e527504f1ec72824bf5b53fa1853 Bug 1452390 - Implement paint-skipping support in WebRender. r=botond
Kartikaya Gupta <kgupta@mozilla.com>
parents: 416673
diff changeset
   402
  // an empty transaction.
472326
85c60519f4c93d2eead5cb2963be5649d6d5d87b Bug 1547435 - Ensure NotifyApzTransaction is only called once a transaction is actually sent. r=kats,rhunt
Botond Ballo <botond@mozilla.com>
parents: 471996
diff changeset
   403
  auto scrollIdsUpdated = ClearPendingScrollInfoUpdate();
85c60519f4c93d2eead5cb2963be5649d6d5d87b Bug 1547435 - Ensure NotifyApzTransaction is only called once a transaction is actually sent. r=kats,rhunt
Botond Ballo <botond@mozilla.com>
parents: 471996
diff changeset
   404
  for (ScrollableLayerGuid::ViewID update : scrollIdsUpdated) {
85c60519f4c93d2eead5cb2963be5649d6d5d87b Bug 1547435 - Ensure NotifyApzTransaction is only called once a transaction is actually sent. r=kats,rhunt
Botond Ballo <botond@mozilla.com>
parents: 471996
diff changeset
   405
    nsLayoutUtils::NotifyPaintSkipTransaction(update);
85c60519f4c93d2eead5cb2963be5649d6d5d87b Bug 1547435 - Ensure NotifyApzTransaction is only called once a transaction is actually sent. r=kats,rhunt
Botond Ballo <botond@mozilla.com>
parents: 471996
diff changeset
   406
  }
355156
9801b8ad5dc2d77edd387c7b508f2bffdb409a5b Bug 1357754 - Add a mechanism to send scroll data to APZ over PWebRenderBridge. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 355152
diff changeset
   407
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   408
  mLatestTransactionId =
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   409
      mTransactionIdAllocator->GetTransactionId(/*aThrottle*/ true);
447335
52a798ad6583b97fb3faf68f1849e7098d9ce4ae Bug 1507680 - Record detailed statistics about slow WebRender frames in about:support. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 447334
diff changeset
   410
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   411
  // Get the time of when the refresh driver start its tick (if available),
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   412
  // otherwise use the time of when LayerManager::BeginTransaction was called.
425069
c572bc658fec6ec6904eff12350962af3346ba8c Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
Ryan Hunt <rhunt@eqrion.net>
parents: 424926
diff changeset
   413
  TimeStamp refreshStart = mTransactionIdAllocator->GetTransactionStart();
447335
52a798ad6583b97fb3faf68f1849e7098d9ce4ae Bug 1507680 - Record detailed statistics about slow WebRender frames in about:support. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 447334
diff changeset
   414
  if (!refreshStart) {
52a798ad6583b97fb3faf68f1849e7098d9ce4ae Bug 1507680 - Record detailed statistics about slow WebRender frames in about:support. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 447334
diff changeset
   415
    refreshStart = mTransactionStart;
52a798ad6583b97fb3faf68f1849e7098d9ce4ae Bug 1507680 - Record detailed statistics about slow WebRender frames in about:support. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 447334
diff changeset
   416
  }
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   417
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   418
  if (mStateManager.mAsyncResourceUpdates) {
529362
9f69227b60a6f02cc568f3c7b2bef4838bde9bd8 Bug 1622360 - Remove resource subqueue machinery. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529211
diff changeset
   419
    if (resourceUpdates.IsEmpty()) {
9f69227b60a6f02cc568f3c7b2bef4838bde9bd8 Bug 1622360 - Remove resource subqueue machinery. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529211
diff changeset
   420
      resourceUpdates.ReplaceResources(
9f69227b60a6f02cc568f3c7b2bef4838bde9bd8 Bug 1622360 - Remove resource subqueue machinery. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529211
diff changeset
   421
          std::move(mStateManager.mAsyncResourceUpdates.ref()));
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   422
    } else {
530184
5809724e4d1395f7c47539eb041c8a64cd1f8219 Bug 1622360 - Stop passing around the render root on the UpdateResources codepath. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529367
diff changeset
   423
      WrBridge()->UpdateResources(mStateManager.mAsyncResourceUpdates.ref());
444115
1a3433fb1c2975e86cf2c3c7821ff10999f5dbab Bug 1428558 - Part 2. Improve plumbing to sending resource updates to WebRender. r=nical
Andrew Osmond <aosmond@mozilla.com>
parents: 442491
diff changeset
   424
    }
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   425
    mStateManager.mAsyncResourceUpdates.reset();
444115
1a3433fb1c2975e86cf2c3c7821ff10999f5dbab Bug 1428558 - Part 2. Improve plumbing to sending resource updates to WebRender. r=nical
Andrew Osmond <aosmond@mozilla.com>
parents: 442491
diff changeset
   426
  }
529362
9f69227b60a6f02cc568f3c7b2bef4838bde9bd8 Bug 1622360 - Remove resource subqueue machinery. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529211
diff changeset
   427
  mStateManager.DiscardImagesInTransaction(resourceUpdates);
444115
1a3433fb1c2975e86cf2c3c7821ff10999f5dbab Bug 1428558 - Part 2. Improve plumbing to sending resource updates to WebRender. r=nical
Andrew Osmond <aosmond@mozilla.com>
parents: 442491
diff changeset
   428
529362
9f69227b60a6f02cc568f3c7b2bef4838bde9bd8 Bug 1622360 - Remove resource subqueue machinery. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529211
diff changeset
   429
  WrBridge()->RemoveExpiredFontKeys(resourceUpdates);
410346
034e1d7593701112b0c92fb1b40e0e69663b0ca9 Bug 1447910 - move WR font key deletion to the end of a transaction. r=jrmuizel
Lee Salzman <lsalzman@mozilla.com>
parents: 409329
diff changeset
   430
512561
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   431
  // Skip the synchronization for buffer since we also skip the painting during
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   432
  // device-reset status.
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   433
  if (!gfxPlatform::GetPlatform()->DidRenderingDeviceReset()) {
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   434
    if (WrBridge()->GetSyncObject() &&
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   435
        WrBridge()->GetSyncObject()->IsSyncObjectValid()) {
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   436
      WrBridge()->GetSyncObject()->Synchronize();
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   437
    }
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   438
  }
sotaro <sotaro.ikeda.g@gmail.com>
parents: 510659
diff changeset
   439
477808
4357d695b8d5dd901788d922b73e89f16c45b2c9 Bug 1464032 Part 12: Add CanvasParent, CanvasChild and RecordedTextureData. r=mattwoodrow, jld
Bob Owen <bobowencode@gmail.com>
parents: 477802
diff changeset
   440
  GetCompositorBridgeChild()->EndCanvasTransaction();
4357d695b8d5dd901788d922b73e89f16c45b2c9 Bug 1464032 Part 12: Add CanvasParent, CanvasChild and RecordedTextureData. r=mattwoodrow, jld
Bob Owen <bobowencode@gmail.com>
parents: 477802
diff changeset
   441
363416
2629ca0641a72087efcc1d12498519450070dbc7 Bug 1371114 - Add gecko profiler labels for WebRender, r=kats
peter chang <pchang@mozilla.com>
parents: 362306
diff changeset
   442
  {
510659
7e4ffedd64374713b65aeb7d120f739887d6750d Bug 1609708 - Rename PROFILER_TRACING to PROFILER_TRACING_MARKER. r=gerald
Nazım Can Altınova <canaltinova@gmail.com>
parents: 502411
diff changeset
   443
    AUTO_PROFILER_TRACING_MARKER("Paint", "ForwardDPTransaction", GRAPHICS);
530256
c15b0564d4f593f486b0bbe482b38fcdbb8f701c Bug 1622360 - Singularize the DisplayListData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530255
diff changeset
   444
    DisplayListData dlData;
590268
e567052f6153e252eff9f91903a65ad1b657bf85 Bug 1727458 - Change display list builder APIs to retain/reuse them r=gfx-reviewers,kvark
Glenn Watson <git@intuitionlibrary.com>
parents: 590169
diff changeset
   445
    mDLBuilder->End(dlData);
530256
c15b0564d4f593f486b0bbe482b38fcdbb8f701c Bug 1622360 - Singularize the DisplayListData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530255
diff changeset
   446
    resourceUpdates.Flush(dlData.mResourceUpdates, dlData.mSmallShmems,
c15b0564d4f593f486b0bbe482b38fcdbb8f701c Bug 1622360 - Singularize the DisplayListData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530255
diff changeset
   447
                          dlData.mLargeShmems);
c15b0564d4f593f486b0bbe482b38fcdbb8f701c Bug 1622360 - Singularize the DisplayListData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530255
diff changeset
   448
    dlData.mRect =
529211
f9e7cca93ef256454af50630fbe8f9ca67ce18f4 Bug 1622360 - Remove kRenderRoots. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529208
diff changeset
   449
        LayoutDeviceRect(LayoutDevicePoint(), LayoutDeviceSize(size));
530256
c15b0564d4f593f486b0bbe482b38fcdbb8f701c Bug 1622360 - Singularize the DisplayListData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530255
diff changeset
   450
    dlData.mScrollData.emplace(std::move(mScrollData));
577074
47a2e56cc7a6a073f17a23341f4e9990632df78d Bug 1676657 - Port paint phase weight histograms to WebRender r=nical
Miko Mynttinen <mikokm@gmail.com>
parents: 576958
diff changeset
   451
    dlData.mDLDesc.gecko_display_list_type =
47a2e56cc7a6a073f17a23341f4e9990632df78d Bug 1676657 - Port paint phase weight histograms to WebRender r=nical
Miko Mynttinen <mikokm@gmail.com>
parents: 576958
diff changeset
   452
        aDisplayListBuilder && aDisplayListBuilder->PartialBuildFailed()
47a2e56cc7a6a073f17a23341f4e9990632df78d Bug 1676657 - Port paint phase weight histograms to WebRender r=nical
Miko Mynttinen <mikokm@gmail.com>
parents: 576958
diff changeset
   453
            ? wr::GeckoDisplayListType::Full(aGeckoDLBuildTime)
47a2e56cc7a6a073f17a23341f4e9990632df78d Bug 1676657 - Port paint phase weight histograms to WebRender r=nical
Miko Mynttinen <mikokm@gmail.com>
parents: 576958
diff changeset
   454
            : wr::GeckoDisplayListType::Partial(aGeckoDLBuildTime);
465755
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   455
526665
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   456
    bool ret = WrBridge()->EndTransaction(
530256
c15b0564d4f593f486b0bbe482b38fcdbb8f701c Bug 1622360 - Singularize the DisplayListData across IPC. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 530255
diff changeset
   457
        std::move(dlData), mLatestTransactionId, containsSVGGroup,
526665
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   458
        mTransactionIdAllocator->GetVsyncId(),
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   459
        mTransactionIdAllocator->GetVsyncStart(), refreshStart,
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   460
        mTransactionStart, mURL);
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   461
    if (!ret) {
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   462
      // Failed to send display list, reset display item cache state.
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   463
      mDisplayItemCache.Clear();
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   464
    }
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   465
465755
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   466
    WrBridge()->SendSetFocusTarget(mFocusTarget);
96da9d241051d222bdd693bdb519d058a013b59c Bug 1441308 - Core renderroot splitting changes r=kats,sotaro
Doug Thayer <dothayer@mozilla.com>
parents: 465589
diff changeset
   467
    mFocusTarget = FocusTarget();
363416
2629ca0641a72087efcc1d12498519450070dbc7 Bug 1371114 - Add gecko profiler labels for WebRender, r=kats
peter chang <pchang@mozilla.com>
parents: 362306
diff changeset
   468
  }
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   469
452853
ed51ef14289e378f05974012b62f1cb2464b867b Bug 1505363 - Call DiscardCompositorAnimations() after calling WrBridge()->EndTransaction() r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 452465
diff changeset
   470
  // Discard animations after calling WrBridge()->EndTransaction().
ed51ef14289e378f05974012b62f1cb2464b867b Bug 1505363 - Call DiscardCompositorAnimations() after calling WrBridge()->EndTransaction() r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 452465
diff changeset
   471
  // It updates mWrEpoch in WebRenderBridgeParent. The updated mWrEpoch is
ed51ef14289e378f05974012b62f1cb2464b867b Bug 1505363 - Call DiscardCompositorAnimations() after calling WrBridge()->EndTransaction() r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 452465
diff changeset
   472
  // necessary for deleting animations at the correct time.
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   473
  mStateManager.DiscardCompositorAnimations();
452853
ed51ef14289e378f05974012b62f1cb2464b867b Bug 1505363 - Call DiscardCompositorAnimations() after calling WrBridge()->EndTransaction() r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 452465
diff changeset
   474
425069
c572bc658fec6ec6904eff12350962af3346ba8c Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
Ryan Hunt <rhunt@eqrion.net>
parents: 424926
diff changeset
   475
  mTransactionStart = TimeStamp();
c572bc658fec6ec6904eff12350962af3346ba8c Bug 1470528 - Implement CONTENT_FRAME_TIME for the webrender codepath. r=sotaro
Ryan Hunt <rhunt@eqrion.net>
parents: 424926
diff changeset
   476
341869
9af4655d0edcdd9c8099abe9a75825f051a4ab04 Bug 1318100. Follow up clean up of WebrenderBridgeChild
Mason Chang <mchang@mozilla.com>
parents: 341868
diff changeset
   477
  MakeSnapshotIfRequired(size);
352760
c2d11e5e96d664e9c88384fe3c3dfbb600f225e8 Bug 1354474 - Add FlushRendering() and Composite() support to WebRenderLayerManager r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 350351
diff changeset
   478
  mNeedsComposite = false;
341868
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   479
}
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   480
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   481
void WebRenderLayerManager::SetFocusTarget(const FocusTarget& aFocusTarget) {
366286
36bfbfdfa4a187ceea3aa8013963f0153b0317f3 Bug 1351783 part 11 - Sync FocusTarget with WebRenderLayerManager. r=kats
Ryan Hunt <rhunt@eqrion.net>
parents: 365845
diff changeset
   482
  mFocusTarget = aFocusTarget;
36bfbfdfa4a187ceea3aa8013963f0153b0317f3 Bug 1351783 part 11 - Sync FocusTarget with WebRenderLayerManager. r=kats
Ryan Hunt <rhunt@eqrion.net>
parents: 365845
diff changeset
   483
}
36bfbfdfa4a187ceea3aa8013963f0153b0317f3 Bug 1351783 part 11 - Sync FocusTarget with WebRenderLayerManager. r=kats
Ryan Hunt <rhunt@eqrion.net>
parents: 365845
diff changeset
   484
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   485
bool WebRenderLayerManager::AsyncPanZoomEnabled() const {
359306
c4eb64f48562efad2d3e7beb41d20ba4316dcd32 Bug 1361497 - Override AsyncPanZoomEnabled() in WebRenderLayerManager. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 357036
diff changeset
   486
  return mWidget->AsyncPanZoomEnabled();
c4eb64f48562efad2d3e7beb41d20ba4316dcd32 Bug 1361497 - Override AsyncPanZoomEnabled() in WebRenderLayerManager. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 357036
diff changeset
   487
}
c4eb64f48562efad2d3e7beb41d20ba4316dcd32 Bug 1361497 - Override AsyncPanZoomEnabled() in WebRenderLayerManager. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 357036
diff changeset
   488
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   489
void WebRenderLayerManager::MakeSnapshotIfRequired(LayoutDeviceIntSize aSize) {
341894
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   490
  if (!mTarget || aSize.IsEmpty()) {
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   491
    return;
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   492
  }
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   493
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   494
  // XXX Add other TextureData supports.
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   495
  // Only BufferTexture is supported now.
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   496
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   497
  // TODO: fixup for proper surface format.
471996
f1a87f8700525873cbe7d810ebff7587255e739a Bug 1547097 - Get snapshots in RGBA8 instead of BGRA8 on Android. r=jnicol
Kartikaya Gupta <kgupta@mozilla.com>
parents: 471623
diff changeset
   498
  // The GLES spec only guarantees that RGBA can be used with glReadPixels,
f1a87f8700525873cbe7d810ebff7587255e739a Bug 1547097 - Get snapshots in RGBA8 instead of BGRA8 on Android. r=jnicol
Kartikaya Gupta <kgupta@mozilla.com>
parents: 471623
diff changeset
   499
  // so on Android we use RGBA.
f1a87f8700525873cbe7d810ebff7587255e739a Bug 1547097 - Get snapshots in RGBA8 instead of BGRA8 on Android. r=jnicol
Kartikaya Gupta <kgupta@mozilla.com>
parents: 471623
diff changeset
   500
  SurfaceFormat format =
f1a87f8700525873cbe7d810ebff7587255e739a Bug 1547097 - Get snapshots in RGBA8 instead of BGRA8 on Android. r=jnicol
Kartikaya Gupta <kgupta@mozilla.com>
parents: 471623
diff changeset
   501
#ifdef MOZ_WIDGET_ANDROID
475580
edbf8267dd4f5a786ae660ff9e2fe890cf74c48e Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 475564
diff changeset
   502
      SurfaceFormat::R8G8B8A8;
471996
f1a87f8700525873cbe7d810ebff7587255e739a Bug 1547097 - Get snapshots in RGBA8 instead of BGRA8 on Android. r=jnicol
Kartikaya Gupta <kgupta@mozilla.com>
parents: 471623
diff changeset
   503
#else
475580
edbf8267dd4f5a786ae660ff9e2fe890cf74c48e Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 475564
diff changeset
   504
      SurfaceFormat::B8G8R8A8;
471996
f1a87f8700525873cbe7d810ebff7587255e739a Bug 1547097 - Get snapshots in RGBA8 instead of BGRA8 on Android. r=jnicol
Kartikaya Gupta <kgupta@mozilla.com>
parents: 471623
diff changeset
   505
#endif
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   506
  RefPtr<TextureClient> texture = TextureClient::CreateForRawBufferAccess(
475580
edbf8267dd4f5a786ae660ff9e2fe890cf74c48e Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 475564
diff changeset
   507
      WrBridge(), format, aSize.ToUnknownSize(), BackendType::SKIA,
edbf8267dd4f5a786ae660ff9e2fe890cf74c48e Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 475564
diff changeset
   508
      TextureFlags::SNAPSHOT);
341894
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   509
  if (!texture) {
341868
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   510
    return;
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   511
  }
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   512
342122
8f272d554787e096ae515ba635c3705a6b9b6bcf Bug 1331515 - More WR to Wr prefix conversion. r=gfx?
Nicolas Silva <nsilva@mozilla.com>
parents: 342121
diff changeset
   513
  texture->InitIPDLActor(WrBridge());
341894
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   514
  if (!texture->GetIPDLActor()) {
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   515
    return;
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   516
  }
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   517
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   518
  IntRect bounds = ToOutsideIntRect(mTarget->GetClipExtents());
544716
64b98572f2e02462068dac40c656d3c091619143 Bug 1656818 - Move decision to flip WebRender readback closer to the source, and make it correct for SWGL. r=lsalzman,geckoview-reviewers,snorp
Matt Woodrow <mwoodrow@mozilla.com>
parents: 544632
diff changeset
   519
  bool needsYFlip = false;
64b98572f2e02462068dac40c656d3c091619143 Bug 1656818 - Move decision to flip WebRender readback closer to the source, and make it correct for SWGL. r=lsalzman,geckoview-reviewers,snorp
Matt Woodrow <mwoodrow@mozilla.com>
parents: 544632
diff changeset
   520
  if (!WrBridge()->SendGetSnapshot(texture->GetIPDLActor(), &needsYFlip)) {
341894
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   521
    return;
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   522
  }
341868
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   523
341894
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   524
  TextureClientAutoLock autoLock(texture, OpenMode::OPEN_READ_ONLY);
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   525
  if (!autoLock.Succeeded()) {
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   526
    return;
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   527
  }
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   528
  RefPtr<DrawTarget> drawTarget = texture->BorrowDrawTarget();
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   529
  if (!drawTarget || !drawTarget->IsValid()) {
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   530
    return;
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   531
  }
fa40a7b4f05f6066572872bd0ddc7a7243a862f4 Bug 1318113 - Use BufferTexture to return the reftest snapshot r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341891
diff changeset
   532
  RefPtr<SourceSurface> snapshot = drawTarget->Snapshot();
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   533
  /*
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   534
    static int count = 0;
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   535
    char filename[100];
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   536
    snprintf(filename, 100, "output%d.png", count++);
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   537
    printf_stderr("Writing to :%s\n", filename);
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   538
    gfxUtils::WriteAsPNG(snapshot, filename);
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   539
    */
341868
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   540
396878
0649658ddeb253b8d05bb1b396d49035a197be3c Bug 1423570: Use BaseRect access methods instead of member variables in gfx/ r=bas.schouten
Milan Sreckovic <milan@mozilla.com>
parents: 394341
diff changeset
   541
  Rect dst(bounds.X(), bounds.Y(), bounds.Width(), bounds.Height());
374590
2a8f664f107efeaa3be4dee08b3ac340df88892f Bug 1387514: Upgrade BaseRect (derived classes) width and height direct member variable use to instead use Width()/SetWidth() and Height()/SetHeight() in .cpp files in gfx/*. r=milan
Milan Sreckovic <milan@mozilla.com>
parents: 374546
diff changeset
   542
  Rect src(0, 0, bounds.Width(), bounds.Height());
341868
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   543
499396
9277be3613ca5109ae4007a512ee75856f8f1120 Bug 1591346 - Remove EGL_ANGLE_experimental_present_path usage with WebRender r=gw
sotaro <sotaro.ikeda.g@gmail.com>
parents: 493161
diff changeset
   544
  Matrix m;
9277be3613ca5109ae4007a512ee75856f8f1120 Bug 1591346 - Remove EGL_ANGLE_experimental_present_path usage with WebRender r=gw
sotaro <sotaro.ikeda.g@gmail.com>
parents: 493161
diff changeset
   545
  if (needsYFlip) {
9277be3613ca5109ae4007a512ee75856f8f1120 Bug 1591346 - Remove EGL_ANGLE_experimental_present_path usage with WebRender r=gw
sotaro <sotaro.ikeda.g@gmail.com>
parents: 493161
diff changeset
   546
    m = Matrix::Scaling(1.0, -1.0).PostTranslate(0.0, aSize.height);
9277be3613ca5109ae4007a512ee75856f8f1120 Bug 1591346 - Remove EGL_ANGLE_experimental_present_path usage with WebRender r=gw
sotaro <sotaro.ikeda.g@gmail.com>
parents: 493161
diff changeset
   547
  }
9277be3613ca5109ae4007a512ee75856f8f1120 Bug 1591346 - Remove EGL_ANGLE_experimental_present_path usage with WebRender r=gw
sotaro <sotaro.ikeda.g@gmail.com>
parents: 493161
diff changeset
   548
  SurfacePattern pattern(snapshot, ExtendMode::CLAMP, m);
341868
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   549
  DrawTarget* dt = mTarget->GetDrawTarget();
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   550
  MOZ_RELEASE_ASSERT(dt);
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   551
  dt->FillRect(dst, pattern);
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   552
f5bea7e99fdc6d291c4a0c138a5a704b28ce5dcd Bug 1318100 - Add support for reftests in webrender. r=mstange
Mason Chang <mchang@mozilla.com>
parents: 341858
diff changeset
   553
  mTarget = nullptr;
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   554
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   555
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   556
void WebRenderLayerManager::DiscardImages() {
399062
62401d22f92a45c4a50040424b77915fdea687bc Bug 1405824 - Use WebRenderBridgeChild instead of IShmemAllocator in IpcResourceUpdateQueue. r=jrmuizel
Nicolas Silva <nsilva@mozilla.com>
parents: 398790
diff changeset
   557
  wr::IpcResourceUpdateQueue resources(WrBridge());
529362
9f69227b60a6f02cc568f3c7b2bef4838bde9bd8 Bug 1622360 - Remove resource subqueue machinery. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529211
diff changeset
   558
  mStateManager.DiscardImagesInTransaction(resources);
530184
5809724e4d1395f7c47539eb041c8a64cd1f8219 Bug 1622360 - Stop passing around the render root on the UpdateResources codepath. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529367
diff changeset
   559
  WrBridge()->UpdateResources(resources);
341822
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   560
}
b4e83ae3d878b1552bbc142d848151db100ceba6 Bug 1317774 - Add gfx code needed to use WebRender in gecko. r=gfx
Mozilla Graphics Team <graphics@mozilla.com>
parents:
diff changeset
   561
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   562
void WebRenderLayerManager::DiscardLocalImages() {
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   563
  mStateManager.DiscardLocalImages();
355152
73569501177174b1022ed18e439b1c397d5ebe3b Bug 1337761 - Part 2: Don't send external images to the parent side if a transaction is incomplete. r=nical
Mason Chang <mchang@mozilla.com>
parents: 355151
diff changeset
   564
}
73569501177174b1022ed18e439b1c397d5ebe3b Bug 1337761 - Part 2: Don't send external images to the parent side if a transaction is incomplete. r=nical
Mason Chang <mchang@mozilla.com>
parents: 355151
diff changeset
   565
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   566
void WebRenderLayerManager::SetLayersObserverEpoch(LayersObserverEpoch aEpoch) {
369574
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
   567
  if (WrBridge()->IPCOpen()) {
429191
383e6ae8f7d4d1961a56aa6f5a69b4c3e8c3e2e5 Bug 1478016 - Add a strongly-typed LayersObserverEpoch type. r=mattwoodrow
Kartikaya Gupta <kgupta@mozilla.com>
parents: 427570
diff changeset
   568
    WrBridge()->SendSetLayersObserverEpoch(aEpoch);
369574
649a35887b3018c91766cc4afea8370d54dd3ccd Bug 1350408 - Gracefully handle failures in WebRenderLayerManager::Initialize to allow reinit. r=kats
Andrew Osmond <aosmond@mozilla.com>
parents: 369217
diff changeset
   569
  }
341905
e98fd107f5a0f578a0d11c761a1531206391e1b9 Bug 1320628 - Fix background tab crash when e10s is enabled r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341901
diff changeset
   570
}
e98fd107f5a0f578a0d11c761a1531206391e1b9 Bug 1320628 - Fix background tab crash when e10s is enabled r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341901
diff changeset
   571
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   572
void WebRenderLayerManager::DidComposite(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   573
    TransactionId aTransactionId, const mozilla::TimeStamp& aCompositeStart,
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   574
    const mozilla::TimeStamp& aCompositeEnd) {
462577
c6b7a7d1835236a71bdc762a42f7bad27bcff4d0 Bug 1532510 - Add a check by IsDestroyed() to WebRenderLayerManager::DidComposite() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 461124
diff changeset
   575
  if (IsDestroyed()) {
c6b7a7d1835236a71bdc762a42f7bad27bcff4d0 Bug 1532510 - Add a check by IsDestroyed() to WebRenderLayerManager::DidComposite() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 461124
diff changeset
   576
    return;
c6b7a7d1835236a71bdc762a42f7bad27bcff4d0 Bug 1532510 - Add a check by IsDestroyed() to WebRenderLayerManager::DidComposite() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 461124
diff changeset
   577
  }
c6b7a7d1835236a71bdc762a42f7bad27bcff4d0 Bug 1532510 - Add a check by IsDestroyed() to WebRenderLayerManager::DidComposite() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 461124
diff changeset
   578
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   579
  MOZ_ASSERT(mWidget);
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   580
369954
6b0a79f9009435f0ea475240c9a7aaf64c4cfc79 Bug 1378113 - Avoid LayerManager reentrency issues when propagating composite notifications. r=dvander
Nicolas Silva <nsilva@mozilla.com>
parents: 369818
diff changeset
   581
  // Notifying the observers may tick the refresh driver which can cause
6b0a79f9009435f0ea475240c9a7aaf64c4cfc79 Bug 1378113 - Avoid LayerManager reentrency issues when propagating composite notifications. r=dvander
Nicolas Silva <nsilva@mozilla.com>
parents: 369818
diff changeset
   582
  // a lot of different things to happen that may affect the lifetime of
6b0a79f9009435f0ea475240c9a7aaf64c4cfc79 Bug 1378113 - Avoid LayerManager reentrency issues when propagating composite notifications. r=dvander
Nicolas Silva <nsilva@mozilla.com>
parents: 369818
diff changeset
   583
  // this layer manager. So let's make sure this object stays alive until
6b0a79f9009435f0ea475240c9a7aaf64c4cfc79 Bug 1378113 - Avoid LayerManager reentrency issues when propagating composite notifications. r=dvander
Nicolas Silva <nsilva@mozilla.com>
parents: 369818
diff changeset
   584
  // the end of the method invocation.
6b0a79f9009435f0ea475240c9a7aaf64c4cfc79 Bug 1378113 - Avoid LayerManager reentrency issues when propagating composite notifications. r=dvander
Nicolas Silva <nsilva@mozilla.com>
parents: 369818
diff changeset
   585
  RefPtr<WebRenderLayerManager> selfRef = this;
6b0a79f9009435f0ea475240c9a7aaf64c4cfc79 Bug 1378113 - Avoid LayerManager reentrency issues when propagating composite notifications. r=dvander
Nicolas Silva <nsilva@mozilla.com>
parents: 369818
diff changeset
   586
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   587
  // |aTransactionId| will be > 0 if the compositor is acknowledging a shadow
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   588
  // layers transaction.
414973
1224b46e13922d7fd3cec29a441560439d0166cb Bug 1455691 - Make the transaction id a struct instead of a uint64_t. r=mattwoodrow
Kartikaya Gupta <kgupta@mozilla.com>
parents: 412606
diff changeset
   589
  if (aTransactionId.IsValid()) {
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   590
    nsIWidgetListener* listener = mWidget->GetWidgetListener();
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   591
    if (listener) {
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   592
      listener->DidCompositeWindow(aTransactionId, aCompositeStart,
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   593
                                   aCompositeEnd);
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   594
    }
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   595
    listener = mWidget->GetAttachedWidgetListener();
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   596
    if (listener) {
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   597
      listener->DidCompositeWindow(aTransactionId, aCompositeStart,
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   598
                                   aCompositeEnd);
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   599
    }
387089
e6f88e18e1bcedb34d71fc74c25d8a7a6f2c60fb Bug 1409595 - Add pointer check in WebRenderLayerManager::DidComposite() r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385834
diff changeset
   600
    if (mTransactionIdAllocator) {
e6f88e18e1bcedb34d71fc74c25d8a7a6f2c60fb Bug 1409595 - Add pointer check in WebRenderLayerManager::DidComposite() r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385834
diff changeset
   601
      mTransactionIdAllocator->NotifyTransactionCompleted(aTransactionId);
e6f88e18e1bcedb34d71fc74c25d8a7a6f2c60fb Bug 1409595 - Add pointer check in WebRenderLayerManager::DidComposite() r=kats
sotaro <sotaro.ikeda.g@gmail.com>
parents: 385834
diff changeset
   602
    }
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   603
  }
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   604
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   605
  // These observers fire whether or not we were in a transaction.
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   606
  for (size_t i = 0; i < mDidCompositeObservers.Length(); i++) {
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   607
    mDidCompositeObservers[i]->DidComposite();
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   608
  }
341905
e98fd107f5a0f578a0d11c761a1531206391e1b9 Bug 1320628 - Fix background tab crash when e10s is enabled r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341901
diff changeset
   609
}
e98fd107f5a0f578a0d11c761a1531206391e1b9 Bug 1320628 - Fix background tab crash when e10s is enabled r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341901
diff changeset
   610
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   611
void WebRenderLayerManager::ClearCachedResources(Layer* aSubtree) {
470478
f987a04773cf19f1f8acf0d87c36dc45e44f586c Bug 1545980 - Add IPCOpen() check to WebRenderLayerManager::ClearCachedResources() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 467648
diff changeset
   612
  if (!WrBridge()->IPCOpen()) {
f987a04773cf19f1f8acf0d87c36dc45e44f586c Bug 1545980 - Add IPCOpen() check to WebRenderLayerManager::ClearCachedResources() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 467648
diff changeset
   613
    gfxCriticalNote << "IPC Channel is already torn down unexpectedly\n";
f987a04773cf19f1f8acf0d87c36dc45e44f586c Bug 1545980 - Add IPCOpen() check to WebRenderLayerManager::ClearCachedResources() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 467648
diff changeset
   614
    return;
f987a04773cf19f1f8acf0d87c36dc45e44f586c Bug 1545980 - Add IPCOpen() check to WebRenderLayerManager::ClearCachedResources() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 467648
diff changeset
   615
  }
369575
7b05ec8e1222d09bbf59d0ddfaa016fed1899a48 Bug 1378697 - Release resources in WebRenderXXXLayer::ClearCachedResources() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 369574
diff changeset
   616
  WrBridge()->BeginClearCachedResources();
574488
6df772b29a9dcdf5444bf736e737c885f74d9cad Bug 1703244 - Flush pending async resource updates when clearing layer manager cache. r=jrmuizel
Andrew Osmond <aosmond@mozilla.com>
parents: 573310
diff changeset
   617
  // We flush any pending async resource updates before we clear the display
6df772b29a9dcdf5444bf736e737c885f74d9cad Bug 1703244 - Flush pending async resource updates when clearing layer manager cache. r=jrmuizel
Andrew Osmond <aosmond@mozilla.com>
parents: 573310
diff changeset
   618
  // list items because some resources (e.g. images) might be shared between
6df772b29a9dcdf5444bf736e737c885f74d9cad Bug 1703244 - Flush pending async resource updates when clearing layer manager cache. r=jrmuizel
Andrew Osmond <aosmond@mozilla.com>
parents: 573310
diff changeset
   619
  // multiple layer managers, not get freed here, and we want to keep their
6df772b29a9dcdf5444bf736e737c885f74d9cad Bug 1703244 - Flush pending async resource updates when clearing layer manager cache. r=jrmuizel
Andrew Osmond <aosmond@mozilla.com>
parents: 573310
diff changeset
   620
  // states consistent.
6df772b29a9dcdf5444bf736e737c885f74d9cad Bug 1703244 - Flush pending async resource updates when clearing layer manager cache. r=jrmuizel
Andrew Osmond <aosmond@mozilla.com>
parents: 573310
diff changeset
   621
  mStateManager.FlushAsyncResourceUpdates();
399287
3ae6cbde5225f24eb512aff7acba6be65efd29ec Bug 1429694 - Fix WebRenderLayerManager::ClearCachedResources r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 399062
diff changeset
   622
  mWebRenderCommandBuilder.ClearCachedResources();
369818
2240f6e8de33bb22e9031a921d9e76162b565a74 Bug 1382091 - Delete ImageKeys with ClearCachedResources r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 369719
diff changeset
   623
  DiscardImages();
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   624
  mStateManager.ClearCachedResources();
369575
7b05ec8e1222d09bbf59d0ddfaa016fed1899a48 Bug 1378697 - Release resources in WebRenderXXXLayer::ClearCachedResources() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 369574
diff changeset
   625
  WrBridge()->EndClearCachedResources();
341905
e98fd107f5a0f578a0d11c761a1531206391e1b9 Bug 1320628 - Fix background tab crash when e10s is enabled r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341901
diff changeset
   626
}
e98fd107f5a0f578a0d11c761a1531206391e1b9 Bug 1320628 - Fix background tab crash when e10s is enabled r=nical?
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341901
diff changeset
   627
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   628
void WebRenderLayerManager::WrUpdated() {
447522
944b5385a34248376ae0d92beabf4bcb8a045567 Bug 1504699 - Part 2. Add plumbing to WebRenderLayerManager to pass on frame released messages. r=nical
Andrew Osmond <aosmond@mozilla.com>
parents: 447335
diff changeset
   629
  ClearAsyncAnimations();
571291
5c9e27c5a0e37e17017fe35f4b8529e9746a360d Bug 1691556 - Drop stale async resource updates after a namespace change. r=jrmuizel
Andrew Osmond <aosmond@mozilla.com>
parents: 569076
diff changeset
   630
  mStateManager.mAsyncResourceUpdates.reset();
387094
a88fa8d0eaa0b8c908f8ab0d2923da526b787e9f Bug 1404232 - Add WebRenderCommandBuilder::ClearCachedResources() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 387093
diff changeset
   631
  mWebRenderCommandBuilder.ClearCachedResources();
a88fa8d0eaa0b8c908f8ab0d2923da526b787e9f Bug 1404232 - Add WebRenderCommandBuilder::ClearCachedResources() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 387093
diff changeset
   632
  DiscardLocalImages();
526665
29ed956cc6c3a91db481750de108a8446d604286 Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel
Miko Mynttinen <mikokm@gmail.com>
parents: 524239
diff changeset
   633
  mDisplayItemCache.Clear();
438931
94a87c720eee25ae57b47fba0b564de70c7b1741 Bug 1491798- Schedule repaint if WebRender is updated by tab move r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 438273
diff changeset
   634
94a87c720eee25ae57b47fba0b564de70c7b1741 Bug 1491798- Schedule repaint if WebRender is updated by tab move r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 438273
diff changeset
   635
  if (mWidget) {
470938
9813ce146bc725dd83e8ff6f41bfc36dd17d935b Bug 1534395 - Rename TabChild to BrowserChild. r=nika
Ryan Hunt <rhunt@eqrion.net>
parents: 470478
diff changeset
   636
    if (dom::BrowserChild* browserChild = mWidget->GetOwningBrowserChild()) {
9813ce146bc725dd83e8ff6f41bfc36dd17d935b Bug 1534395 - Rename TabChild to BrowserChild. r=nika
Ryan Hunt <rhunt@eqrion.net>
parents: 470478
diff changeset
   637
      browserChild->SchedulePaint();
438931
94a87c720eee25ae57b47fba0b564de70c7b1741 Bug 1491798- Schedule repaint if WebRender is updated by tab move r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 438273
diff changeset
   638
    }
94a87c720eee25ae57b47fba0b564de70c7b1741 Bug 1491798- Schedule repaint if WebRender is updated by tab move r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 438273
diff changeset
   639
  }
387093
fef60dc3adecc4378456e6e73bb60eca28de9921 Bug 1404232 - Add WebRenderLayerManager::WrUpdated() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 387089
diff changeset
   640
}
fef60dc3adecc4378456e6e73bb60eca28de9921 Bug 1404232 - Add WebRenderLayerManager::WrUpdated() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 387089
diff changeset
   641
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   642
void WebRenderLayerManager::UpdateTextureFactoryIdentifier(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   643
    const TextureFactoryIdentifier& aNewIdentifier) {
342122
8f272d554787e096ae515ba635c3705a6b9b6bcf Bug 1331515 - More WR to Wr prefix conversion. r=gfx?
Nicolas Silva <nsilva@mozilla.com>
parents: 342121
diff changeset
   644
  WrBridge()->IdentifyTextureHost(aNewIdentifier);
341911
dc2b7e346fc28a9658ba01008710ff97cffe0e4b Bug 1321183 - Deliver TextureFactoryIdentifier r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341905
diff changeset
   645
}
dc2b7e346fc28a9658ba01008710ff97cffe0e4b Bug 1321183 - Deliver TextureFactoryIdentifier r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341905
diff changeset
   646
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   647
TextureFactoryIdentifier WebRenderLayerManager::GetTextureFactoryIdentifier() {
342122
8f272d554787e096ae515ba635c3705a6b9b6bcf Bug 1331515 - More WR to Wr prefix conversion. r=gfx?
Nicolas Silva <nsilva@mozilla.com>
parents: 342121
diff changeset
   648
  return WrBridge()->GetTextureFactoryIdentifier();
341911
dc2b7e346fc28a9658ba01008710ff97cffe0e4b Bug 1321183 - Deliver TextureFactoryIdentifier r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341905
diff changeset
   649
}
dc2b7e346fc28a9658ba01008710ff97cffe0e4b Bug 1321183 - Deliver TextureFactoryIdentifier r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341905
diff changeset
   650
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   651
void WebRenderLayerManager::SetTransactionIdAllocator(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   652
    TransactionIdAllocator* aAllocator) {
403220
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   653
  // When changing the refresh driver, the previous refresh driver may never
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   654
  // receive updates of pending transactions it's waiting for. So clear the
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   655
  // waiting state before assigning another refresh driver.
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   656
  if (mTransactionIdAllocator && (aAllocator != mTransactionIdAllocator)) {
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   657
    mTransactionIdAllocator->ClearPendingTransactions();
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   658
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   659
    // We should also reset the transaction id of the new allocator to previous
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   660
    // allocator's last transaction id, so that completed transactions for
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   661
    // previous allocator will be ignored and won't confuse the new allocator.
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   662
    if (aAllocator) {
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   663
      aAllocator->ResetInitialTransactionId(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   664
          mTransactionIdAllocator->LastTransactionId());
403220
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   665
    }
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   666
  }
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   667
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   668
  mTransactionIdAllocator = aAllocator;
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   669
}
c0a2f744ef5c3cbddcf915f7532860a3c466214f Bug 1434996 - Update WebRenderLayerManager::SetTransactionIdAllocator to match ClientLayerManager. r=sotaro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 402873
diff changeset
   670
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   671
TransactionId WebRenderLayerManager::GetLastTransactionId() {
418062
37746bbf1d1381346081e9606eca82ee4d83408d Bug 1437036 - Implement GetLastTransactionId in WebRenderLayerManager. r=hiro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 417939
diff changeset
   672
  return mLatestTransactionId;
37746bbf1d1381346081e9606eca82ee4d83408d Bug 1437036 - Implement GetLastTransactionId in WebRenderLayerManager. r=hiro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 417939
diff changeset
   673
}
37746bbf1d1381346081e9606eca82ee4d83408d Bug 1437036 - Implement GetLastTransactionId in WebRenderLayerManager. r=hiro
Kartikaya Gupta <kgupta@mozilla.com>
parents: 417939
diff changeset
   674
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   675
void WebRenderLayerManager::AddDidCompositeObserver(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   676
    DidCompositeObserver* aObserver) {
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   677
  if (!mDidCompositeObservers.Contains(aObserver)) {
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   678
    mDidCompositeObservers.AppendElement(aObserver);
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   679
  }
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   680
}
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   681
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   682
void WebRenderLayerManager::RemoveDidCompositeObserver(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   683
    DidCompositeObserver* aObserver) {
341914
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   684
  mDidCompositeObservers.RemoveElement(aObserver);
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   685
}
7c6afff0c35db7e480743d77da938e530bf4b4a5 Bug 1320864 - Add DidComposite handling r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 341911
diff changeset
   686
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   687
void WebRenderLayerManager::FlushRendering() {
361979
63cd7aaf05d865a5ffc030a3c336b4cec40f45f2 Bug 1363958 - Fix WebRenderLayerManager::FlushRendering() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 361246
diff changeset
   688
  CompositorBridgeChild* cBridge = GetCompositorBridgeChild();
63cd7aaf05d865a5ffc030a3c336b4cec40f45f2 Bug 1363958 - Fix WebRenderLayerManager::FlushRendering() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 361246
diff changeset
   689
  if (!cBridge) {
63cd7aaf05d865a5ffc030a3c336b4cec40f45f2 Bug 1363958 - Fix WebRenderLayerManager::FlushRendering() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 361246
diff changeset
   690
    return;
63cd7aaf05d865a5ffc030a3c336b4cec40f45f2 Bug 1363958 - Fix WebRenderLayerManager::FlushRendering() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 361246
diff changeset
   691
  }
63cd7aaf05d865a5ffc030a3c336b4cec40f45f2 Bug 1363958 - Fix WebRenderLayerManager::FlushRendering() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 361246
diff changeset
   692
  MOZ_ASSERT(mWidget);
63cd7aaf05d865a5ffc030a3c336b4cec40f45f2 Bug 1363958 - Fix WebRenderLayerManager::FlushRendering() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 361246
diff changeset
   693
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   694
  // If value of IsResizingNativeWidget() is nothing, we assume that resizing
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   695
  // might happen.
436341
ca89cc5c6a17a86ac36c59260b5870f6bd62b4f3 Bug 1486958 - Sync FlushRendering() only during resizing on windows r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 435325
diff changeset
   696
  bool resizing = mWidget && mWidget->IsResizingNativeWidget().valueOr(true);
ca89cc5c6a17a86ac36c59260b5870f6bd62b4f3 Bug 1486958 - Sync FlushRendering() only during resizing on windows r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 435325
diff changeset
   697
ca89cc5c6a17a86ac36c59260b5870f6bd62b4f3 Bug 1486958 - Sync FlushRendering() only during resizing on windows r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 435325
diff changeset
   698
  // Limit async FlushRendering to !resizing and Win DComp.
ca89cc5c6a17a86ac36c59260b5870f6bd62b4f3 Bug 1486958 - Sync FlushRendering() only during resizing on windows r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 435325
diff changeset
   699
  // XXX relax the limitation
ca89cc5c6a17a86ac36c59260b5870f6bd62b4f3 Bug 1486958 - Sync FlushRendering() only during resizing on windows r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 435325
diff changeset
   700
  if (WrBridge()->GetCompositorUseDComp() && !resizing) {
427570
94fe6b1becfa17fbc1e58667512f278b3c1fb2a1 Bug 1476876 - Make FlushRendering async if DComp is used on Windows with WebRender r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 427371
diff changeset
   701
    cBridge->SendFlushRenderingAsync();
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   702
  } else if (mWidget->SynchronouslyRepaintOnResize() ||
480648
2d7b154165c0d4513a979cca61e55f115a361b1f Bug 1561825 - Make layers.* static prefs follow the naming convention. r=KrisWright
Nicholas Nethercote <nnethercote@mozilla.com>
parents: 477808
diff changeset
   703
             StaticPrefs::layers_force_synchronous_resize()) {
361979
63cd7aaf05d865a5ffc030a3c336b4cec40f45f2 Bug 1363958 - Fix WebRenderLayerManager::FlushRendering() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 361246
diff changeset
   704
    cBridge->SendFlushRendering();
63cd7aaf05d865a5ffc030a3c336b4cec40f45f2 Bug 1363958 - Fix WebRenderLayerManager::FlushRendering() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 361246
diff changeset
   705
  } else {
63cd7aaf05d865a5ffc030a3c336b4cec40f45f2 Bug 1363958 - Fix WebRenderLayerManager::FlushRendering() r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 361246
diff changeset
   706
    cBridge->SendFlushRenderingAsync();
352760
c2d11e5e96d664e9c88384fe3c3dfbb600f225e8 Bug 1354474 - Add FlushRendering() and Composite() support to WebRenderLayerManager r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 350351
diff changeset
   707
  }
c2d11e5e96d664e9c88384fe3c3dfbb600f225e8 Bug 1354474 - Add FlushRendering() and Composite() support to WebRenderLayerManager r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 350351
diff changeset
   708
}
c2d11e5e96d664e9c88384fe3c3dfbb600f225e8 Bug 1354474 - Add FlushRendering() and Composite() support to WebRenderLayerManager r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 350351
diff changeset
   709
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   710
void WebRenderLayerManager::WaitOnTransactionProcessed() {
359325
33adaa3e80315b3883250b30b9a71a656ab36bc2 Bug 1364626. Ensure our transaction arrives at the compositor before asking the parent to paint. r=dvander
Jeff Muizelaar <jmuizelaar@mozilla.com>
parents: 359324
diff changeset
   711
  CompositorBridgeChild* bridge = GetCompositorBridgeChild();
33adaa3e80315b3883250b30b9a71a656ab36bc2 Bug 1364626. Ensure our transaction arrives at the compositor before asking the parent to paint. r=dvander
Jeff Muizelaar <jmuizelaar@mozilla.com>
parents: 359324
diff changeset
   712
  if (bridge) {
33adaa3e80315b3883250b30b9a71a656ab36bc2 Bug 1364626. Ensure our transaction arrives at the compositor before asking the parent to paint. r=dvander
Jeff Muizelaar <jmuizelaar@mozilla.com>
parents: 359324
diff changeset
   713
    bridge->SendWaitOnTransactionProcessed();
33adaa3e80315b3883250b30b9a71a656ab36bc2 Bug 1364626. Ensure our transaction arrives at the compositor before asking the parent to paint. r=dvander
Jeff Muizelaar <jmuizelaar@mozilla.com>
parents: 359324
diff changeset
   714
  }
33adaa3e80315b3883250b30b9a71a656ab36bc2 Bug 1364626. Ensure our transaction arrives at the compositor before asking the parent to paint. r=dvander
Jeff Muizelaar <jmuizelaar@mozilla.com>
parents: 359324
diff changeset
   715
}
33adaa3e80315b3883250b30b9a71a656ab36bc2 Bug 1364626. Ensure our transaction arrives at the compositor before asking the parent to paint. r=dvander
Jeff Muizelaar <jmuizelaar@mozilla.com>
parents: 359324
diff changeset
   716
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   717
void WebRenderLayerManager::SendInvalidRegion(const nsIntRegion& aRegion) {
352760
c2d11e5e96d664e9c88384fe3c3dfbb600f225e8 Bug 1354474 - Add FlushRendering() and Composite() support to WebRenderLayerManager r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 350351
diff changeset
   718
  // XXX Webrender does not support invalid region yet.
534081
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   719
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   720
#ifdef XP_WIN
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   721
  // When DWM is disabled, each window does not have own back buffer. They would
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   722
  // paint directly to a buffer that was to be displayed by the video card.
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   723
  // WM_PAINT via SendInvalidRegion() requests necessary re-paint.
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   724
  const bool needsInvalidate = !gfx::gfxVars::DwmCompositionEnabled();
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   725
#else
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   726
  const bool needsInvalidate = true;
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   727
#endif
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   728
  if (needsInvalidate && WrBridge()) {
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   729
    WrBridge()->SendInvalidateRenderedFrame();
bc49c7475f64fdbb09132ab4c085bdccc76f7959 Bug 1642839 - Implement WebRenderLayerManager::SendInvalidRegion() r=jrmuizel
sotaro <sotaro.ikeda.g@gmail.com>
parents: 530257
diff changeset
   730
  }
352760
c2d11e5e96d664e9c88384fe3c3dfbb600f225e8 Bug 1354474 - Add FlushRendering() and Composite() support to WebRenderLayerManager r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 350351
diff changeset
   731
}
c2d11e5e96d664e9c88384fe3c3dfbb600f225e8 Bug 1354474 - Add FlushRendering() and Composite() support to WebRenderLayerManager r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 350351
diff changeset
   732
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   733
void WebRenderLayerManager::ScheduleComposite() {
402733
Kartikaya Gupta <kgupta@mozilla.com>
parents: 400335
diff changeset
   734
  WrBridge()->SendScheduleComposite();
352760
c2d11e5e96d664e9c88384fe3c3dfbb600f225e8 Bug 1354474 - Add FlushRendering() and Composite() support to WebRenderLayerManager r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 350351
diff changeset
   735
}
c2d11e5e96d664e9c88384fe3c3dfbb600f225e8 Bug 1354474 - Add FlushRendering() and Composite() support to WebRenderLayerManager r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 350351
diff changeset
   736
392157
4a74a02c20ba4649bfdb5bdd49f5907c6f22b2d5 Bug 1411472 - Add support of PersistentBufferProviderShared r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 391829
diff changeset
   737
already_AddRefed<PersistentBufferProvider>
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   738
WebRenderLayerManager::CreatePersistentBufferProvider(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   739
    const gfx::IntSize& aSize, gfx::SurfaceFormat aFormat) {
568767
6e3c2a39bf3272bd0be8c1365eb39e2be6f87ef1 Bug 1692894 p1: Don't create devices for canvas when remote canvas is in use. r=jrmuizel
Bob Owen <bobowencode@gmail.com>
parents: 568646
diff changeset
   740
  // Ensure devices initialization for canvas 2d if not remote. The devices are
6e3c2a39bf3272bd0be8c1365eb39e2be6f87ef1 Bug 1692894 p1: Don't create devices for canvas when remote canvas is in use. r=jrmuizel
Bob Owen <bobowencode@gmail.com>
parents: 568646
diff changeset
   741
  // lazily initialized with WebRender to reduce memory usage.
6e3c2a39bf3272bd0be8c1365eb39e2be6f87ef1 Bug 1692894 p1: Don't create devices for canvas when remote canvas is in use. r=jrmuizel
Bob Owen <bobowencode@gmail.com>
parents: 568646
diff changeset
   742
  if (!gfxPlatform::UseRemoteCanvas()) {
6e3c2a39bf3272bd0be8c1365eb39e2be6f87ef1 Bug 1692894 p1: Don't create devices for canvas when remote canvas is in use. r=jrmuizel
Bob Owen <bobowencode@gmail.com>
parents: 568646
diff changeset
   743
    gfxPlatform::GetPlatform()->EnsureDevicesInitialized();
6e3c2a39bf3272bd0be8c1365eb39e2be6f87ef1 Bug 1692894 p1: Don't create devices for canvas when remote canvas is in use. r=jrmuizel
Bob Owen <bobowencode@gmail.com>
parents: 568646
diff changeset
   744
  }
451078
9a5ef8fd69c9b0c2210c9ef491217ddb45d3a76d Bug 1513308 - Lazily initialize DirectX devices for WebRender r=mattwoodrow
sotaro <sotaro.ikeda.g@gmail.com>
parents: 449634
diff changeset
   745
477802
258c6c1996568b3e7d3ca442a2d87df3f60a4b32 Bug 1464032 Part 6: Add remote canvas pref and refactor TextuteData creation to use it. r=mattwoodrow
Bob Owen <bobowencode@gmail.com>
parents: 476237
diff changeset
   746
  RefPtr<PersistentBufferProvider> provider =
258c6c1996568b3e7d3ca442a2d87df3f60a4b32 Bug 1464032 Part 6: Add remote canvas pref and refactor TextuteData creation to use it. r=mattwoodrow
Bob Owen <bobowencode@gmail.com>
parents: 476237
diff changeset
   747
      PersistentBufferProviderShared::Create(aSize, aFormat,
258c6c1996568b3e7d3ca442a2d87df3f60a4b32 Bug 1464032 Part 6: Add remote canvas pref and refactor TextuteData creation to use it. r=mattwoodrow
Bob Owen <bobowencode@gmail.com>
parents: 476237
diff changeset
   748
                                             AsKnowsCompositor());
258c6c1996568b3e7d3ca442a2d87df3f60a4b32 Bug 1464032 Part 6: Add remote canvas pref and refactor TextuteData creation to use it. r=mattwoodrow
Bob Owen <bobowencode@gmail.com>
parents: 476237
diff changeset
   749
  if (provider) {
258c6c1996568b3e7d3ca442a2d87df3f60a4b32 Bug 1464032 Part 6: Add remote canvas pref and refactor TextuteData creation to use it. r=mattwoodrow
Bob Owen <bobowencode@gmail.com>
parents: 476237
diff changeset
   750
    return provider.forget();
392157
4a74a02c20ba4649bfdb5bdd49f5907c6f22b2d5 Bug 1411472 - Add support of PersistentBufferProviderShared r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 391829
diff changeset
   751
  }
477802
258c6c1996568b3e7d3ca442a2d87df3f60a4b32 Bug 1464032 Part 6: Add remote canvas pref and refactor TextuteData creation to use it. r=mattwoodrow
Bob Owen <bobowencode@gmail.com>
parents: 476237
diff changeset
   752
591057
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   753
  return WindowRenderer::CreatePersistentBufferProvider(aSize, aFormat);
392157
4a74a02c20ba4649bfdb5bdd49f5907c6f22b2d5 Bug 1411472 - Add support of PersistentBufferProviderShared r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 391829
diff changeset
   754
}
4a74a02c20ba4649bfdb5bdd49f5907c6f22b2d5 Bug 1411472 - Add support of PersistentBufferProviderShared r=nical
sotaro <sotaro.ikeda.g@gmail.com>
parents: 391829
diff changeset
   755
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   756
void WebRenderLayerManager::ClearAsyncAnimations() {
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   757
  mStateManager.ClearAsyncAnimations();
447522
944b5385a34248376ae0d92beabf4bcb8a045567 Bug 1504699 - Part 2. Add plumbing to WebRenderLayerManager to pass on frame released messages. r=nical
Andrew Osmond <aosmond@mozilla.com>
parents: 447335
diff changeset
   758
}
944b5385a34248376ae0d92beabf4bcb8a045567 Bug 1504699 - Part 2. Add plumbing to WebRenderLayerManager to pass on frame released messages. r=nical
Andrew Osmond <aosmond@mozilla.com>
parents: 447335
diff changeset
   759
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   760
void WebRenderLayerManager::WrReleasedImages(
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   761
    const nsTArray<wr::ExternalImageKeyPair>& aPairs) {
529208
11abfe8fb1d97edf54cc580c9e65b4afab1e3685 Bug 1622360 - Downgrade mStateManagers. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com>
parents: 529207
diff changeset
   762
  mStateManager.WrReleasedImages(aPairs);
447522
944b5385a34248376ae0d92beabf4bcb8a045567 Bug 1504699 - Part 2. Add plumbing to WebRenderLayerManager to pass on frame released messages. r=nical
Andrew Osmond <aosmond@mozilla.com>
parents: 447335
diff changeset
   763
}
944b5385a34248376ae0d92beabf4bcb8a045567 Bug 1504699 - Part 2. Add plumbing to WebRenderLayerManager to pass on frame released messages. r=nical
Andrew Osmond <aosmond@mozilla.com>
parents: 447335
diff changeset
   764
543509
aaa270392a4a33ae411f7b4f462b7f615b52ac16 Bug 1251612 - Support the GetFrameUniformity API in content processes. r=botond,froydnj
Kartikaya Gupta <kgupta@mozilla.com>
parents: 543150
diff changeset
   765
void WebRenderLayerManager::GetFrameUniformity(FrameUniformityData* aOutData) {
aaa270392a4a33ae411f7b4f462b7f615b52ac16 Bug 1251612 - Support the GetFrameUniformity API in content processes. r=botond,froydnj
Kartikaya Gupta <kgupta@mozilla.com>
parents: 543150
diff changeset
   766
  WrBridge()->SendGetFrameUniformity(aOutData);
aaa270392a4a33ae411f7b4f462b7f615b52ac16 Bug 1251612 - Support the GetFrameUniformity API in content processes. r=botond,froydnj
Kartikaya Gupta <kgupta@mozilla.com>
parents: 543150
diff changeset
   767
}
aaa270392a4a33ae411f7b4f462b7f615b52ac16 Bug 1251612 - Support the GetFrameUniformity API in content processes. r=botond,froydnj
Kartikaya Gupta <kgupta@mozilla.com>
parents: 543150
diff changeset
   768
591057
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   769
/*static*/
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   770
void WebRenderLayerManager::LayerUserDataDestroy(void* data) {
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   771
  delete static_cast<LayerUserData*>(data);
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   772
}
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   773
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   774
UniquePtr<LayerUserData> WebRenderLayerManager::RemoveUserData(void* aKey) {
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   775
  UniquePtr<LayerUserData> d(static_cast<LayerUserData*>(
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   776
      mUserData.Remove(static_cast<gfx::UserDataKey*>(aKey))));
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   777
  return d;
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   778
}
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   779
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   780
std::unordered_set<ScrollableLayerGuid::ViewID>
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   781
WebRenderLayerManager::ClearPendingScrollInfoUpdate() {
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   782
  std::unordered_set<ScrollableLayerGuid::ViewID> scrollIds(
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   783
      mPendingScrollUpdates.Keys().cbegin(),
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   784
      mPendingScrollUpdates.Keys().cend());
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   785
  mPendingScrollUpdates.Clear();
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   786
  return scrollIds;
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   787
}
1b49e7328ae43c6565d167f4c391430575097fd3 Bug 1727682 - Make WebRenderLayerManager not inherit LayerManager. r=jrmuizel
Matt Woodrow <mwoodrow@mozilla.com>
parents: 591044
diff changeset
   788
448947
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   789
}  // namespace layers
6f3709b3878117466168c40affa7bca0b60cf75b Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
Sylvestre Ledru <sledru@mozilla.com>
parents: 447896
diff changeset
   790
}  // namespace mozilla