Commit Graph

53 Commits

Author SHA1 Message Date
Jean-Yves Avenard
de19fb7f7e Bug 1543359 - P6. Add backend for color range information. r=mattwoodrow.
Add code for YCbCr buffer and IOSurface backend.

Differential Revision: https://phabricator.services.mozilla.com/D27213

--HG--
extra : moz-landing-system : lando
2019-07-26 08:45:31 +00:00
Narcis Beleuzu
e84980d8b1 Backed out 15 changesets (bug 1543359) for wrench bustages on image.rs . CLOSED TREE
Backed out changeset 548006270186 (bug 1543359)
Backed out changeset c9585e9d9f3c (bug 1543359)
Backed out changeset 1c7ca95a2a9b (bug 1543359)
Backed out changeset d742d80b892f (bug 1543359)
Backed out changeset 210eee703fd9 (bug 1543359)
Backed out changeset 4eb933d55d88 (bug 1543359)
Backed out changeset fb9b71ed9f4b (bug 1543359)
Backed out changeset 98b968443458 (bug 1543359)
Backed out changeset a85bd4691bea (bug 1543359)
Backed out changeset b576317853e9 (bug 1543359)
Backed out changeset 095bca5c9b1a (bug 1543359)
Backed out changeset 48eb0ebf9f2e (bug 1543359)
Backed out changeset b22b0eb708b8 (bug 1543359)
Backed out changeset 52187d9320b1 (bug 1543359)
Backed out changeset fa6792c1c2e8 (bug 1543359)
2019-07-26 11:40:33 +03:00
Jean-Yves Avenard
37515d5cc9 Bug 1543359 - P6. Add backend for color range information. r=mattwoodrow.
Add code for YCbCr buffer and IOSurface backend.

Differential Revision: https://phabricator.services.mozilla.com/D27213

--HG--
extra : moz-landing-system : lando
2019-07-26 06:13:37 +00:00
Cosmin Sabou
ae7e8fbf55 Backed out 14 changesets (bug 1543359) for causing build bustages. CLOSED TREE
Backed out changeset 87c99ef85813 (bug 1543359)
Backed out changeset cd0afc5758ba (bug 1543359)
Backed out changeset 101ac87ff017 (bug 1543359)
Backed out changeset 348e748e3451 (bug 1543359)
Backed out changeset d9e937f5caf4 (bug 1543359)
Backed out changeset 2f4eb6501552 (bug 1543359)
Backed out changeset 0d316ef8c668 (bug 1543359)
Backed out changeset bf238b58c694 (bug 1543359)
Backed out changeset 496f206d03d6 (bug 1543359)
Backed out changeset 7c3a1f23baa8 (bug 1543359)
Backed out changeset 90fff717198b (bug 1543359)
Backed out changeset b2ce591ca398 (bug 1543359)
Backed out changeset a63968f077e3 (bug 1543359)
Backed out changeset ca660ab1e0c1 (bug 1543359)
2019-07-26 07:39:11 +03:00
Jean-Yves Avenard
63be56621d Bug 1543359 - P6. Add backend for color range information. r=mattwoodrow.
Add code for YCbCr buffer and IOSurface backend.

Differential Revision: https://phabricator.services.mozilla.com/D27213

--HG--
extra : moz-landing-system : lando
2019-07-22 08:24:30 +00:00
Jean-Yves Avenard
3ae43eb506 Bug 1493898 - P6. Move YUVColorSpace definition in the gfx namespace. r=mattwoodrow.
YUVColorSpace is inseparable from the bit depth as the matrix coefficients to be calculated need the bit depth information.

So let's put the two types together. gfx namespace also makes more sense as that's where we find IntRect, IntSize and other.

The extent of the changes highlight how much similar data structures are duplicated across the code, to the point it's scary.

Differential Revision: https://phabricator.services.mozilla.com/D25347

--HG--
extra : moz-landing-system : lando
2019-04-11 12:41:33 +00:00
Markus Stange
baea6b435f Bug 1479145 - Give RGB textures a 32-byte aligned stride on macOS in order to improve texture upload efficiency on certain drivers. r=mattwoodrow
In particular, it looks like this alignment is required by the Intel driver on
macOS if you want to avoid CPU copies.

