[Intel-gfx] Problem using an Mesa based App with recent xorg/mesa/xf86-video-intel (loop?)
Florian Mickler
florian at mickler.org
Wed Mar 3 03:14:49 PST 2010
On Tue, 2 Mar 2010 13:59:00 -0800
Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> commit 529bf185fbcb9f7705b315a5106054ee25c1c77f
> Author: Eric Anholt <eric at anholt.net>
> Date: Wed Feb 24 17:54:13 2010 -0800
>
> In frame event handling, track drawable id instead of drawable
> pointer.
>
> in your xf86-video-intel tree?
>
yes. before that, glxgears wouldn't ever start ... the error goes away if i restart the xserver...
Am Dienstag, den 02.03.2010, 22:48 +0100 schrieb Florian Mickler:
> On Tue, 2 Mar 2010 11:50:05 -0800
> Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
>
> > So the server is hanging when the client tries to get buffers? Can you
> > see what it's doing at the time?
> >
>
> i'll try tomorrow...
btw, no. it is glxgears which is hanging. everything else works as it
should.
and it is hanging on this _XReply (@428) here:
@line 428 in mesa/src/glx/dri2.c:
416 XextCheckExtension(dpy, info, dri2ExtensionName, False);
417
418 LockDisplay(dpy);
419 GetReqExtra(DRI2GetBuffers, count * (4 * 2), req);
420 req->reqType = info->codes->major_opcode;
421 req->dri2ReqType = X_DRI2GetBuffersWithFormat;
422 req->drawable = drawable;
423 req->count = count;
424 p = (CARD32 *) & req[1];
425 for (i = 0; i < (count * 2); i++)
426 p[i] = attachments[i];
427
428 if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
429 UnlockDisplay(dpy);
430 SyncHandle();
431 return NULL;
432 }
433
434 *width = rep.width;
435 *height = rep.height;
it's not looping... i verified with strace that glxgears is blocking on
that poll() here...
I tried to follow the program flow up into that.. but besides me
thinking that this _XReply is surfacing in the xserver's dispatch.c
i'm not really advancing here ;) where does this request get handled?
when does _XReply return?
cheers,
Flo
p.s.: if the screen is idle and get's turned off, glxgears is running
fine... (started via ssh... i see the framerate reporting...)
p.p.s.: the whole backtrace when glxgears is hanging:
(gdb) bt full
#0 0x00007f3aef5ea10f in poll () from /lib/libc.so.6
No symbol table info available.
#1 0x00007f3aee19fa32 in _xcb_conn_wait () from /usr/lib/libxcb.so.1
No symbol table info available.
#2 0x00007f3aee1a15e1 in xcb_wait_for_reply ()
from /usr/lib/libxcb.so.1
No symbol table info available.
#3 0x00007f3aef2460be in _XReply () from /usr/lib/libX11.so.6
No symbol table info available.
#4 0x00007f3aefb44f76 in DRI2GetBuffersWithFormat (dpy=0x234c010,
drawable=<value optimized out>, width=0x235f3b4, height=0x235f3b8,
attachments=0x7fffc5ac6450, count=2, outCount=0x7fffc5ac648c) at
dri2.c:428
info = 0x2357960
rep = {type = 112 'p', pad1 = 100 'd', sequenceNumber = 50604,
length = 32767, width = 3984539715, height = 32570, count =
0,
pad2 = 0, pad3 = 37116448, pad4 = 0}
buffers = <value optimized out>
repBuffer = {attachment = 41009200, name = 0, pitch =
3985030468,
cpp = 32570, flags = 2097152}
i = <value optimized out>
#5 0x00007f3aefb43ca8 in dri2GetBuffersWithFormat (
driDrawable=<value optimized out>, width=0x235f3b4,
height=0xffffffffffffffff, attachments=0x234d6d8, count=5277,
out_count=0x7fffc5ac648c, loaderPrivate=0x235f2c0) at dri2_glx.c:435
---Type <return> to continue, or q <return> to quit---
pdraw = <value optimized out>
buffers = <value optimized out>
#6 0x00007f3aed6de927 in intel_update_renderbuffers (
context=<value optimized out>, drawable=0x235f380) at
intel_context.c:252
rb = <value optimized out>
region = <value optimized out>
depth_region = <value optimized out>
intel = 0x2365a20
front_rb = <value optimized out>
back_rb = 0x3
depth_rb = 0x26b9340
stencil_rb = 0x26b9340
buffers = <value optimized out>
screen = 0x235cf20
i = 3
count = <value optimized out>
attachments = {1, 32, 9, 32, 13, 0, 0, 0, 655360, 0}
region_name = <value optimized out>
__func__ = "intel_update_renderbuffers"
#7 0x00007f3aed6decef in intel_prepare_render (intel=0x2365a20)
at intel_context.c:395
driContext = 0x2361d70
drawable = 0x235f380
---Type <return> to continue, or q <return> to quit---
#8 0x00007f3aed70d3ca in brw_try_draw_prims (ctx=0x2365a20,
arrays=0x23b54a8,
prim=0x7fffc5ac65a0, nr_prims=1, ib=0x0,
index_bounds_valid=<value optimized out>, min_index=0, max_index=3)
at brw_draw.c:340
retval = <value optimized out>
warn = <value optimized out>
first_time = <value optimized out>
i = <value optimized out>
intel = 0x7fffc5ac6200
__FUNCTION__ = "brw_try_draw_prims"
warned = 0 '\000'
#9 brw_draw_prims (ctx=0x2365a20, arrays=0x23b54a8,
prim=0x7fffc5ac65a0,
nr_prims=1, ib=0x0, index_bounds_valid=<value optimized out>,
min_index=0,
max_index=3) at brw_draw.c:441
No locals.
#10 0x00007f3aed7c91bf in vbo_exec_DrawArrays (mode=6, start=0, count=4)
at vbo/vbo_exec_array.c:524
ctx = 0x2365a20
prim = {{mode = 6, indexed = 0, begin = 1, end = 1, weak = 0,
pad = 0,
start = 0, count = 4, basevertex = 0}}
__FUNCTION__ = "vbo_exec_DrawArrays"
#11 0x00007f3aed847910 in _mesa_meta_Clear (ctx=0x2365a20, buffers=0)
at drivers/common/meta.c:1461
---Type <return> to continue, or q <return> to quit---
clear = 0x26b47e4
verts = {{x = 0, y = 0, z = -1, r = 0, g = 0, b = 0, a = 0}, {x
= 300,
y = 0, z = -1, r = 0, g = 0, b = 0, a = 0}, {x = 300, y =
300,
z = -1, r = 0, g = 0, b = 0, a = 0}, {x = 0, y = 300, z =
-1,
r = 0, g = 0, b = 0, a = 0}}
metaSave = 4294967003
__PRETTY_FUNCTION__ = "_mesa_meta_Clear"
#12 0x00007f3aed6dd8ac in intelClear (ctx=0x2365a20,
mask=<value optimized out>) at intel_clear.c:182
intel = 0x7fffc5ac6200
colorMask = <value optimized out>
tri_mask = 18
blit_mask = 0
swrast_mask = 0
fb = 0x26b8e20
i = 0
#13 0x0000000000402be6 in draw ()
No symbol table info available.
#14 0x000000000040360b in main ()
No symbol table info available.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100303/985ff3ec/attachment-0001.htm>
More information about the xorg-devel
mailing list