xserver-multidpi/glamor
Zhigang Gong 0706423bcf glamor_glyphs: Use cache picture to store mask picture if possible.
By default, mask picture is newly created, and each time we need to
 clear the whole mask picture, and then composite glyphs to the mask
 picture and then composite the mask picture to destination.

 Testing results shows that the filling of the mask picture takes a
 big portion of the rendering time. As we don't really need to clear
 the whole region, we just need to clear the real overlapped region.

 This commit is to solve this issue. We split a large glyphs list to
 serval lists and each list is non-overlapped or overlapped.

 we can reduce the length of overlapped glyphs to do the glyphs_via_mask
 to 2 or 3 glyphs one time for most cases. Thus it give us a case to allocate a
 small portion of the corresponding cache directly as the mask picture.
 Then we can rendering the glyphs to this mask picture, and latter we
 can accumulate the second steps, composite the mask to the dest with
 the other non-overlapped glyphs's rendering process.
 It also make us implement a batch mask cache blocks clearing
 algorithm to avoid too frequently small region clearing.

 If there is no any overlapping, this method will not get performance gain.
 If there is some overlapping, then this algorithm can get about 15% performance
 gain.

Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
2013-12-18 11:23:52 -08:00
..
compiler.h optimize: Use likely and unlikely. 2013-12-18 11:23:52 -08:00
glamor_addtraps.c Fixup glx support 2013-12-18 11:23:48 -08:00
glamor_compositerects.c glamor_compositerects: Implement optimized version. 2013-12-18 11:23:52 -08:00
glamor_copyarea.c glamor_copyarea: Fixed a bug introduced by 996194... 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 glamor_compositerects: Implement optimized version. 2013-12-18 11:23:52 -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: Use cache picture to store mask picture if possible. 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 glamor_largepixmap: Walkaround for large texture's upload. 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_compositerects: Implement optimized version. 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 allocate buffer for vbo each time. 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 glamor_render: Optimize the two pass ca rendering. 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_compositerects: Implement optimized version. 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_compositerects: Implement optimized version. 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 glamor_compositerects: Implement optimized version. 2013-12-18 11:23:52 -08:00