[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

glamor: Changes to 'upstream-unstable'



New branch 'upstream-unstable' available with the following commits:
commit 81aadb8ae204f58d77a948c8624f1e72659dcdf0
Author: Armin K <krejzi@email.com>
Date:   Wed Mar 13 18:49:33 2013 +0100

    Don't use AC_PROG_LIBTOOL
    
    Autoconf only needs libtool macros which are copied when
    autoreconf is run. There is no need for looking for
    "libtool" program in PATH. This properly disables static
    libraries from being built and installed.
    
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>

commit f2d7f1cf351bdc3a8a00fe564cd6a937db3b4e19
Author: Armin K <krejzi@email.com>
Date:   Wed Mar 13 18:49:32 2013 +0100

    First attempt to make libglamor.so shared versioned library
    
    As recommended by Michel in this thread reply:
    http://lists.freedesktop.org/archives/glamor/2013-March/000305.html
    
    v2: Correct shared library location in glamor.pc.in
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=62259
    
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>

commit c7241f097ddb4d3bfb832f6b4ee6fafe8b4d2cfe
Author: Armin K <krejzi@email.com>
Date:   Wed Mar 13 18:28:58 2013 +0100

    Properly dist necesary headers
    
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>

commit 3cd34ba9f0708ab7d816eeee80139257fafcb4ad
Author: Armin K <krejzi@email.com>
Date:   Wed Mar 13 18:28:57 2013 +0100

    Silence Automake 1.13 warnings
    
    warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
    
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>

commit 61879504f86c5cb326cc06a5873283234cfbbcd2
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Wed Mar 13 17:15:33 2013 +0100

    glamoregl: Use xf86ScreenToScrn()
    
    Fixes crashes when glamor is used for a GPU screen with xserver 1.13 or
    newer.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57200#c17
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>

commit c0729336ae35dcc7e46bcf840d6e9a056d5cdd26
Author: Dave Airlie <airlied@redhat.com>
Date:   Sat Dec 29 06:42:30 2012 +0000

    glamor_utils: fix unlikely define use
    
    using a define across a split line expression is failure, compiling
    with warnings shows this up.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

commit c6d9cb1eb4962a15f8bbc869e9fef6d1464165af
Author: Dave Airlie <airlied@redhat.com>
Date:   Sat Dec 29 06:42:10 2012 +0000

    glamor: add compiler.h
    
    This is also required for distchecking.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

commit 4a0ac3ff00d70b13e8483d50657187c7abdfc110
Author: Dave Airlie <airlied@redhat.com>
Date:   Sat Dec 29 06:28:17 2012 +0000

    glamor: fix make distcheck part 1
    
    This just adds the headers, then it falls over on the sdk_HEADERS
    as it overrides proper install paths by the looks of it.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>

commit f1457c1c59efdadbad25f01dce9433643d688844
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Nov 13 10:08:02 2012 +0800

    glamor_compositerects: Need to initialize region before fallback.
    
    As we need to call DamageRegionAppend even for fallback path,
    we must initialize the region before do that. Pointed by
    Igor Vagulin.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=56940
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit beeddaae1da253d1a442228a75f80ef40a0204ac
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Wed Oct 31 16:56:00 2012 +0100

    Don't use glBlitFramebufferEXT for overlapping copies.
    
    According to the GL_EXT_framebuffer_blit spec, the result of doing so is
    undefined. But we need well-defined results. :)
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>

commit 9b8a791290af0add84269efdb315f9f58798f6d2
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Fri Aug 10 13:46:42 2012 +0800

    Bump to version 0.5.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 047c1375d6d08ac53839d0149dbbc03258f28d6a
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Wed Aug 8 20:43:38 2012 +0800

    Increase vbo size to 64K verts.
    
    This commit will benefit vertex stressing cases such as
    aa10text/rgb10text, and can get about 15% performance gain.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
    Acked-by: Junyan <junyan.he@linux.intel.com>

