Commit Graph

498 Commits

Author SHA1 Message Date
Sunny Sidhu
cfa8942015 Bug 1220873 - Make Layer::mVisibleRegion a LayerIntRegion. r=botond
--HG--
extra : source : dc46048f7a9e9cc008c97e2d9e0a100944743055
extra : amend_source : 63783bc076e5969ebacdc8c74f9b5194a1891d9e
2015-11-29 02:07:55 -05:00
Botond Ballo
7bbca96988 Bug 1208829 - Use the effective visible region to calculate the intermediate surface size. r=mstange
--HG--
extra : source : d0a5d70aff5c4f7597be348747186d029f322d12
2015-11-19 15:43:44 -05:00
Botond Ballo
e1d98163ba Bug 1168263 - Annotate layers with a perspective transform. r=mattwoodrow 2015-11-02 17:38:08 -05:00
Botond Ballo
6a70e1aa18 Bug 1222661 - Replace FromUntyped(obj) calls with FromUnknown*(obj). r=nical
--HG--
extra : rebase_source : c1afe8560b838e1a3be0ce50847861b1815d3dc9
extra : source : d649f163c825736efaf3ac3ad73040beeb48a6ef
2015-11-09 18:22:25 -05:00
Kartikaya Gupta
733738df2c Bug 1214267 - Send the side to which fixed-pos items are attached so that we can move them in the compositor more correctly when the viewport size is changing. r=mattwoodrow
--HG--
extra : commitid : ALBL7XCsNm0
2015-11-11 10:07:29 -05:00
Nicholas Nethercote
d932f3e261 Bug 1219476 (part 3) - Replace PRLogModuleInfo usage with LazyLogModule in gfx/. r=erahm.
--HG--
extra : rebase_source : 58323047fe8b571cd312120acb6c9adb8b7a3b2c
2015-10-29 15:44:31 -07:00
David Anderson
8dd3b854fb Compute the compositor's damage region before composites, rather than layers updates. (bug 1217560, r=mattwoodrow) 2015-10-27 10:15:02 -07:00
Thinker K.F. Li
fd72ecbc34 Bug 1214212 - Remove clips from separator transform items. r=roc 2015-10-22 23:29:00 -04:00
Nathan Froyd
9f16f39c05 Bug 1217662 - part 6 - remove Layers.h #include from FrameListBuilder.h; r=mattwoodrow
This change necessitates a few other header changes around the tree:
either places that we relying on FrameLayerBuilder.h to #include
ImageLayers.h for them, or places that were bootlegging headers from
ImageLayers.h.
2015-10-22 17:02:14 -04:00
Nathan Froyd
6ce5981d38 Bug 1217662 - part 4 - move {LayerManager,Layer}::RemoveUserData out-of-line; r=mattwoodrow
Having these out-of-line means that we don't have to have
LayerUserData's destructor in scope for the destruction of the local
nsAutoPtr.  This change will enable us to forward-declare LayerUserData
in Layers.h and thereby encourage people to use the correct header for
LayerUserData.
2015-10-22 16:57:29 -04:00
Nathan Froyd
735e488da3 Bug 1217662 - part 2 - move mozilla::layers::LayerUserData to a separate header; r=mattwoodrow
Having to include all of Layers.h just to get at the definition of
LayerUserData is inconvenient, especially as most of the interesting
things in Layers.h can be forward-declared.  Let's move LayerUserData to
its own header, so clients can include a small header for that,
forward-declare anything else they need from Layers.h, and reduce header
bloat.
2015-10-22 16:04:35 -04:00
Nathan Froyd
7699d5d9c4 Bug 1217662 - part 1 - make LayerManagerUserDataDestroy a static function of LayerManager; r=mattwoodrow
LayerManagerUserDataDestroy is a static function in Layers.h that we
only ever take a pointer to, to use it as a destruction function for
gfx::UserData.  It's *possible* the compiler is smart enough to call it
directly, rather than through the function pointer stored in
gfx::UserData, but that seems highly unlikely.  And
LayerManagerUserDataDestroy does a virtual call anyway, so it's not as
though it being inlined is particularly important.