It was already known that the efficiency gains from client storage only
materialize if you follow certain restrictions:
 - The textures need to use the TEXTURE_RECTANGLE_ARB texture target.
 - The textures' format, internalFormat and type need to be chosen from a small
   list of supported configurations. Unsupported configurations will trigger
   format conversions on the CPU.
 - The GL_TEXTURE_STORAGE_HINT_APPLE may need to be set to shared or cached.
 - glTextureRangeAPPLE may or may not make a difference.

It now appears that the stride alignment is another requirement:

When uploading textures which otherwise comply with the above requirements, the
Intel driver will still make copies using the CPU if the texture's stride is not
32-byte aligned. These CPU copies are reflected in a high CPU usage (as observed
in Activity Monitor) and they show up in profiles as time spent inside
_platform_memmove under glrUpdateTexture.

However, when uploading 32-byte stride aligned textures which comply with the
above requirements, this CPU usage goes away. There might still be hardware
copies behind the scenes, but they no longer take up CPU time.

Differential Revision: https://phabricator.services.mozilla.com/D25316

--HG--
extra : moz-landing-system : lando
2019-03-29 20:11:12 +00:00
Gurzau Raul
fa62ace3f1 Backed out changeset b64006992c1c (bug 1479145) for failing at /client/CanvasClient.cpp on a CLOSED TREE. 2019-03-29 06:16:14 +02:00
Markus Stange
058a2fee49 Bug 1479145 - Give RGB textures a 32-byte aligned stride in order to improve texture upload efficiency on certain drivers. r=mattwoodrow
In particular, it looks like this alignment is required by the Intel driver on
macOS if you want to avoid CPU copies.

It was already known that the efficiency gains from ClientStorage only
materialize if you follow certain restrictions:
 - The textures need to use the TEXTURE_RECTANGLE_ARB texture target.
 - The textures' format, internalFormat and type need to be chosen from a small
   list of supported configurations. Unsupported configurations will trigger
   format conversions on the CPU.
 - The GL_TEXTURE_STORAGE_HINT_APPLE may need to be set to shared or cached.
 - glTextureRangeAPPLE may or may not make a difference.

It now appears that the stride alignment is another requirement:

When uploading textures which otherwise comply with the above requirements, the
Intel driver will still make copies using the CPU if the texture's stride is not
32-byte aligned. These CPU copies are reflected in a high CPU usage (as observed
in Activity Monitor) and they show up in profiles as time spent inside
_platform_memmove under glrUpdateTexture.

However, when uploading 32-byte stride aligned textures which comply with the
above requirements, this CPU usage goes away. There might still be hardware
copies behind the scenes, but they no longer take up CPU time.

Differential Revision: https://phabricator.services.mozilla.com/D25316

--HG--
extra : moz-landing-system : lando
2019-03-29 02:00:03 +00:00
Sylvestre Ledru
265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Jean-Yves Avenard
b10364a15f Bug 1493198 - P2. Use enum for describing color depth. r=mattwoodrow
Depends on D6662

Differential Revision: https://phabricator.services.mozilla.com/D6663

--HG--
extra : moz-landing-system : lando
2018-09-25 20:44:55 +00:00
Andrew Osmond
1f74824f6b Bug 1451297. r=nical 2018-05-22 11:25:49 -04:00
Daniel Holbert
126bd9e1a4 Bug 1412427 part 8: (automated patch) Switch a bunch of C++ files in gfx to use our standard mode lines. r=jrmuizel
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: 77D61xpSmIl

--HG--
extra : rebase_source : c6162fa3cf539a07177a19838324bf368faa162b
2017-10-27 16:10:06 -07:00
Jean-Yves Avenard
3cd54027fe Bug 1215089 - P7: Add support for 10/12 bits YUV surface with basic compositor. r=mattwoodrow
MozReview-Commit-ID: Ej4MbvHnSk9

--HG--
extra : rebase_source : c88e8641ce343917b4f433b515aefe653b23eaa6
2017-09-29 16:37:56 +02:00
Sebastian Hengst
2da2f1cc48 Backed out changeset 248c73a2c3b1 (bug 1215089) 2017-10-04 16:25:46 +02:00
Jean-Yves Avenard
9a3a9f486e Bug 1215089 - P6: Add support for 10/12 bits YUV surface with basic compositor. r=mattwoodrow
MozReview-Commit-ID: Ej4MbvHnSk9