commit 43cabf3f7c84e00d8480136d2ed5108d84ca392b
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Wed Aug 8 20:11:43 2012 +0800

    Silence compilation warnings.
    
    After increase to gcc4.7, it reports more warnings, now
    fix them.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
    Tested-by: Junyan He<junyan.he@linux.intel.com>

commit a991ea45a60b0566adf9e6c15809fd4f49af7129
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Wed Aug 8 20:08:12 2012 +0800

    glamor_largepixmap: Fixed a bug in repeat clipping.
    
    If the repeat direction only has one block, then we need to set the
    dx/dy to cover all the extent. This commit also silence some compilation
    warnings.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit aa2b71332143fe7d62b3c3f16462f8335e3a7844
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Tue Aug 7 18:16:58 2012 +0200

    Prefer KHR_surfaceless_context EGL extension over KHR_surfaceless_opengl/gles2.
    
    Current Mesa Git only advertises the former instead of the latter.
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 67fb454c47903d4dc9b439f2c5af73a331cbc3cb
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Tue Aug 7 18:13:32 2012 +0200

    Print space between name of missing EGL extension and 'required'.
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 801192caf1444d50d905de9c6133abe7de869894
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Tue Aug 7 05:01:59 2012 +0800

    Fallback to pixman when trapezoid mask is big.
    
     The trapezoid generating speed of the shader is relatively
     slower when the trapezoid area is big. We fallback when
     the trapezoid's width and height is bigger enough.
     The big traps number will also slow down the render because
     of the VBO size. We fallback if ntrap > 256
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>
    Reviewed-By: Zhigang Gong <zhigang.gong@linux.intel.com>