All of this is to say that we don't need to define
LayerManagerUserDataDestroy in Layers.h; defining it out-of-line will be
just as effective.  Defining it out-of-line also means that we don't
need the definition of LayerUserData anywhere in Layers.h, and we can
move LayerUserData to a separate header.
2015-10-22 15:39:30 -04:00
Phil Ringnalda
0f3cf4490c Back out changeset 02d17c84afff (bug 1214212) for (mostly) transform-3d reftest failures
CLOSED TREE
2015-10-21 20:22:45 -07:00
Thinker K.F. Li
517b105b08 Bug 1214212 - Remove clips from separator transform items. r=roc 2015-10-21 03:35:00 -04:00
Nathan Froyd
01583602a9 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi

--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 01:24:48 -04:00
Nathan Froyd
583afa0965 Bug 1207245 - part 3 - switch all uses of mozilla::RefPtr<T> to nsRefPtr<T>; r=ehsan
This commit was generated using the following script, executed at the
top level of a typical source code checkout.

 # Don't modify select files in mfbt/ because it's not worth trying to
 # tease out the dependencies currently.
 #
 # Don't modify anything in media/gmp-clearkey/0.1/ because those files
 # use their own RefPtr, defined in their own RefCounted.h.
find . -name '*.cpp' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    grep -v 'mfbt/RefPtr.h' | \
    grep -v 'mfbt/nsRefPtr.h' | \
    grep -v 'mfbt/RefCounted.h' | \
    grep -v 'media/gmp-clearkey/0.1/' | \
    xargs perl -p -i -e '
 s/mozilla::RefPtr/nsRefPtr/g; # handle declarations in headers
 s/\bRefPtr</nsRefPtr</g; # handle local variables in functions
 s#mozilla/RefPtr.h#mozilla/nsRefPtr.h#; # handle #includes
 s#mfbt/RefPtr.h#mfbt/nsRefPtr.h#;       # handle strange #includes
'

 # |using mozilla::RefPtr;| is OK; |using nsRefPtr;| is invalid syntax.
find . -name '*.cpp' -o -name '*.mm' | xargs sed -i -e '/using nsRefPtr/d'

 # RefPtr.h used |byRef| for dealing with COM-style outparams.
 # nsRefPtr.h uses |getter_AddRefs|.
 # Fixup that mismatch.
find . -name '*.cpp' -o -name '*.h'| \
    xargs perl -p -i -e 's/byRef/getter_AddRefs/g'
2015-10-18 00:40:10 -04:00
Morris Tseng
a8eab58fba Bug 709490 - Part 7: If layer is not available, fallback to BasicCanvasLayer. r=roc
--HG--
extra : rebase_source : cc7761567d60d652b8d0bc9cab04cf310ef100e3
2015-10-12 11:21:03 +08:00
Morris Tseng
acf60f0d3e Bug 709490 - Part 1: Let ImageBridge transfer CanvasClient async. r=nical
Thanks Jon Morton [:jmorton] (jonanin@gmail.com) for polishing patches.

--HG--
extra : rebase_source : f4ec56dc106357e30660343166ff51e7d9dc0c62
2015-10-12 11:21:02 +08:00
Nicholas Nethercote
0f5722f4da Bug 1211324 (part 5) - Remove GraphicsFilter and gfxGraphicsFilter. r=mattwoodrow. 2015-10-05 17:18:10 -07:00
Nicholas Nethercote
4fc2610c3c Bug 1211324 (part 4) - Replace GraphicsFilter constants with gfx::Filter equivalents. r=mattwoodrow.
The conversion is as follows:

- GraphicsFilter::FILTER_NEAREST == gfx::Filter::POINT
- GraphicsFilter::FILTER_GOOD    == gfx::Filter::GOOD
- GraphicsFilter::FILTER_BEST    == gfx::Filter::LINEAR

Also typedef GraphicsFilter to gfx::Filter; this will be removed in the next
patch.

These changes mean ToFilter() and ThebesFilter() are no longer needed.
2015-10-05 17:12:46 -07:00
Wes Kocher
0628e22f00 Merge m-c to inbound, a=merge CLOSED TREE 2015-10-05 13:11:26 -07:00
Jeff Muizelaar
5f0bc91be5 Bug 1211504. Remove unused member from RefLayer.
Indirectly caught by coverity

