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

Michel Dänzer michel at daenzer.net
Wed Mar 19 03:03:26 PDT 2014


On Die, 2014-03-18 at 22:09 -0700, Keith Packard wrote:
> This replaces all of the X core rendering code in glamor with shiny
> new stuff. This is the second time around for this code, it now passes
> the X test suite for Xlib chapter 9 (thanks to Eric's work making that
> run under piglit). And, it also now runs correctly when debugging with
> tiny FBOs tiling the pixmaps.

Sounds great, but...

Patch 11 breaks Xorg for me with radeonsi. It looks like solid fills are
basically not rendered at all anymore, so e.g. only the text is visible
in an xterm window. Then later patches make it even worse, resulting in
just a black screen instead of the root weave and an xterm window. Also,
e.g. x11perf -shmput500 gives ridiculously high results, so apparently
nothing is actually rendered.


Patch 17 fails to build for me:

make[4]: Entering directory `/home/daenzer/src/xorg-git/xserver/build-amd64/hw/xfree86/glamor_egl'
  CCLD     libglamoregl.la
../../../glamor/.libs/libglamor.a(glamor_utils.o): In function `glamor_solid_boxes':
/home/daenzer/src/xorg-git/xserver/build-amd64/glamor/../../glamor/glamor_utils.c:27: multiple definition of `glamor_solid_boxes'
../../../glamor/.libs/libglamor.a(glamor_fill.o):/home/daenzer/src/xorg-git/xserver/build-amd64/glamor/../../glamor/glamor_fill.c:275: first defined here
../../../glamor/.libs/libglamor.a(glamor_utils.o): In function `glamor_solid':
/home/daenzer/src/xorg-git/xserver/build-amd64/glamor/../../glamor/glamor_utils.c:60: multiple definition of `glamor_solid'
../../../glamor/.libs/libglamor.a(glamor_fill.o):/home/daenzer/src/xorg-git/xserver/build-amd64/glamor/../../glamor/glamor_fill.c:328: first defined here
collect2: error: ld returned 1 exit status
make[4]: *** [libglamoregl.la] Error 1


This is fixed in patch 20, but that one crashes on server startup:

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  0x00007fffec743a60 in fbFill (pDrawable=pDrawable at entry=0x10a3610, pGC=pGC at entry=0x10c47e0, 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  0x00007fffec7442a0 in fbPolyFillRect (pDrawable=pDrawable at entry=0x10a3610, pGC=pGC at entry=0x10c47e0, nrect=<optimized out>, nrect at entry=1, prect=0x7fffffffe828, prect at entry=0x7fffffffe820)
    at ../../fb/fbfillrect.c:72
#5  0x00007ffff23ab935 in glamor_polyfillrect (drawable=0x10a3610, gc=0x10c47e0, nrect=1, prect=0x7fffffffe820) at ../../glamor/glamor_rects.c:109
#6  0x000000000050f59c in damagePolyFillRect (pDrawable=0x10a3610, pGC=0x10c47e0, nRects=1, pRects=<optimized out>) at ../../../miext/damage/damage.c:1193
#7  0x00007ffff23bd04b in glamor_solid (pixmap=pixmap at entry=0x10a3610, 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:78
#8  0x00007ffff23a0fc2 in clear_mask_cache (maskcache=0x10c4540) at ../../glamor/glamor_glyphs.c:170
#9  glamor_realize_glyph_caches (pScreen=pScreen at entry=0x954500) at ../../glamor/glamor_glyphs.c:358
#10 0x00007ffff239a379 in glamor_create_screen_resources (screen=0x954500) at ../../glamor/glamor.c:296
#11 0x00007ffff28242a3 in RADEONCreateScreenResources_KMS (pScreen=0x954500) at ../../src/radeon_kms.c:219
#12 0x00000000004a82de in xf86CrtcCreateScreenResources (screen=0x954500) at ../../../../hw/xfree86/modes/xf86Crtc.c:709
#13 0x000000000043a716 in dix_main (argc=3, argv=0x7fffffffeae8, envp=<optimized out>) at ../../dix/main.c:223
#14 0x00007ffff5e34b45 in __libc_start_main (main=0x425ef0 <main>, argc=3, argv=0x7fffffffeae8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffead8)
    at libc-start.c:287
#15 0x0000000000425f1e in _start ()


Xephyr works mostly fine at patch 20, but e.g. gtkperf leaves artifacts
(it's fast though :).


-- 
Earthling Michel Dänzer            |                  http://www.amd.com
Libre software enthusiast          |                Mesa and X developer



More information about the xorg-devel mailing list