commit ded419455c67846d75944c75d623d6e1c510db9f
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Thu Aug 2 18:07:07 2012 +0800

    glamor_glyphs: When dst arg point to a NULL buffer, dont't flush.
    
    This is a corner case, when we render glyphs via mask cache, and
    when we need to upload new glyphs cache, we need to flush both the
    mask and dest buffer. But we the dest arg may point to a NULL buffer
    at that time, we need to check it firstly. If the dest buffer is NULL.
    Then we don't need to flush both the dest and mask buffer.
    
    This commit fix a potential crash.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit f233aeef15ca357c9a0a770687d13b6560871420
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Wed Aug 1 18:27:29 2012 +0800

    glamor_trapezoid: workaround a glsl like problem.
    
    It seems that the following statement cann't run as expected on SNB.
    bool trap_left_vertical = (abs(trap_left_vertical_f - 1.0) <= 0.0001);
    
    Have to rewrite it to another style to let the vertical edge trapezoid
    to be rendered correctly.
    
    Reviewed-by: Junyan He <junyan.he@linux.intel.com>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 79d369f161c78185483bf8fdeed77f79430d4a1e
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Fri Jul 20 05:52:57 2012 +0800

    Fix the problem of VBO leak.
    
     In some cases we allocate the VBO but have no vertex to
     emit, which cause the VBO fail to be released. Fix it.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit 1f50d3f368c9e7135576ecb376fbaef34fd22132
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Fri Jul 20 05:52:50 2012 +0800

    Just use the shader to generate trapezoid if PolyMode == Imprecise
    
     The precise mode of trapezoid rendering need to sample the trapezoid on
     the centre points of an (2*n+1)x(2*n-1) subpixel grid. It is computationally
     expensive in shader, and we use inside area ratio to replace it.
     The result has some difference, and we just use it if the polymode == Imprecise.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit 1315ff92e2e19811cfb9a8bddab8e40bca5cd4e5
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Fri Jul 20 05:52:43 2012 +0800

    Change the trapezoid render to use VBO.
    
     Because some uniform variables need to be set for every
     trapezoid rendering, we can not use vbo to render multi
     trapezoids one time, which have performance big loss.
     We now add attributes which contain the same value to bypass
     the uniform variable problem. The uniform value for one
     trapezoid will be set to the same value to all the vertex
     of that trapezoid as an attribute, then in FS, it is still
     a constant.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit ab212d3b90cd288da46af43390feacb489db77b1
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jul 16 17:27:22 2012 +0800

    Added the missed header file for xorg 1.13 compat.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 726ad264f485ce1d39aa387e93ac224fb46ed059
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jul 16 11:25:09 2012 +0800

    Synch with xorg 1.13 change.
    
    As xorg 1.13 change the scrn interaces and remove those
    global arrays. Some API change cause we can't build. Now
    fix it.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit e51e16e64b1b87a6eb96c5993183475ad8a88cfd
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Fri Jul 13 09:20:02 2012 +0800

    gles2: Fixed the compilation problem and some bugs.
    
    Previous patch doesn't set the offset to zero for GLESv2
    path. Now fix it.
    
    This patch also fix a minor problem in pixmap uploading
    preparation. If the revert is not REVERT_NORMAL, then we
    don't need to prepare a fbo for it. As current mesa i965
    gles2 driver doesn't support to set a A8 texture as a fbo
    target, we must fix this problem. As some A1/A8 picture
    need to be uploaded, this is the only place a A8 texture
    may be attached to a fbo.
    
    This patch also enable the shader gradient for GLESv2.
    The reason we disable it before is that some glsl linker
    doesn't support link different objects which have cross
    reference. Now we don't have that problem.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 5247854b57c3d931b5ad593a8c12b6978e6865d0
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Thu Jul 12 18:57:06 2012 +0800

    Stream vertex data to VBOs.
    
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 12c5d248a3efe5afb06f0dc246b207cc497e9420
Author: Michel D=C3=A4nzer <michel.daenzer@amd.com>
Date:   Wed Jul 11 15:01:15 2012 +0800

    Fix translation of clip region for composite fallback.
    
    Fixes incorrectly clipped rendering. E.g. the cursor in Evolution
    composer windows became invisible.
    
    Signed-off-by: Michel Daenzer <michel.daenzer@amd.com>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 1aeca388c9ff9d8cbdfbdd552abe764d36c73f40
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Wed Jul 4 17:59:25 2012 +0800

    glamor_glyphs: Don't merge extents for different lists.
    
    If we merge all lists's extent together, than we may have
    some fail overlap checking. Here is a simple:
    A E
    B F
    C
    D
    
    The first list has vertical "ABCD". And the second list
    has two char "EF". When detecting E, it can successfully
    find it doesn't overlap with previous glyphs. But after
    that, the original code will merge the previous extent with
    E's extent, then the extent will cover "F", so when detecting
    F, it will be treated as overlapped.
    
    We can simply solve this issue by not merge extent from different
    list. We can union different list's extent to a global region.
    And then do the intersect checkint between that region and
    current glyph extent, then we can avoid that fail checking.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 73d33dd2400772ad47a57dad2c2fa93caebccc80
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Jul 3 18:24:07 2012 +0800

    glamor_copyarea: Use blitcopy if current state is not render.
    
    Practically, for pure 2D blit, the blit copy is much faster
    than textured copy. For the x11perf copywinwin100, it's about
    3x faster. But if we have heavy rendering/compositing, then use
    textured copy will get much better (>30%)performance for most
    of the cases.
    
    So we simply add a data element to track current state. For
    rendering state we use textured copy, otherwise, we use blit
    copy.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 1ec81c73bf4660d87b9cfa281647ca6cbda68f2e
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Jul 3 18:11:12 2012 +0800

    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>

