lp:pixman

Created by Christian Reis on 2010-06-12 and last modified on 2019-06-10
Get this branch:
bzr branch lp:pixman

Related bugs

Related blueprints

Branch information

Owner:
Christian Reis
Project:
Pixman
Status:
Development

Import details

Import Status: Reviewed

This branch is an import of the HEAD branch of the Git repository at git://anongit.freedesktop.org/git/pixman.

The next import is scheduled to run in 2 hours.

Last successful import was 3 hours ago.

Import started 3 hours ago on alnitak and finished 3 hours ago taking 20 seconds — see the log
Import started 9 hours ago on alnitak and finished 9 hours ago taking 20 seconds — see the log
Import started 15 hours ago on alnitak and finished 15 hours ago taking 20 seconds — see the log
Import started 21 hours ago on izar and finished 21 hours ago taking 15 seconds — see the log
Import started on 2019-07-19 on izar and finished on 2019-07-19 taking 25 seconds — see the log
Import started on 2019-07-19 on alnitak and finished on 2019-07-19 taking 20 seconds — see the log
Import started on 2019-07-19 on alnitak and finished on 2019-07-19 taking 20 seconds — see the log
Import started on 2019-07-18 on alnitak and finished on 2019-07-18 taking 20 seconds — see the log
Import started on 2019-07-18 on alnitak and finished on 2019-07-18 taking 20 seconds — see the log
Import started on 2019-07-18 on alnitak and finished on 2019-07-18 taking 20 seconds — see the log

Recent revisions

2099. By Christoph Reiter on 2019-06-10

meson: fix TLS support under mingw

GCC on Windows complains that "__declspec(thread)" doesn't work, but still
compiles it, so the meson check doesn't work. The warning printed by gcc:
"warning: 'thread' attribute directive ignored [-Wattributes]"

Pass -Werror=attributes to make the check fail instead.

This fixes the test suite (minus gtk tests) on Windows with mingw.

2098. By Christoph Reiter on 2019-06-10

meson: allow building a static library

So that passing "-Ddefault_library=both" also creates a static lib.

Note that Libs.private in the .pc file will still be wrong because of
https://github.com/mesonbuild/meson/issues/3934 (it contains things like
-lpixman-mmx)

2097. By Christoph Reiter on 2019-06-10

meson: define SIZEOF_LONG and use -Wundef

meson builds defaulted to SIZEOF_LONG=0 in various places

2096. By Basile Clement <email address hidden> on 2019-06-10

Don't use GNU extension for binary numbers

The dithering code (specifically `dither_factor_bayer_8`) uses a GNU
extension for binary notation, eg 0b001. This is not supported by MSVC
(at least) and breaks the build on this platform [1].

This patches uses hexadecimal notation instead, fixing the build.

[1]: https://lists.freedesktop.org/archives/pixman/2019-June/004883.html

Reviewed-by: Matt Turner <email address hidden>

2095. By Basile Clement <email address hidden> on 2019-05-25

Ordered dithering with blue noise, v2

On some screens (typically low quality laptop screens), using Bayer
ordered dithering has been observed to cause color changes depending on
*where the gradient is rendered on the screen*, causing visible
flickering when moving an image on the screen.

To alleviate the issue, this patch adds support for ordered dithering
using a 64x64 matrix tuned from blue noise. In addition to being devoid
of the positional dependency on screen, the blue noise matrix also
generates more pleasing and less discernable patterns. As such, it is
now the method used for PIXMAN_DITHER_GOOD and PIXMAN_DITHER_BEST
dithering methods.

The 64x64 blue noise matrix has been generated using the provided
`pixman/dither/make-blue-noise.c` script, which uses the
void-and-cluster method.

Changes since v1 (thanks Bill):
 - Use uint16_t for the blue noise matrix for lower memory usage
 - Use bitwise computation for array index

2094. By Basile Clement <email address hidden> on 2019-05-25

demos: Add a dithering demo

This adds a dither.c which provides a demo of the dithering feature.
This is based on the scale.c demo for scaling and provides a selection
of intermediate formats and dithering operators (currently, only
PIXMAN_DITHER_ORDERED_BAYER_8) to use. Images are first blitted onto a
surface of the intermediate format with the requested dither setup, then
blitted back onto a a8r8g8b8 surface for display.

2093. By Basile Clement <email address hidden> on 2019-05-25

test: Check the dithering path in tolerance-test

This adds support for testing dithered destinations in tolerance-test.
When dithering is enabled, the pixel checker allows for an additional
quantization error.

2092. By Basile Clement <email address hidden> on 2019-05-25

Implement basic dithering for the wide pipeline, v3

This patch implements dithering in pixman. A "dither" property is added
to BITS images, which is used to:

 - Force rendering to the image to go through the floating point
   pipeline. Note that this is different from FAST_PATH_NARROW_FORMAT
   as it should not enable the floating point pipeline when reading from
   the image.

 - Enable dithering in dest_write_back_wide. The dithering uses the
   destination format to determine noise amplitude.

This does not change pixman's behavior when dithering is disabled (the
default).

Additional types and functions are added to the public API:

 - The `pixman_dither_t` enum exposes the available dithering methods.
   Currently a single dithering method based on 8x8 Bayer matrices is
   implemented (PIXMAN_DITHER_ORDERED_BAYER_8). The PIXMAN_DITHER_FAST,
   PIXMAN_DITHER_GOOD and PIXMAN_DITHER_BEST aliases are provided and
   should be used to benefit from future specializations.

 - The `pixman_image_set_dither` function allows to set the dithering
   method to use when rendering to a bits image.

 - The `pixman_image_set_dither_offset` function allows to set a
   vertical and horizontal offsets for the dither matrix. This can be
   used after scrolling to ensure a consistent spatial positioning of
   the dither matrix.

Changes since previous version (v2):
 - linear_gradient_is_horizontal optimization is still compatible with
   the wide pipeline. The code disabling it was a remnant of a previous
   patch which performed dithering directly inside linear_get_scanline,
   and thus needed to be called independently for each scanline.

Changes since v1:
 - Renamed PIXMAN_DITHER_BAYER_8 to PIXMAN_DITHER_ORDERED_BAYER_8
 - Disable dithering for channels with 32bpp or more (since they can
   represent exactly the wide values already). This makes the patches
   compatible with the newly added floating point format.

Dithering is compatible with linear_gradient_is_horizontal

2091. By Fan Jinke <email address hidden> on 2019-05-02

add Hygon Dhyana support to enable X86_MMX_EXTENSIONS feature

Signed-off-by: Fan Jinke <email address hidden>
Signed-off-by: Matt Turner <email address hidden>

2090. By Basile Clement <email address hidden> on 2019-04-11

Fix bilinear filter computation in wide pipeline

The recently introduced wide pipeline for filters has a typo which
causes it to improperly compute bilinear interpolation positions,
causing various glitches when enabled.

This patch uses the proper computation for bilinear interpolation in the
wide pipeline. It also makes related `if` statements conformant to the
CODING_STYLE:

* If a substatement spans multiple lines, then there must be braces
  around it.

* If one substatement of an if statement has braces, then the other
  must too.

Signed-off-by: Maarten Lankhorst <email address hidden>

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
This branch contains Public information 
Everyone can see this information.

Subscribers