[PATCH 00/20] New glamor core rendering code (v2)

Michel Dänzer michel at daenzer.net
Tue Apr 8 00:25:44 PDT 2014

On Mon, 2014-04-07 at 23:36 -0700, Keith Packard wrote:
> Michel Dänzer <michel at daenzer.net> writes:
> > E.g. the GtkComboBox test leaves artifacts outside of the gtkperf
> > window, or also just scrolling the gtkperf widget containing the test
> > results.
> >
> > I think at least part of the problem is using glCopyPixels for
> > overlapping copies. 3D cores just cannot do that; if any versions of the
> > OpenGL spec do not explicitly say this produces undefined results,
> > that's probably just an oversight in the spec, as Markus pointed out.
> Yeah, people keep telling me it's undefined, and yet the spec, as of of
> 4.3 says that it should work 'just as if ReadPixels were called'
> ... 'written to the frame buffer just as if DrawPixels'. That seems
> pretty unambiguous to me; if you can't make it work like ReadPixels
> followed by DrawPixels, you're doing it wrong.
> In any case, 4.4 adds weasel words explicitly breaking the contract
> above, and so I've switched to a temporary buffer path to the blt code
> which should help in your case. Turns out to not be a performance
> problem on current intel hardware as the 2D engine used for glCopyPixels
> hasn't seen much in the way of improvement for several generations. Of
> course, older hardware with a relatively better 2D engine will see a
> slow-down because of the extra memory transfers.
> Please check out my current glamor-server branch and see if that helps any.

Yes, that works fine now in Xephyr. The only remaining obvious problem
there is the xfwm4 window decoration corruption regression from the
master branch.

Unfortunately, your current glamor-server branch crashes Xorg for me on
startup, see the backtrace below. Commits
2642a4d8ed87488a60de827088100a8e7c2ffe5f ('glamor: Add glamor_transfer
based glamor_get_image and glamor_put_image') and
deb95d45c7b53f33a1787021f0aea67fde21ce8e ('glamor: Add accelerated
stipple support') fail to compile, so I can't bisect this further than
to the commits surrounding them.

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6d6c337 in ?? () from /usr/lib/x86_64-linux-gnu/libpixman-1.so.0
(gdb) bt
#0  0x00007ffff6d6c337 in ?? () from /usr/lib/x86_64-linux-gnu/libpixman-1.so.0
#1  0x00007ffff6d5342f in ?? () from /usr/lib/x86_64-linux-gnu/libpixman-1.so.0
#2  0x00007ffff6d06741 in pixman_fill () from /usr/lib/x86_64-linux-gnu/libpixman-1.so.0
#3  0x00007fffec8b1af0 in fbFill (pDrawable=pDrawable at entry=0x10c0cf0, pGC=pGC at entry=0x10e1ec0, x=x at entry=0, y=y at entry=1024, width=width at entry=1024, height=height at entry=32)
    at ../../fb/fbfill.c:43
#4  0x00007fffec8b2330 in fbPolyFillRect (pDrawable=pDrawable at entry=0x10c0cf0, pGC=pGC at entry=0x10e1ec0, nrect=<optimized out>, nrect at entry=1, prect=0x7fffffffe828, prect at entry=0x7fffffffe820)
    at ../../fb/fbfillrect.c:72
#5  0x00007ffff23a8a25 in glamor_poly_fill_rect_bail (drawable=0x10c0cf0, gc=0x10e1ec0, nrect=1, prect=0x7fffffffe820) at ../../glamor/glamor_rects.c:164
#6  0x000000000050fabc in damagePolyFillRect (pDrawable=0x10c0cf0, pGC=0x10e1ec0, nRects=1, pRects=<optimized out>) at ../../../miext/damage/damage.c:1193
#7  0x00007ffff23bacfb in glamor_solid (pixmap=pixmap at entry=0x10c0cf0, x=x at entry=0, y=y at entry=1024, width=width at entry=1024, height=height at entry=32, alu=alu at entry=3 '\003', 
    planemask=planemask at entry=4294967295, fg_pixel=fg_pixel at entry=0) at ../../glamor/glamor_utils.c:79
#8  0x00007ffff239d27f in clear_mask_cache (maskcache=0x10e1c20) at ../../glamor/glamor_glyphs.c:170
#9  glamor_realize_glyph_caches (pScreen=pScreen at entry=0x88b5c0) at ../../glamor/glamor_glyphs.c:358
#10 0x00007ffff2395919 in glamor_create_screen_resources (screen=0x88b5c0) at ../../glamor/glamor.c:307
#11 0x00007ffff2824233 in RADEONCreateScreenResources_KMS (pScreen=0x88b5c0) at ../../src/radeon_kms.c:223
#12 0x00000000004a85be in xf86CrtcCreateScreenResources (screen=0x88b5c0) at ../../../../hw/xfree86/modes/xf86Crtc.c:709
#13 0x000000000043a986 in dix_main (argc=3, argv=0x7fffffffeae8, envp=<optimized out>) at ../../dix/main.c:223
#14 0x00007ffff5e34b45 in __libc_start_main (main=0x426160 <main>, argc=3, argv=0x7fffffffeae8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffead8)
    at libc-start.c:287
#15 0x000000000042618e in _start ()

Earthling Michel Dänzer            |                  http://www.amd.com
Libre software enthusiast          |                Mesa and X developer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 173 bytes
Desc: This is a digitally signed message part
URL: <http://lists.x.org/archives/xorg-devel/attachments/20140408/015a8ed9/attachment.sig>

More information about the xorg-devel mailing list