commit 4c368b12c1af317c79469f8b6b809997d1769080
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Wed Jun 27 12:53:40 2012 +0800

    glamor_compositerects: Implement optimized version.
    
    Don't call miCompositeRects. Use glamor_composite_clipped_region
    to render those boxes at once.
    Also add a new function glamor_solid_boxes to fill boxes at once.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit ecc70624ca77478a46e9fb9487d76c74c6be1d8f
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Jun 26 20:00:21 2012 +0800

    optimize: Use likely and unlikely.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 622bfc174ab0c8a04146bd5fb754e96bc51d38c0
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Jun 26 19:56:27 2012 +0800

    create_pixmap: use texture for large glyphs.
    
    As we only cache glyphs smaller than 64x64, we need to use
    texutre for the large glyphs.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 033349420f53cdbbdda37b3975c498a0dc885cf6
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Jun 26 17:19:16 2012 +0800

    glamor_copyarea: Fixed a bug introduced by 996194...
    
    Default return value should be FALSE.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit f3cff9975b1969b91b85f329be9fa925a9137f34
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Jun 26 16:24:32 2012 +0800

    glamor_glyphs: Slightly performance tuning.
    
    As glamor_glyphs never fallback, we don't need to keep the
    underlying glyphs routines, just override the ps->glys
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 593bd206bf2794dc1450e8e7d20142b8d0ca074b
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Jun 26 15:39:24 2012 +0800

    glamor_render: Don't allocate buffer for vbo each time.
    
    We can reuse the last one if the last one is big enough
    to contain current vertext data. In the meantime, Use
    MapBufferRange instead of MapBuffer.
    
    Testing shows, this patch brings some benefit for
    aa10text/rgb10text. Not too much, but indeed faster.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit e44ce79d719ece8997c777329834c5293fc668b8
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Jun 26 13:09:05 2012 +0800

    glamor_largepixmap: Walkaround for large texture's upload.
    
    I met a problem with large texture (larger than 7000x7000)'s
    uploading on SNB platform. The map_gtt get back a mapped VA
    without error, but write to that virtual address triggers
    BUS error. This work around is to avoid that direct uploading.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit fc3674fbf40cbe5ddb3e3a29ce86be7db743892b
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 25 23:24:37 2012 +0800

    glamor_render: Optimize the two pass ca rendering.
    
    For the componentAlpha with PictOpOver, we use two pass
    rendering to implement it. Previous implementation call
    two times the glamor_composite_... independently which is
    very inefficient. Now we change the control flow, and do
    the two pass internally and avoid duplicate works.
    
    For the x11perf -rgb10text, this optimization can get about
    30% improvement.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 63fb516af37d07f11b4e8d52338354de98885425
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 25 16:37:22 2012 +0800

    glamor_composite_glyph: Optimize glyphs with non-solid pattern.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 07177a4842851a5ee611bdff6693bdd81c9828c1
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Thu Jun 21 19:30:51 2012 +0800

    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>