--HG--
extra : rebase_source : 69b342e18829816ca3cdd91a3f01252ae2a1ac94
2017-09-29 16:37:56 +02:00
Sotaro Ikeda
1d3ceeff04 Bug 1306521 - Handle VP9 colorspace BT.709 on BasicCompositor r=nical,jwwang,jya,jrmuizel 2016-10-11 19:46:28 -07:00
Milan Sreckovic
5459132cb1 Bug 1296731: Add parameter to GetAlignedStride and check for overflow. r=bas
MozReview-Commit-ID: 5Ptm0bxwKdG

--HG--
extra : rebase_source : 535f2fa2447a1401b76acc0b82ce210b3c4d6dfc
2016-08-25 13:57:39 -04:00
Sotaro Ikeda
64b45af818 Bug 1254010 - Scaling during RGB -> YUV conversion with BasicCompositor if possible. basic_compositor_video improved on windows. r=jrmuizel 2016-08-15 18:54:17 -07:00
Sotaro Ikeda
9a92018d0c Bug 1254011 - Avoid allocating RGB buffer for YUV data everytime r=nical 2016-07-08 18:59:59 -07:00
Sotaro Ikeda
774306bc97 Bug 1280839 - Recycle SharedPlanarYCbCrImage r=nical 2016-06-29 19:12:31 -07:00
Sotaro Ikeda
e4ecb6b6da Bug 1273417 - Update DataSourceSurfaceFromYCbCrDescriptor() r=nical 2016-05-17 02:14:54 -07:00
Milan Sreckovic
e0f647f55d Bug 1270180: More instances of MOZ_CRASH converted to gfxDevCrash and getting GFX prefix. r=jgilbert
MozReview-Commit-ID: BFUu2JG9Tk2

--HG--
extra : rebase_source : 146e8b8dc49dce7735f961df3ddfa3c9130fee32
2016-05-06 10:19:31 -04:00
Nicolas Silva
9fe2c25285 Bug 1235796 - Allow allocating YCbCr textures with Cb/Cr planes bigger than the Y plane. r=jrmuizel 2016-01-08 15:10:27 +01:00
Nicholas Nethercote
88696a303a Bug 1209812 (part 6) - Convert all gfxImageFormat values to SurfaceFormat equivalents. r=jrmuizel.
This patch:

