[PATCH xserver] dri3: Fix DRI3.2 support for drivers other than modesetting-ddx.

Mario Kleiner mario.kleiner.de at gmail.com
Mon Apr 30 07:26:48 UTC 2018


On Wed, Apr 25, 2018 at 2:23 AM, Mike Lothian <mike at fireburn.co.uk> wrote:
>
> The plasmashell & steam freezes aren't present with the Intel or AMDGPU
> DDXs, only modesetting
>
> I'm quite happy to mark https://bugs.freedesktop.org/show_bug.cgi?id=105851
> as resolved and look into the modesetting freezes seperately
>
> Cheers again
>
> Mike

Mike, a bug report about those freezes would be good. I see the same
annoying freezes of the KDE panel randomly on my old KUbuntu 16.04
plasmashell, only with modesetting on server 1.20, but on all gpu's.
So far i was mostly unsuccessful in finding the cause. The only thing
i found so far is that Mesa's dri3 loader always gets stuck trying to
get a new back buffer in dri3_find_back, apparently waiting for a
reply from the server that it never receives, like in this stacktrace:

plasmashell stuck, modesetting ddx, dri3, normal or with
dmabuf_modifiers, raw or composited/egl - bt:

#0  0x00007feb6f5f074d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007feb736b8172 in poll (__timeout=-1, __nfds=1,
__fds=0x7ffdb6c2baf0) at /usr/include/x86_64-linux-gnu/bits/poll2.h:46
#2  _xcb_conn_wait (c=c at entry=0xc25390, cond=cond at entry=0x36a40d8,
vector=vector at entry=0x0, count=count at entry=0x0) at xcb_conn.c:479
#3  0x00007feb736b9e69 in xcb_wait_for_special_event (c=0xc25390,
se=0x36a40b0) at xcb_in.c:795
#4  0x00007feb6b82b246 in dri3_wait_for_event_locked (draw=0x43d6358)
at loader_dri3_helper.c:454
#5  0x00007feb6b82b3b8 in dri3_find_back (draw=draw at entry=0x43d6358)
at loader_dri3_helper.c:580
#6  0x00007feb6b82c506 in dri3_get_buffer (format=format at entry=4107,
buffer_type=buffer_type at entry=loader_dri3_buffer_back,
draw=draw at entry=0x43d6358, driDrawable=0x405b4c0) at
loader_dri3_helper.c:1656
#7  0x00007feb6b82d291 in loader_dri3_get_buffers
(driDrawable=driDrawable at entry=0x405b4c0, format=4107,
stamp=stamp at entry=0x405b4f0,
loaderPrivate=loaderPrivate at entry=0x43d6358, buffer_mask=<optimized
out>, buffer_mask at entry=1, buffers=buffers at entry=0x7ffdb6c2bde0)
    at loader_dri3_helper.c:1861
#8  0x00007feb4b54681d in intel_update_image_buffers
(drawable=0x405b4c0, brw=0x16aaec0) at brw_context.c:1753
#9  intel_update_renderbuffers (context=context at entry=0x15bc840,
drawable=drawable at entry=0x405b4c0) at brw_context.c:1429
#10 0x00007feb4b546cf1 in intel_prepare_render
(brw=brw at entry=0x16aaec0) at brw_context.c:1450
#11 0x00007feb4b5419ea in brw_clear (ctx=0x16aaec0, mask=50) at brw_clear.c:300
#12 0x00007feb72f4049a in QSGBatchRenderer::Renderer::renderBatches()
() from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#13 0x00007feb72f45e82 in QSGBatchRenderer::Renderer::render() () from
/usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#14 0x00007feb72f51b6f in QSGRenderer::renderScene(QSGBindable const&)
() from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#15 0x00007feb72f523bb in QSGRenderer::renderScene(unsigned int) ()
from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#16 0x00007feb72f6287e in
QSGRenderContext::renderNextFrame(QSGRenderer*, unsigned int) () from
/usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#17 0x00007feb72fad0db in QQuickWindowPrivate::renderSceneGraph(QSize
const&) () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#18 0x00007feb72f7d19b in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#19 0x00007feb72f7e2a1 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#20 0x00007feb709ca05c in QApplicationPrivate::notify_helper(QObject*,
QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007feb709cf516 in QApplication::notify(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007feb6fec738b in QCoreApplication::notifyInternal(QObject*,
QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007feb6ff1c5ed in QTimerInfoList::activateTimers() () from
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007feb6ff1caf1 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007feb6c384197 in g_main_context_dispatch () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#26 0x00007feb6c3843f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007feb6c38449c in g_main_context_iteration () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007feb6ff1d7eb in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
() from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#29 0x00007feb6fec4b4a in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#30 0x00007feb6feccbec in QCoreApplication::exec() () from
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#31 0x0000000000432d4a in main ()

Anyway this would need to go into that bug report of yours.

thanks,
-mario


More information about the xorg-devel mailing list