xserver-multidpi/glamor
Zhigang Gong c1bd50d58d glamor_glyphs: Detect fake or real glyphs overlap.
To split a glyph's extent region to three sub-boxes
as below.

left box   2 x h
center box (w-4) x h
right box  2 x h

Take a simple glyph A as an example:
     *
  __* *__
   *****
  *     *
  ~~   ~~

The left box and right boxes are both 2 x 2. The center box
is 2 x 4.

The left box has two bitmaps 0001'b and 0010'b to indicate
the real inked area.
The right box also has two bitmaps 0010'b and 0001'b.

And then we can check the inked area in left and right boxes with
previous glyph. If the direction is from left to right, then we
need to check the previous right bitmap with current left bitmap.

And if we found the center box has overlapped or we overlap with
not only the previous glyph, we will treat it as real overlapped
and will render the glyphs via mask.

If we only intersect with previous glyph on the left/right edge.
Then we further compute the real overlapped bits. We set a loose
check criteria here, if it has less than two pixel overlapping, we
treat it as non-overlapping.

With this patch, The aa10text boost fom 1660000 to 320000.
Almost double the performance! And the cairo test result is the
same as without this patch.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2013-12-18 11:23:52 -08:00
..
glamor_addtraps.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor_copyarea.c copyarea: Cleanup the error handling logic. 2013-12-18 11:23:52 -08:00
glamor_copyplane.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor_copywindow.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor_core.c glamor_largepixmap: first commit for large pixmap. 2013-12-18 11:23:51 -08:00
glamor_debug.h glamor_largepixmap: first commit for large pixmap. 2013-12-18 11:23:51 -08:00
glamor_egl.c Added strict warning flags to CFLAGS. 2013-12-18 11:23:51 -08:00
glamor_eglmodule.c Added some copyright and author information. 2013-12-18 11:23:51 -08:00
glamor_fbo.c glamor_glyphs: Detect fake or real glyphs overlap. 2013-12-18 11:23:52 -08:00
glamor_fill.c largepixmap: Fix the selfcopy issue. 2013-12-18 11:23:51 -08:00
glamor_fillspans.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor_getimage.c glamor_getimage: should call miGetimage if failed to get sub-image. 2013-12-18 11:23:51 -08:00
glamor_getspans.c Added some copyright and author information. 2013-12-18 11:23:51 -08:00
glamor_gl_dispatch.c Added some copyright and author information. 2013-12-18 11:23:51 -08:00
glamor_gl_dispatch.h Fix the problem of memory leak in gradient pixmap generating. 2013-12-18 11:23:50 -08:00
glamor_glext.h Added some copyright and author information. 2013-12-18 11:23:51 -08:00
glamor_glyphblt.c Fixed all unused variables warnings. 2013-12-18 11:23:51 -08:00
glamor_glyphs.c glamor_glyphs: Detect fake or real glyphs overlap. 2013-12-18 11:23:52 -08:00
glamor_gradient.c Modilfy the composite logic to two phases 2013-12-18 11:23:52 -08:00
glamor_largepixmap.c largepixmap: Fix the selfcopy issue. 2013-12-18 11:23:51 -08:00
glamor_picture.c glamor_largepixmap: first commit for large pixmap. 2013-12-18 11:23:51 -08:00
glamor_pixmap.c gles2_largepixmap: force clip for a non-large pixmap. 2013-12-18 11:23:52 -08:00
glamor_polyfillrect.c Fixed all unused variables warnings. 2013-12-18 11:23:51 -08:00
glamor_polylines.c glamor_polylines: Don't fallback for non-solid fill. 2013-12-18 11:23:49 -08:00
glamor_polyops.c glyphblt/polyops: Use miFunctions by default. 2013-12-18 11:23:49 -08:00
glamor_priv.h glamor_glyphs: Detect fake or real glyphs overlap. 2013-12-18 11:23:52 -08:00
glamor_putimage.c glamor_putimage: Correct the wrong stride value. 2013-12-18 11:23:51 -08:00
glamor_render.c glamor_render: Don't fallback when rendering glyphs with OpOver. 2013-12-18 11:23:52 -08:00
glamor_setspans.c Added some copyright and author information. 2013-12-18 11:23:51 -08:00
glamor_tile.c glamor_emit_composite_vert: Optimize to don't do two times vert coping. 2013-12-18 11:23:52 -08:00
glamor_trapezoid.c Fix a bug for trapezoid clip 2013-12-18 11:23:52 -08:00
glamor_triangles.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor_utils.h glamor_glyphs: Detect fake or real glyphs overlap. 2013-12-18 11:23:52 -08:00
glamor_window.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor.c glamor_create_pixmap: Allocate glyphs pixmap in memory. 2013-12-18 11:23:52 -08:00
glamor.h glamor_largepixmap: first commit for large pixmap. 2013-12-18 11:23:51 -08:00
glapi.h Added strict warning flags to CFLAGS. 2013-12-18 11:23:51 -08:00
Makefile.am Create the file glamor_triangles.c 2013-12-18 11:23:52 -08:00