Skip to content
  • Basile Clement's avatar
    Ordered dithering with blue noise, v2 · cb2ec426
    Basile Clement authored and Bryce Harrington's avatar Bryce Harrington committed
    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
    cb2ec426