After three moths development, I?m pleased to release glamor version 0.5.0. The major improvements are as below: 1. Support tiling large pixmap to multiple small textures. 2. Enable gradient shader. 3. Optimize glyphs rendering performance 4. Implement first shader to generate trapezoids. Cairo-demo?s spinner on a large picture(12000x12000) get about 10x improvement, and gradient also get about 2x improvement. Aa10text and rgb10text also get about 2x improvement. Thanks for Junyan and Michel?s contribution. Glamor has a restriction with latest xserver. The main issue is that glamor rely on the module loading sequence which is not guaranteed by current xserver. We will fix this issue in next version. If you want to try a full functional xserver with glamor, it?s recommended to use the following xserver version: commit a615b90cab7569fae9d123e4da1d3373c871d84b Author: Keith Packard <keithp at keithp.com> Date: Wed Mar 14 11:32:36 2012 -0700 Bump version number to 1.12.99.0 Now that 1.12 has branched, reset the version on master to a development number. Signed-off-by: Keith Packard keithp at keithp.com We have the following work items for next release: 1. Fix the coexisting problem with glx for latest xserver. Don?t rely on the module loading sequence. 2. Continue performance tuning: a) Implement delay flushing mechanism to avoid tiny drawing operation for each DrawElements/DrawArrays call. b) Implement atlas for small pixmap. c) Optimize trapezoid shader to reduce the overhead for those non-edge pixels. d) Optimize trapezoid/gradient shader to merge the mask/source creation and compositing into one shader. e) Optimize glamor itself? overhead. 3. Xv support. The following changes since commit d5cdad0497ae5f6cd936a74f68169c0910ea1e68: Release 0.4. (2012-04-28 17:02:35 +0800) are available in the git repository at: git://anongit.freedesktop.org/xorg/driver/glamor tag v0.5 tar ball is at: http://cgit.freedesktop.org/xorg/driver/glamor/snapshot/glamor-0.5.tar.gz Please refer the following wiki page for how to try glamor with Intel driver. http://www.freedesktop.org/wiki/Software/Glamor for you to fetch changes up to 9b8a791290af0add84269efdb315f9f58798f6d2: Bump to version 0.5. (2012-08-10 13:46:42 +0800) ---------------------------------------------------------------- Junyan He (14): Extract the gradient related code out. Fix a bugy macro definition. Fix the problem of set the same stop several times. Fix the problem of vertical and horizontal case error in linear gradient. Fix the problem of x_source and y_source causing radial error Add macro of vertex setting for triangle stripe Modilfy the composite logic to two phases Add the trapezoid direct render logic Use the direct render path for A1 Fix a bug for trapezoid clip Change the trapezoid render to use VBO. Just use the shader to generate trapezoid if PolyMode == Imprecise Fix the problem of VBO leak. Fallback to pixman when trapezoid mask is big. Michel D?nzer (4): Fix translation of clip region for composite fallback. Stream vertex data to VBOs. Print space between name of missing EGL extension and 'required'. Prefer KHR_surfaceless_context EGL extension over KHR_surfaceless_opengl/gles2. RobinHe (2): Create the file glamor_triangles.c Use shader to generate the temp trapezoid mask Zhigang Gong (43): We should not call gradient finalization code if we disable it. Added strict warning flags to CFLAGS. Remove the texture cache code. glamor_set_destination_pixmap_priv_nc: set drawable's width x height. glamor_largepixmap: first commit for large pixmap. largepixmap: Implement infrastructure for large pixmap. largepixmap: Enable glamor_composite. glamor_putimage: Correct the wrong stride value. glamor_getimage: should call miGetimage if failed to get sub-image. largepixmap: Add transform/repeat/reflect/pad support. largepixmap: Support self composite for large pixmap. largepixmap: Fix the selfcopy issue. Enable large pixmap by default. trapezoid: Fallback to sw-rasterize for largepixmap. copyarea: Cleanup the error handling logic. glamor_glyphs: Before get upload to cache flush is needed. glamor_emit_composite_vert: Optimize to don't do two times vert coping. gles2_largepixmap: force clip for a non-large pixmap. glamor_fbo: fix a memory leak for large pixmap. glamor_create_pixmap: Allocate glyphs pixmap in memory. glamor_render: Don't fallback when rendering glyphs with OpOver. glamor_glyphs: Detect fake or real glyphs overlap. glamor_composite_glyph: Optimize glyphs with non-solid pattern. glamor_render: Optimize the two pass ca rendering. glamor_largepixmap: Walkaround for large texture's upload. glamor_render: Don't allocate buffer for vbo each time. glamor_glyphs: Slightly performance tuning. glamor_copyarea: Fixed a bug introduced by 996194... create_pixmap: use texture for large glyphs. optimize: Use likely and unlikely. glamor_compositerects: Implement optimized version. glamor_glyphs: Use cache picture to store mask picture if possible. glamor_copyarea: Use blitcopy if current state is not render. glamor_glyphs: Don't merge extents for different lists. gles2: Fixed the compilation problem and some bugs. Synch with xorg 1.13 change. Added the missed header file for xorg 1.13 compat. glamor_trapezoid: workaround a glsl like problem. glamor_glyphs: When dst arg point to a NULL buffer, dont't flush. glamor_largepixmap: Fixed a bug in repeat clipping. Silence compilation warnings. Increase vbo size to 64K verts. Bump to version 0.5. configure.ac | 2 +- src/Makefile.am | 6 +- src/compat-api.h | 107 ++ src/compiler.h | 59 + src/glamor.c | 98 +- src/glamor.h | 16 +- src/glamor_compositerects.c | 278 +++++ src/glamor_copyarea.c | 356 ++++-- src/glamor_copyplane.c | 3 - src/glamor_core.c | 26 +- src/glamor_debug.h | 4 +- src/glamor_egl.c | 61 +- src/glamor_eglmodule.c | 4 +- src/glamor_fbo.c | 274 ++-- src/glamor_fill.c | 173 ++- src/glamor_fillspans.c | 3 - src/glamor_getimage.c | 4 +- src/glamor_glext.h | 3 + src/glamor_glyphs.c | 1452 +++++++++++++++++---- src/glamor_gradient.c | 1584 +++++++++++++++++++++++ src/glamor_largepixmap.c | 1324 ++++++++++++++++++++ src/glamor_picture.c | 16 +- src/glamor_pixmap.c | 441 +++++-- src/glamor_polyfillrect.c | 3 - src/glamor_polylines.c | 2 - src/glamor_priv.h | 363 +++++- src/glamor_putimage.c | 8 +- src/glamor_render.c | 2912 +++++++++++-------------------------------- src/glamor_tile.c | 202 ++- src/glamor_trapezoid.c | 1810 +++++++++++++++++++++++++++ src/glamor_utils.h | 841 +++++++++++-- src/glapi.h | 6 +- 32 files changed, 9338 insertions(+), 3103 deletions(-) create mode 100644 src/compat-api.h create mode 100644 src/compiler.h create mode 100644 src/glamor_compositerects.c create mode 100644 src/glamor_gradient.c create mode 100644 src/glamor_largepixmap.c create mode 100644 src/glamor_trapezoid.c -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20120810/f6878740/attachment-0001.html>