commit 1f14ab24d716644f22846d9134883d7dda9bf0b2
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Thu Jun 21 19:29:06 2012 +0800

    glamor_render: Don't fallback when rendering glyphs with OpOver.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 029ef43d5fe0148b12d832a638b2c8c8e39fd262
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Thu Jun 21 19:27:07 2012 +0800

    glamor_create_pixmap: Allocate glyphs pixmap in memory.
    
    As we have glyphs atlas cache, we don't need to hold each
    glyphs on GPU. And for the subsequent optimization, we need
    to store the original glyphs pixmap on system memory.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit ba625dc12634c50bc8183e64fbfb2827b94d931f
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Thu Jun 21 19:26:28 2012 +0800

    glamor_fbo: fix a memory leak for large pixmap.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 08e86e4b64b5c36b5d1db0d95effb79d82842f14
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Fri Jun 15 09:00:15 2012 +0800

    Fix a bug for trapezoid clip
    
     We find in some cases the trapezoid will be render as a triangle and
     the left edge and right edge will cross with each other just bellow
     the top or over the bottom. The distance between the cross poind and
     the top or bottom is less than pixman_fixed_1_minus_e, so after the
     fixed converted to int, the cross point has the same value with the
     top or botton and the triangle should not be affected. But in our
     clip logic, the cross point will be clipped out. So add a logic
     to fix this problem.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit d9202dc2cb6aadfbc14983279649c2285c3e6501
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Fri Jun 15 13:31:30 2012 +0800

    gles2_largepixmap: force clip for a non-large pixmap.
    
    One case we need force clip when download/upload a drm_texture
    pixmap. Actually, this is only meaningful for testing purpose.
    As we may set the max_fbo_size to a very small value, but the
    drm texture may exceed this value but the drm texture pixmap
    is not largepixmap. This is not a problem with OpenGL. But for
    GLES2, we may need to call glamor_es2_pixmap_read_prepare to
    create a temporary fbo to do the color conversion. Then we have
    to force clip the drm pixmap here to avoid large pixmap handling
    at glamor_es2_pixmap_read_prepare.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 291402b1a9abd7a1e747c71b2e7c7104d5061614
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Fri Jun 15 09:03:42 2012 +0800

    glamor_emit_composite_vert: Optimize to don't do two times vert coping.
    
    We change some macros to put the vert to the vertex buffer
    directly when we cacluating it. This way, we can get about
    4% performance gain.
    
    This commit also fixed one RepeatPad bug, when we RepeatPad
    a not eaxct size fbo. We need to calculate the edge. The edge
    should be 1.0 - half point, not 1.0.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 741a065f55fc78d624ef9c423d8c36d8d06a95c3
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Fri Jun 15 08:46:24 2012 +0800

    glamor_glyphs: Before get upload to cache flush is needed.
    
    When we can't get a cache hit and have to evict one cache
    entry to upload new picture, we need to flush the previous
    buffer. Otherwise, we may get corrupt glyphs rendering result.
    
    This is the reason why user-font-proxy may fail sometimes.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 996194140ce10b8c8b2b1cf8774c857fed4a6f24
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Fri Jun 15 08:43:37 2012 +0800

    copyarea: Cleanup the error handling logic.
    
    Should use ok rather than mixed ok or ret.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 0604eb4aadf0162e7971b2e8b138174e376eb5e4
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue Jun 12 18:21:10 2012 +0800

    trapezoid: Fallback to sw-rasterize for largepixmap.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 566ba215aac7c191d85410b8794d28b561e0aff5
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Tue Jun 5 03:21:03 2012 +0800

    Use the direct render path for A1
    
     Because when mask depth is 1, there is no Anti-Alias at all,
     in this case, the directly render can work well and it is faseter.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit 0bc9a5de83063976902866e4175effedd3ae5a1f
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Mon Jun 4 07:52:05 2012 +0800

    Add the trapezoid direct render logic
    
     We firstly get the render area by clipping the trapezoid
     with the clip rect, then split the clipped area into small
     triangles and use the composite logic to generate the result
     directly. This manner is fast but have the problem that
     some implementation of GL do not implement the Anti-Alias
     of triangles fill, so the edge sometimes has sawtooth. It is
     not acceptable when use trapezoid to approximate circles and
     wide lines.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit 2133d22a7e57d0151051106fa15464218ae88385
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Mon Jun 4 07:22:27 2012 +0800

    Modilfy the composite logic to two phases
    
     We seperate the composite to two phases, firstly to
     select the shader according to source type and logic
     op, setting the right parameters. Then we emit the
     vertex array to generate the dest result.
     The reason why we do this is that the shader may be
     used to composite no only rect, trapezoid and triangle
     render function can also use it to render triangles and
     polygens. The old function glamor_composite_with_shader
     do the whole two phases work and can not match the
     new request.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit 445ee22ac67976d8226f2ba743a3a6897781c404
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Mon Jun 4 03:18:40 2012 +0800

    Add macro of vertex setting for triangle stripe
    
      Add macro of vertex setting for triangle stripe draw,
      and make the code clear.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit 2f6aa7a8d3fcae266b174fd629131616ef09686a