- Makes the following substitutions (plus necessary namespace qualifiers:

    gfxImageFormat::ARGB32      --> SurfaceFormat::A8R8G8B8_UINT32
    gfxImageFormat::RGB24       --> SurfaceFormat::X8R8G8B8_UINT32
    gfxImageFormat::A8          --> SurfaceFormat::A8
    gfxImageFormat::RGB16_565   --> SurfaceFormat::R5G6B5_UINT16
    gfxImageFormat::Unknown     --> SurfaceFormat::UNKNOWN

- Changes gfxImageFormat to be a typedef to gfx::SurfaceFormat. This will be
  removed soon.

- Removes gfxCairoFormatToImageFormat() and gfxImageFormatToCairoFormat() and
  replace calls to them with CairoFormatToGfxFormat() and
  GfxFormatToCairoFormat().

- Removes ParamTraits<gfxImageFormat>.

- Add namespace qualifiers to SurfaceFormat instances where necessary.

--HG--
extra : rebase_source : f56e92b1593957a9e4e00171100bc7605816e696
2016-01-07 20:57:38 -08:00
Nicolas Silva
9bc4b1d4e6 Bug 1228952 - Move texture metadata out of the BufferTextureClient/Host's buffer. r=Sotaro 2015-12-16 19:50:58 +01:00
Nicolas Silva
578a8ccc95 Bug 1224254 - Don't try to allocate unreasonably large textures. r=Bas 2015-11-18 16:59:11 +01: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
Milan Sreckovic
d7bc700e96 Bug 1200021 - crash in mozilla::layers::ContentClientDoubleBuffered::FinalizeFrame(nsIntRegion const&): Diagnostics to get more data. r=bas 2015-09-19 11:19:07 +02:00
Birunthan Mohanathas
a8939590de Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
Nathan Froyd
974d8120f2 Bug 1161627 - part 2 - machine-convert TemporaryRef<T> to already_AddRefed<T>; r=ehsan
This conversion was done with the script:

  find . -name '*.cpp' -o -name '*.h' -o -name '*.mm' -o -name '*.idl' | \
    egrep -v 'cairo-win32-refptr.h|RefPtr.h|TestRefPtr.cpp' | \
    xargs sed -i -e 's/mozilla::TemporaryRef</already_AddRefed</g' \
                 -e 's/TemporaryRef</already_AddRefed</g'

Manual fixups were performed in the following instances:

- We handled mfbt/RefPtr.h manually so as to not convert TemporaryRef itself
  into already_AddRefed.

- The following files had explicit Move() calls added to make up for the lack
  of a copy constructor on already_AddRefed:

  dom/base/ImageEncoder.cpp
  dom/media/MediaTaskQueue.{h,cpp}
  dom/media/webaudio/PannerNode.cpp

- A redundant overload for MediaTaskQueue::Dispatch was deleted.

- A few manual fixups were required in mfbt/tests/TestRefPtr.cpp.

- Comments, using declarations, and forward declarations relating to
  TemporaryRef in dom/canvas/ and gfx/layers/ were changed to refer to
  already_AddRefed.
2015-06-17 10:00:52 -04:00
Amanda Sambath
e5ab8210f6 Bug 1158120 - Edit include and comments that contained gfxIntSize and nsIntSize. r=nical 2015-05-29 17:01:46 +02:00
Milan Sreckovic
714a806fb0 Bug 1099437 - Part 2: Clean up int vs uint usage. r=nical 2014-11-26 22:00:32 -05:00
Milan Sreckovic
a402938525 Bug 1099437 - Part 1: Protect against negative sizes and overflow. r=nical 2014-12-09 13:19:29 -05:00
Ryan VanderMeulen
7f46616db0 Backed out changesets 258ac2909d6e and 55252aebf52d (bug 1099437) for bustage.
CLOSED TREE
2014-11-26 14:14:16 -05:00
Milan Sreckovic
f9a7013c29 Bug 1099437 - Part 2: Clean up int vs uint usage. r=nical 2014-11-20 15:23:41 -05:00
Milan Sreckovic
411c282565 Bug 1099437 - Part 1: Protect against negative sizes and overflow. r=nical 2014-11-20 15:07:22 -05:00
Jonathan Watt
6200c18bc8 Bug 1025490 - Stop using gfxImageSurface in the layers code. r=Bas 2014-06-17 18:35:51 +01:00
Jonathan Watt
200e95e9eb Bug 996901 - Remove lots of gfxASurface.h and gfxImageSurface.h includes and forward declarations that are no longer needed. r=mattwoodrow 2014-04-16 01:41:40 +01:00
Nicolas Silva
2592474737 Bug 973892 - Make TextureClient::GetAsDrawTarget work with canvas. r=bas 2014-03-17 22:35:20 +01:00
Benoit Jacob
9b3a0b05a4 Bug 971695 - 1/2 - make ImageDataSerializer check data size - r=nical 2014-02-20 16:04:11 -05:00
Ryan VanderMeulen
0cdf10592f Backed out changesets a6831c02d8cf, 5ab4f97a3220, 2784838dbc94, and 6364146ddb19 (bug 973892) for B2G bustage.
CLOSED TREE
2014-02-19 14:28:05 -05:00
Nicolas Silva
59eca69a5d Bug 973892 - Part 1) Choose the backend in ImageDataSerializer::GetAsDrawTarget. r=mattwoodrow 2014-02-19 18:17:40 +01:00
Benoit Jacob
41b487f47a Bug 938970 - 5/5. Switch gfx/layers to UNIFIED_SOURCES - r=ehsan,mattwoodrow 2013-11-17 21:07:08 -05:00
Matt Woodrow
8a32a82431 Bug 922942 - Update BufferTextureClients using Azure. r=nical 2013-10-16 14:00:30 +13:00
Matt Woodrow
3f4a65a773 Bug 908006 - use 4 bytes aligned stride in ImageDataSerializer. r=nical 2013-08-26 16:13:22 +12:00
Nicholas Cameron
73aeda1397 Bug 903816. Include-what-you-use for gfx/layers. r=roc 2013-08-12 11:17:23 +12:00
Nicolas Silva
510cee9244 Bug 858914 - Various TextureClient/Host cleanups. r=nrc. 2013-08-08 14:53:12 +02:00
Phil Ringnalda
d2099e030b Back out d393cfeb5dbf:9f82224bb8a3 (bug 903816) for Android reftest failures
CLOSED TREE
2013-08-11 19:21:17 -07:00