--HG--
extra : rebase_source : 95772cfe2d54d532b62e5fe23117c0d63bb1772f
2015-10-05 11:42:53 -04:00
Wes Kocher
c1750b75c7 Backed out 11 changesets (bug 709490) for webgl-color-test.html failures a=backout
Backed out changeset fc04c5d43550 (bug 709490)
Backed out changeset cd8f9410d335 (bug 709490)
Backed out changeset 6e687c9143c1 (bug 709490)
Backed out changeset 9b20f2c833c4 (bug 709490)
Backed out changeset f9d130aea88e (bug 709490)
Backed out changeset fc513b410949 (bug 709490)
Backed out changeset acf6220b431a (bug 709490)
Backed out changeset 9bceaf913791 (bug 709490)
Backed out changeset 37fba20111e2 (bug 709490)
Backed out changeset 2285ce1596b8 (bug 709490)
Backed out changeset fb4e09920569 (bug 709490)
2015-10-05 08:28:25 -07:00
Morris Tseng
861bb61b91 Bug 709490 - Part 7: If layer is not available, fallback to BasicCanvasLayer. r=roc
--HG--
extra : rebase_source : bfdf6a97f372a3a5a2ecdd4a3c216ec64ec98e84
2015-10-05 10:50:16 +08:00
Morris Tseng
298e6642c3 Bug 709490 - Part 1: Let ImageBridge transfer CanvasClient async. r=nical
Thanks Jon Morton [:jmorton] (jonanin@gmail.com) for polishing patches.

--HG--
extra : rebase_source : 9833dd57592081737ce74ad5b6ba8441a243ca0b
2015-10-05 10:50:15 +08:00
David Anderson
6f796a3c17 Treat mix-blend-mode layers as transparent for occlusion culling. (bug 1207041, r=mstange)
--HG--
extra : rebase_source : 33afa0174cac1cdb4b83b2e695532b36984974cd
2015-09-30 00:02:00 -07:00
Wes Kocher
8631de9c2b Backed out 13 changesets (bug 709490) for android webgl-color-test.html failures
Backed out changeset 5be7514914b6 (bug 709490)
Backed out changeset 04b6f94fbe8a (bug 709490)
Backed out changeset 00c0e85dd8cd (bug 709490)
Backed out changeset 221385b7b81a (bug 709490)
Backed out changeset ecc38c18734f (bug 709490)
Backed out changeset 22878c936384 (bug 709490)
Backed out changeset 0edcbb60eee3 (bug 709490)
Backed out changeset 5feceec2014b (bug 709490)
Backed out changeset 835b655cb873 (bug 709490)
Backed out changeset 6fbb4a3f8cf7 (bug 709490)
Backed out changeset a5f8646fa156 (bug 709490)
Backed out changeset 2ae1386916b3 (bug 709490)
Backed out changeset 6b29a2a0a8fb (bug 709490)
2015-09-29 08:57:36 -07:00
Morris Tseng
c5927f2dae Bug 709490 - Part 7: If layer is not available, fallback to BasicCanvasLayer, r=roc 2015-09-29 11:51:25 +01:00
Morris Tseng
6c605d106d Bug 709490 - Part 1: Let ImageBridge transfer CanvasClient async, r=nical 2015-09-29 11:51:23 +01:00
Nicholas Nethercote
d0c4a9db1b Bug 1208300 (part 4) - Remove gfxRGBA and some related things. r=jwatt.
Hooray!

--HG--
extra : rebase_source : d691b55eef5a8655aa98b81b5398452a5ebe860d
2015-09-24 19:24:16 -07:00
Nicholas Nethercote
89189f2ced Bug 1208283 (part 2) - Change ColorLayer::mColor, ColorLayerProperties::mColor, ReadbackLayer::mBackgroundColor from gfxRBGA to gfx::Color. r=jwatt.
This avoids some gfxRGBA-to-Color conversions.

--HG--
extra : rebase_source : ba62db5204301e4ab57f05b9f9901f986f5b09aa
2015-09-24 18:16:45 -07:00
Nicholas Nethercote
342466f878 Bug 1208345 - Remove gfxContext::GraphicsOperator. r=jwatt.
Also...

- Rename various "operator" identifiers as "op" to match |CompositionOp|.

- Rename |nsBackgroundLayerState::mCompositingOp| as |mCompositionOp| to match
  |CompositionOp|.

- Remove some deprecated functions that are no longer needed.

--HG--
extra : rebase_source : 74e9b6eecf6f442e27cc18fd4ae6f668a45188aa
2015-09-24 22:38:58 -07:00
Thinker K.F. Li
e1e17a72cb Bug 1097464 - Part 6: Handle preserves-3d by compositor. r=roc
Remove WrapPreserve3DList() and replaced it by creating a
nsDisplayTransform item for each transformed frame.

 - Add an additional item for each top frame extending 3D context to
   separate consequence contexts.

 - Effective transform of a layer is the accumulation of ancestors in
   the same 3D context.

 - The layers creating new context and extended by children need a
   temporary buffer if it's effective transform is not 2D.

 - Clip rects are accumulated along the context chain.

 - Visible rects of items are computed from dirty regions of the frame
   creating the context and accumulated transforms.

 - Bounds of items are computed from accumulated transforms and
   accumulated bounds of the descent frames.

 - Backface hidden is handled by compositor and BasicLayerManager.

--HG--
extra : rebase_source : 1a894b057a117a8520898c9f83308d92c122b180
2015-09-17 03:31:00 +02:00
Thinker K.F. Li
46b545727a Bug 1097464 - Part 4: Fix preserve3d wording for layer flags. r=roc
--HG--
extra : rebase_source : 3471b292ead698cafdd5a37bd3a6ed7894c2ca44
2015-09-17 03:31:00 +02:00
Thinker K.F. Li
568e7ca86e Bug 1097464 - Part 2 - Snap translation for 3d transforms. r=roc
--HG--
extra : rebase_source : ec019b2aff7aa4d62d1ce7bfcc389cdce0018246
2015-09-17 03:31:00 +02:00
Carsten "Tomcat" Book
f7534678df Backed out 6 changesets (bug 1097464) for causing OS X 10.10 Reftest Errors
Backed out changeset fbf63ce1ba88 (bug 1097464)
Backed out changeset fdaf4cfa6707 (bug 1097464)
Backed out changeset 727ebd9f744a (bug 1097464)
Backed out changeset 03f03a776042 (bug 1097464)
Backed out changeset 5ec6364b87d7 (bug 1097464)
Backed out changeset 47d056b3af7f (bug 1097464)

--HG--
extra : rebase_source : e2da133b489e4adba373303dad6e559826927e19
2015-09-17 16:24:43 +02:00
Jamie Nicol
a7a276263d Bug 1200729 - Recompute FrameLayerBuilder item visibility if dirty region changes. r=mwoodrow
Make the FrameLayerBuilder remember for what region it has calculated
display item visibility, then recompute the visibility whenever the
dirty region it is passed to DrawPaintedLayer changes.

This means that the caller does not have to know the entire dirty region
that will be drawn for the transaction, but we can still optimise cases
where it knows some of the dirty region in advance.

This fixes a regression where MultiTiledContentClient's low-res display
port would not be painted if a smaller region of its high-res buffer had
already been painted that transaction, since the FrameLayerBuilder
had decided that most of the larger low-res region was invisible.
2015-09-15 14:41:42 +01:00
Thinker K.F. Li
76109f93c4 Bug 1097464 - Part 6 - Handle preserves-3d by compositor. r=roc
Remove WrapPreserve3DList() and replaced it by creating a
nsDisplayTransform item for each transformed frame.

 - Add an additional item for each top frame extending 3D context to
   separate consequence contexts.

 - Effective transform of a layer is the accumulation of ancestors in
   the same 3D context.

 - The layers creating new context and extended by children need a
   temporary buffer if it's effective transform is not 2D.

 - Clip rects are accumulated along the context chain.

 - Visible rects of items are computed from dirty regions of the frame
   creating the context and accumulated transforms.

 - Bounds of items are computed from accumulated transforms and
   accumulated bounds of the descent frames.

 - Backface hidden is handled by compositor and BasicLayerManager.
2015-09-17 03:31:00 +02:00
Thinker K.F. Li
577d814813 Bug 1097464 - Part 4 - Fix preserve3d wording for layer flags. r=roc 2015-09-17 03:31:00 +02:00
Thinker K.F. Li
88a510d1f5 Bug 1097464 - Part 2 - Snap translation for 3d transforms. r=roc 2015-09-17 03:31:00 +02:00
Botond Ballo
a22ee7711a Bug 1166301 - Store a flag on Layer to tell fixed background layers apart from fixed position layers. r=mattwoodrow
--HG--
extra : rebase_source : eaad2e8c7f85f20cc691353d9675611eee4733ee
extra : source : 33b55c6b3a48e3e9a2f19f498f56084d6905dfc1
2015-09-04 17:26:33 -04:00
Kartikaya Gupta
056c55b10f Bug 1180295 - Rip out call to setContentDocumentFixedPositionMargins. r=rbarker
--HG--
extra : commitid : 7uU6xgPVZom
2015-08-18 14:27:18 -04:00
Markus Stange
6fab3abcb1 Bug 1187804 - Annotate fixed-position layers with the scroll id of the scroll frame that they are fixed with respect to. r=mattwoodrow
--HG--
extra : commitid : GjQ1Npqd8Ss
2015-08-17 19:44:42 -04:00
CJ Ku
009a82453e Bug 1061393 - Export display list info to layer scope viewer. r=kamidphish 2015-08-03 02:11:00 -04:00
Jamie Nicol
3e0de12cde Bug 1187619 - Only optmimize FrameLayerBuilder visibility calculations if correct. r=mattwoodrow
Bug 1176077 introduced the parameter aDirtyRegion to
DrawPaintedLayerCallback, which allows the callback to recompute the
visibility of all items to be painted in that transaction in a single
go. However, this parameter can not always be determined correctly
when using RotatedBuffer, and using an incorrect value was causing
graphical glitches.

Make the parameter optional, and on null values do not perform the
optimisation. Pass null from ClientPaintedLayer, which uses
RotatedBuffer and was causing problems, but continue to pass the
correct value from other Layer implementations. This optimisation was
most important for tiled layers using progressive paint, so this is
okay.
2015-08-03 04:07:00 -04:00
Vladimir Vukicevic
7cbcb3db2b Bug 1179944, [webvr] support Oculus 0.6.0 runtime and rendering; r=mstange
---
 gfx/2d/Quaternion.h                              |  10 +
 gfx/layers/Layers.h                              |   6 +-
 gfx/layers/composite/ContainerLayerComposite.cpp | 161 +++++++---
 gfx/layers/composite/ContainerLayerComposite.h   |   3 +
 gfx/thebes/gfxPrefs.h                            |   2 +
 gfx/vr/gfxVR.cpp                                 |  56 ++++
 gfx/vr/gfxVR.h                                   |  37 +++
 gfx/vr/gfxVRCardboard.cpp                        |  54 +---
 gfx/vr/gfxVROculus.cpp                           | 367 +++++++++++++++--------
 gfx/vr/gfxVROculus.h                             |  14 +-
 gfx/vr/moz.build                                 |  10 +
 gfx/vr/ovr_capi_dynamic.h                        | 261 +++++++++++-----
 modules/libpref/init/all.js                      |   3 +
 13 files changed, 694 insertions(+), 290 deletions(-)
2015-07-02 11:58:24 -04:00
Vladimir Vukicevic
7ca338088b Bug 1179933, add Layer::ReplaceEffectiveTransform for temporary transform changes; r=mstange
---
 gfx/layers/Layers.h | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
2015-05-19 13:56:31 -04:00
Matt Woodrow
71c406b6e9 Bug 1180326 - Part 6: Use SingleTiledContentClient for non-scrollable layers on b2g and OSX. r=jrmuizel
--HG--
extra : rebase_source : 82e5be89cedaac9c4203886b595da960bfad1f58
2015-07-29 12:03:01 -04:00
Jamie Nicol
5044fbd3c9 Bug 1176077 - Only recompute PaintedLayer item visibility when display list has changed. r=mattwoodrow
FrameLayerManager::RecomputeItemsVisibility() was being called on every
call to FrameLayerBuilder::DrawPaintedLayer(), each time for the region
to be painted by that paint call. This is inefficient when progressive
paint is enabled. Change it so that we compute the visibility of all the
layer's items within the total region to be painted, but only on the
first paint after the display list has been modified.
2015-07-21 09:19:25 +01:00
Ting-Yu Lin
acb06224cc Bug 1183085 - Remove EndConstruction() from layer documentation; r=roc
EndConstruction() was removed in bug 564993.

--HG--
extra : commitid : JCXdGcjpvq3
extra : rebase_source : 2b62f813fb3e4d846a242ca47f26f79e96e1c181
2015-07-13 21:44:11 +08:00