Author: RobinHe <robinhe@robinhe-desktop.lan>
Date:   Sat Jun 2 22:00:09 2012 +0800

    Use shader to generate the temp trapezoid mask
    
     The old manner of trapezoid render uses pixman to
     generate a mask pixmap and upload it to the GPU.
     This effect the performance. We now use shader to
     generate the temp trapezoid mask to avoid the
     uploading of this pixmap.
     We implement a anti-alias manner in the shader
     according to pixman, which will caculate the area
     inside the trapezoid dividing total area for every
     pixel and assign it to the alpha value of that pixel.
     The pixman use a int-to-fix manner to approximate but
     the shader use float, so the result may have some
     difference.
     Because the array in the shader has optimization problem,
     we need to emit the vertex of every trapezoid every
     time, which will effect the performance a lot. Need to
     improve it.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit 5f03910369012e1d9b973142f704d8488df57f59
Author: RobinHe <robinhe@robinhe-desktop.lan>
Date:   Sat Jun 2 21:52:25 2012 +0800

    Create the file glamor_triangles.c
    
     Create the file glamor_trapezoid.c, extract the logic
     relating to trapezoid from glamor_render.c to this file.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>

commit 7ed0d760fbd4378c59fde4d88adc6eca2cb3ea95
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 11 14:02:59 2012 +0800

    Enable large pixmap by default.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 3ed87725dc79c6dd51598a4ed060ad8c53306d55
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 11 13:05:48 2012 +0800

    largepixmap: Fix the selfcopy issue.
    
    If the source and destination are the same pixmap/fbo, and we
    need to split the copy to small pieces. Then we do need to
    consider the sequence of the small pieces when the copy area
    has overlaps. This commit take the reverse/upsidedown into
    the clipping function, thus it can generate correct sequence
    and avoid corruption self copying.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit d3e0c76f8cd17784b0b57ddaafe30c9996ac67de
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 11 11:42:46 2012 +0800

    largepixmap: Support self composite for large pixmap.
    
    The simplest way to support large pixmap's self compositing
    is to just clone a pixmap private data structure, and change
    the fbo and box to point to the correct postions. Don't need
    to copy a new box.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit f3c06ebd10f1518f11d75ac563f1d671df51935a
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 11 09:36:56 2012 +0800

    largepixmap: Add transform/repeat/reflect/pad support.
    
    This commit implement almost all the needed functions for
    the large pixmap support. It's almost complete.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 503dc69c03421f2ea42089137c024eca2a137ff6
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 11 02:27:00 2012 +0800

    glamor_getimage: should call miGetimage if failed to get sub-image.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit a0ae6978c712f5f8c325553d08d085693b9e6518
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 11 02:24:41 2012 +0800

    glamor_putimage: Correct the wrong stride value.
    
    We should not use the destination pixmap's devkind as the input
    image data's stride.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit b0257c3a67798d44e0f8218ccc798c5392729c62
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 11 02:15:53 2012 +0800

    largepixmap: Enable glamor_composite.
    
    Now we start to enable glamor_composite on large pixmap.
    We need to do a three layer clipping to split the dest/source/mask
    to small pieces. This commit only support non-transformation and
    repeat normal case.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit e836be57a45c3acee73251190593a882428fa7ed
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 11 01:52:14 2012 +0800

    largepixmap: Implement infrastructure for large pixmap.
    
    Added infrastructure for largepixmap, this commit implemented:
    1. Create/Destroy large pixmap.
    2. Upload/Download large pixmap.
    3. Implement basic repeat normal support.
    3. tile/fill/copyarea large pixmap get supported.
    
    The most complicated part glamor_composite still not implemented.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 25ba2dcf0e9858edc93fafa0d77f6d1a574bd833
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Mon Jun 11 01:02:30 2012 +0800

    glamor_largepixmap: first commit for large pixmap.
    
    This is the first commit to add support for large pixmap.
    The large here means a pixmap is larger than the texutre's
    size limitation thus can't fit into one single texutre.
    
    The previous implementation will simply fallback to use a
    in memory pixmap to contain the large pixmap which is
    very slow in practice.
    
    The basic idea here is to use an array of texture to hold
    the large pixmap. And when we need to get a specific area
    of the pixmap, we just need to compute/clip the correct
    region and find the corresponding fbo.
    
    We need to implement some auxiliary routines to clip every
    rendering operations into small pieces which can fit into
    one texture.
    
    The complex part is the transformation/repeat/repeatReflect
    and repeat pad and their comination. We will support all of
    them step by step.
    
    This commit just add some necessary data structure to represent
    the large pixmap, and doesn't change any rendering process.
    This commit doesn't add real large pixmap support.
    
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 6116de526bc174baa6292c216e44ad0109855d2d
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Tue May 15 10:08:03 2012 +0800

    Fix the problem of x_source and y_source causing radial error
    
     The x_source and y_source cause some problem in
     gradient. The old way to handle it by recaulate P1 P2
     to minus the x_source and y_source, but this causes
     problem in radial shader. Now we modify the manner to
     set the texture coordinates: (x_source, y_source) -->
     (x_source + width, y_source + height) to handle all the
     cases.
    
    Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit ce9c97547cc5897e2435c20c11ce13ae45fffeff
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Tue May 15 10:07:55 2012 +0800

    Fix the problem of vertical and horizontal case error in linear gradient.
    
     1. The vertical and horizontal judgement in linear
     gradient have problem when p1 point and p2 point
     distance is very small but the gradient pict have a
     transform matrix which will convert the X Y coordinates
     to small values. So the judgement is not suitable.
     Because this judgement's purpose is to assure the
     divisor not to be zero, so we simply it to enter
     horizontal judgement when p1 and p2's Y is same.
     Vertical case is deleted. 2. Delete the unused p1 p2
     uniform variable.
    
    Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit 98402a908f36aebc1537a22d86d77667c25a1136
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Tue May 15 10:07:46 2012 +0800

    Fix the problem of set the same stop several times.
    
     Some gradient set the stops at the same position, for
     example: firstly 0.5 to red color and then set 0.5 to
     blue. This kind of setting will cause the shader work
     not correctly because the percentage caculating need to
     use the stop[i] - stop[i-1] as dividend. The previous
     patch we just kill some stop if the distance between
     them is 0. But this cause the problem that the color
     for next stop is wrong. We now modify to handle it in
     the shader to avoid the 0 as dividend.
    
    Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit c1ec3ef1f0a86c5977d9623d1cbbc2159885d0af
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Tue May 15 10:07:35 2012 +0800

    Fix a bugy macro definition.
    
     The macro like "#define LINEAR_SMALL_STOPS 6 + 2" causes
     the problem. When use it to define like "GLfloat
     stop_colors_st[LINEAR_SMALL_STOPS*4];" The array is
     small than what we supposed it to be. Cause memory
     corruption problem and cause the bug of render wrong
     result. Fix it.
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit a3bbd3bc6299680ac6f4dd382ee403f556e15a92
Author: Junyan He <junyan.he@linux.intel.com>
Date:   Tue May 15 10:07:24 2012 +0800

    Extract the gradient related code out.
    
     1. Extract the logic of gradient from the glamor_render.c
     to the file glamor_gradient.c.
     2. Modify the logic of gradient pixmap gl draw. Use the
     logic like composite before, but the gradient always just
     have one rect to render, so no need to set the VB and EB,
     replace it with just call glDrawArrays. 3.Kill all the
     warning in glamor_render.c
    
    Reviewed-by: Zhigang Gong<zhigang.gong@linux.intel.com>
    
    Signed-off-by: Junyan He <junyan.he@linux.intel.com>
    Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>

commit da9563fd123263c5124ae336369d2aa8a5bdb9e4
Author: Zhigang Gong <zhigang.gong@linux.intel.com>
Date:   Tue May 15 15:25:41 2012 +0800

    glamor_set_destination_pixmap_priv_nc: set drawable's width x height.
    
    Previous implementation set the whole fbo's width and height as the
    viewpoint. This may increase the numerical error as we may only has


Reply to: