`register` isn't allowed in C++17, but cairo is too old to care.
Instead of turning off the warning, just use the `__builtin_popcount`
path for clang. This path also applies to clang-cl.
Differential Revision: https://phabricator.services.mozilla.com/D44047
--HG--
extra : moz-landing-system : lando
This patch is derived from upstream commit
5d150ee111c222f09e78f4f88540964476327844, without the build/ parts,
which we don't use. In lieu of the build/ parts in the original patch,
we set the appropriate configuration bit manually in moz.build.
Also:
* Prefer subpixel order provided by the surface over that from the font face.
* Allow font face options to turn off subpixel aa.
--HG--
extra : transplant_source : %02bD%22G%CE%95%C9%8D%86%8A%B9u%23_nHA%C4%11
win32: Use a font_face hash table to provide unique font faces
win32-font: Improve static data reset function
Bug 717178. Part 2: Import changesets eb29a25d, 6e3e3291 and 101fab7c from upstream.
======
From 101fab7cd8a90f7cf3d8113c792b3f8c2a9afb7d Mon Sep 17 00:00:00 2001
The hashtable is guaranteed to only contain font faces which are
currently referenced, hence there is no need to remove any font face
when it is reset (just like for toy-font).
This makes the function simpler and fixes the assertion
Assertion failed: predicate != NULL, file cairo-hash.c, line 373
hit by multiple tests (the first one being "clear").
See https://bugs.freedesktop.org/show_bug.cgi?id=38049
======
From eb29a25dd6dddc511388bf883c9b95843ecdb823 Mon Sep 17 00:00:00 2001
Similar to the freetype and toy font backends, use a hash table
to map logfont,hfont to font faces.
This fixes the multiple embedding of the same font in PDF.
https://bugs.freedesktop.org/show_bug.cgi?id=24849
======
From 6e3e329170ab4b96bc0d587c8071e869e228e758 Mon Sep 17 00:00:00 2001
some bugs were discovered while testing with firefox
======
--HG--
extra : rebase_source : 6bbb299194f2296522e36bfeb68d1e8ebc2d1f17
Bug 717178. Part 2: Import changesets eb29a25d, 6e3e3291 and 101fab7c from upstream.
======
From 101fab7cd8a90f7cf3d8113c792b3f8c2a9afb7d Mon Sep 17 00:00:00 2001
The hashtable is guaranteed to only contain font faces which are
currently referenced, hence there is no need to remove any font face
when it is reset (just like for toy-font).
This makes the function simpler and fixes the assertion
Assertion failed: predicate != NULL, file cairo-hash.c, line 373
hit by multiple tests (the first one being "clear").
See https://bugs.freedesktop.org/show_bug.cgi?id=38049
======
From eb29a25dd6dddc511388bf883c9b95843ecdb823 Mon Sep 17 00:00:00 2001
From: Adrian Johnson <ajohnson@redneon.com>
Date: Tue, 16 Nov 2010 13:18:39 +0000
Subject: win32: Use a font_face hash table to provide unique font faces
Similar to the freetype and toy font backends, use a hash table
to map logfont,hfont to font faces.
This fixes the multiple embedding of the same font in PDF.
https://bugs.freedesktop.org/show_bug.cgi?id=24849
======
From 6e3e329170ab4b96bc0d587c8071e869e228e758 Mon Sep 17 00:00:00 2001
From: Adrian Johnson <ajohnson@redneon.com>
Date: Thu, 18 Nov 2010 12:37:45 +0000
Subject: win32: fix font_face hashing
some bugs were discovered while testing with firefox
======
======
From eb29a25dd6dddc511388bf883c9b95843ecdb823 Mon Sep 17 00:00:00 2001
From: Adrian Johnson <ajohnson@redneon.com>
Date: Tue, 16 Nov 2010 13:18:39 +0000
Subject: win32: Use a font_face hash table to provide unique font faces
Similar to the freetype and toy font backends, use a hash table
to map logfont,hfont to font faces.
This fixes the multiple embedding of the same font in PDF.
https://bugs.freedesktop.org/show_bug.cgi?id=24849
======
From 6e3e329170ab4b96bc0d587c8071e869e228e758 Mon Sep 17 00:00:00 2001
From: Adrian Johnson <ajohnson@redneon.com>
Date: Thu, 18 Nov 2010 12:37:45 +0000
Subject: win32: fix font_face hashing
some bugs were discovered while testing with firefox
======
From 101fab7cd8a90f7cf3d8113c792b3f8c2a9afb7d Mon Sep 17 00:00:00 2001
From: Andrea Canciani <ranma42@gmail.com>
Date: Wed, 15 Jun 2011 09:37:36 +0000
Subject: win32-font: Improve static data reset function
The hashtable is guaranteed to only contain font faces which are
currently referenced, hence there is no need to remove any font face
when it is reset (just like for toy-font).
This makes the function simpler and fixes the assertion
Assertion failed: predicate != NULL, file cairo-hash.c, line 373
hit by multiple tests (the first one being "clear").
See https://bugs.freedesktop.org/show_bug.cgi?id=38049
======
--HG--
extra : rebase_source : 73172c901f80e2f6e9f52035e1d6eab2a220642f
This does a 2x2 ordered dither in the same way that Skia does.
One of the things I'm currently unhappy with is that it duplicates
the gradient walker code for 16 bits. We could turn it into a large
macro that does the appropriate things for 16 bit and 32 bit
versions, but that's not particularly appealing.
This does a 2x2 ordered dither in the same way that Skia does.
One of the things I'm currently unhappy with is that it duplicates
the gradient walker code for 16 bits. We could turn it into a large
macro that does the appropriate things for 16 bit and 32 bit
versions, but that's not particularly appealing.
--HG--
extra : rebase_source : ef89cd53d68166db825bb993e1262db342ba9b5d
This takes the bilinear interpolation code from Skia. It
uses 4 bits of precision instead of 8. This lets it interpolate
two components at a time because the results fit in 16 bits.
The lower precision code is only used in the fallback code
and not in any of the specialized code for NEON. This means
pixman gives different results depending on the cpu which isn't
great. However, this was easiest and the NEON code doesn't
gain as much from using lower precision.
Skia actually uses even lower interpolation when working with
565 but that's harder to plug in right now, and this gives
a reasonable improvement.
It seems like we sometimes end up using EXTEND_NONE unintentionally, this is
likely caused by different rounding between cairo and pixman. Pixman already
does a similar reduction to EXTEND_NONE so there's not point in duplicating it
here.
--HG--
extra : rebase_source : 5649a2583a8a01084567bfb06cb3c788437210f5
Alan Coopersmith (2):
Change MMX ldq_u to return _m64 instead of forcing all callers to cast
Make mmx code compatible with Solaris Studio 12.3 compilers
Andrea Canciani (13):
Include noop in win32 builds
Silence autoconf warnings
radial: Improve documentation and naming
radial: Fix typos and trailing whitespace
win32: Build benchmarks
Workaround bug in llvm-gcc
test: Fix compilation on win32
build: Reuse sources and pixman-combine build rules
build: Reuse test sources
build-win32: Share targets and variables across win32 makefiles
build-win32: Add root Makefile.win32
test: Do not include config.h unless HAVE_CONFIG_H is defined
build-win32: Add 'check' target
Benjamin Otte (2):
tests: Add PNG_CFLAGS/LIBS to tests
build: replace @VAR@ with $(VAR) in makefiles
Bobby Salazar (1):
Android Runtime Detection Support For ARM NEON
Chris Wilson (1):
bits: optimise fetching width==1 repeats
Colin Walters (1):
autogen.sh: Support GNOME Build API
Jeff Muizelaar (1):
Add definitions of INT64_MIN and INT64_MAX
Jon TURNEY (1):
Fix build on cygwin after commit efdf65c0c4fff551fb3cd9104deda9adb6261e22
Matt Turner (11):
lowlevel-blt: add over_x888_8_8888
mmx: fix formats in commented code
mmx: convert while (w) to if (w) when possible
mmx: rename USE_MMX to USE_X86_MMX
mmx: wrap x86/MMX inline assembly in ifdef USE_X86_MMX
mmx: fix unaligned accesses
mmx: prepare pixman-mmx.c to be compiled for ARM/iwmmxt
mmx: compile on ARM for iwmmxt optimizations
mmx: optimize unaligned 64-bit ARM/iwmmxt loads
Make sure iwMMXt is only detected on ARM
Correct the minimum gcc version needed for iwmmxt
Naohiro Aota (1):
Don't use non-POSIX test
Nis Martensen (1):
Fix a few typos in pixman-combine.c.template
Siarhei Siamashka (4):
C fast path for scaled src_x888_8888 with nearest filter
ARM: workaround binutils bug #12931 (code sections alignment)
test: better coverage for BILINEAR->NEAREST filter optimization
BILINEAR->NEAREST filter optimization for simple rotation and translation
Søren Sandmann (5):
mmx: Delete some unused variables
sse2: Delete some unused variables
demos: Comment out some unused variables
ARM: Fix two bugs in neon_composite_over_n_8888_0565_ca().
test: Make fuzzer-find-diff.pl executable
Søren Sandmann Pedersen (63):
Add a "noop" implementation.
Add a noop composite function for the DST operator
Move noop dest fetching to noop implementation
Add a noop src iterator
Move NULL iterator into pixman-noop.c
Move NOP src iterator into noop implementation.
Replace instances of "dst_*" with "dest_*"
In pixman-general.c rename image_parameters to {src, mask, dest}_image
Replace argumentxs to composite functions with a pointer to a struct
blitters-test: Make common formats more likely to be tested.
Pre-release version bump to 0.23.2
Post-release version bump to 0.23.3
Makefile.am: Add pixman@lists.freedesktop.org to RELEASE_ANNOUNCE_LIST
Fix lcg_rand_u32() to return 32 random bits.
New test of pixman_region_contains_{rectangle,point}
Speed up pixman_region{,32}_contains_rectangle()
Use find_box_for_y() in pixman_region_contains_point() too
Don't include stdint.h in lowlevel-blt-bench.c
In pixman_image_create_bits() allow images larger than 2GB
Rename pixman-fast-path.h to pixman-inlines.h
Use repeat() function from pixman-inlines.h in pixman-bits-image.c
Move bilinear interpolation to pixman-inlines.h
Pre-release version bump to 0.23.4
Post-release version bump to 0.23.5
test: New function to save a pixman image to .png
Use pkg-config to determine the flags to use with libpng
test: Use smaller boxes in region_contains_test()
A few tweaks to a comment in pixman-combine.c.template
Add a generic unorm_to_unorm() conversion utility
Add general pixel converter
Add initial version of the MAKE_ACCESSORS() macro
Use MAKE_ACCESSORS() to generate all the 32 bit accessors
Use MAKE_ACCESSORS() to generate accessors for all the 16bpp formats
Use MAKE_ACCESSORS() to generate accessors for 8bpp RGB formats
Use MAKE_ACCESSORS() to generate accessors for 4 bpp RGB formats
Use MAKE_ACCESSORS() to generate accessors for 24bpp formats
Use MAKE_ACCESSORS() to generate accessors for the a1 format.
Use MAKE_ACCESSORS() to generate accessors for paletted formats
Remove x and y coordinates from analyze_extents() and compute_sample_extents()
Split computation of sample area into own function
Eliminate compute_sample_extents() function
test: Occasionally use a BILINEAR filter in blitters-test
Strength-reduce BILINEAR filter to NEAREST filter for identity transforms
Don't include stdint.h in scaling-helpers-test.
Add src, mask, and dest flags to the composite args struct.
Pre-release version bump to 0.23.6
Post-release version bump to 0.23.7
Add stable release / development snapshot to draft release notes
gradient walker: Correct types and fix formatting
Use sentinels instead of special casing first and last stops
Simplify gradient_walker_reset()
Merge branch 'gradients'
Fix use of uninitialized fields reported by valgrind
Pre-release version bump to 0.23.8
Post-release version bump to 0.23.9
Pre-release version bump to 0.24.0
Post-release version bump to 0.24.1
gradient-walker: For NONE repeats, when x < 0 or x > 1, set both colors to 0
pixman-image.c: Fix typo in pixman_image_set_transform()
Fix some signed overflow bugs
Reject trapezoids where top (botttom) is above (below) the edges
Fix bugs with alpha maps
Pre-release version bump to 0.24.2
Taekyun Kim (25):
Replace boolean arguments with flags for bilinear fast path template
REPEAT_NORMAL support for bilinear fast path template
sse2: Declare bilinear src_8888_8888 REPEAT_NORMAL composite function
ARM: Add REPEAT_NORMAL functions to bilinear BIND macros
Enable REPEAT_NORMAL bilinear fast path entries
Bilinear REPEAT_NORMAL source line extension for too short src_width
ARM NEON: Standard fast path out_reverse_8_8888
ARM: NEON better instruction scheduling of over_n_8_8888
ARM: NEON better instruction scheduling of over_n_8888
sse2: Macros for assembling bilinear interpolation code fractions
sse2: Bilinear scaled over_8888_8888
sse2: Bilinear scaled over_8888_8_8888
init/fini functions for pixman_image_t
Add new fast path flag FAST_PATH_BITS_IMAGE
Move _pixman_lookup_composite_function() to pixman-utils.c
Simple repeat fast path
Simple repeat: Extend too short source scanlines into temporary buffer
ARM: NEON: Some cleanup of bilinear scanline functions
ARM: NEON: Bilinear macro template for instruction scheduling
ARM: NEON: Replace old bilinear scanline generator with new template
ARM: NEON: Instruction scheduling of bilinear over_8888_8888
ARM: NEON: Instruction scheduling of bilinear over_8888_8_8888
ARM: NEON: Standard fast path src_n_8_8888
ARM: NEON: Standard fast path src_n_8_8
ARM: NEON: Fix assembly typo error in src_n_8_8888