The patch is wrong. is_rtt is only set for textures, not renderbuffers, so it breaks rendering to depth renderbuffers.
Marek On Thu, Jul 17, 2014 at 12:02 AM, David Weber <weber.aulend...@gmail.com> wrote: > Hi, > > GPU: Radeon HD 5770 > mesa: 10.2.2 with gallium/llvm backend > llvm: 3.4.2 > linux: 3.15.3 > xf86-video-ati: 7.4.0 > > Switching from the software to the OpenGL backend in Gwenview with EGL > enabled QT4 crashes with the following BT: > state_tracker/st_atom_framebuffer.c:60:update_framebuffer_size: > Assertion `surface' failed. > > Program received signal SIGTRAP, Trace/breakpoint trap. > 0x00007fffe09e7ec1 in _debug_assert_fail (expr=0x7fffe0f9f85c > "surface", file=0x7fffe0f9f838 "state_tracker/st_atom_framebuffer.c", > line=60, > function=0x7fffe0f9f9a0 <__func__.33915> > "update_framebuffer_size") at util/u_debug.c:277 > 277 util/u_debug.c: Datei oder Verzeichnis nicht gefunden. > (gdb) bt > #0 0x00007fffe09e7ec1 in _debug_assert_fail (expr=0x7fffe0f9f85c > "surface", file=0x7fffe0f9f838 "state_tracker/st_atom_framebuffer.c", > line=60, > function=0x7fffe0f9f9a0 <__func__.33915> > "update_framebuffer_size") at util/u_debug.c:277 > #1 0x00007fffe0c8715d in update_framebuffer_size > (framebuffer=0x17f82b0, surface=0x0) at > state_tracker/st_atom_framebuffer.c:60 > #2 0x00007fffe0c87446 in update_framebuffer_state (st=0x17f76d0) at > state_tracker/st_atom_framebuffer.c:132 > #3 0x00007fffe0c84457 in st_validate_state (st=0x17f76d0) at > state_tracker/st_atom.c:213 > #4 0x00007fffe0c91618 in st_Clear (ctx=0x17b3a30, mask=2) at > state_tracker/st_cb_clear.c:446 > #5 0x00007fffe0b10a39 in _mesa_Clear (mask=16384) at main/clear.c:226 > #6 0x00007ffff20c9aaa in ?? () from /usr/lib64/qt4/libQtOpenGL.so.4 > #7 0x00007ffff4a21cfb in QPainter::begin(QPaintDevice*) () from > /usr/lib64/qt4/libQtGui.so.4 > #8 0x00007ffff4a22768 in QPainter::QPainter(QPaintDevice*) () from > /usr/lib64/qt4/libQtGui.so.4 > #9 0x00007ffff4ec9544 in QGraphicsView::paintEvent(QPaintEvent*) () > from /usr/lib64/qt4/libQtGui.so.4 > #10 0x00007ffff49221f0 in QWidget::event(QEvent*) () from > /usr/lib64/qt4/libQtGui.so.4 > #11 0x00007ffff4cb595e in QFrame::event(QEvent*) () from > /usr/lib64/qt4/libQtGui.so.4 > #12 0x00007ffff4ecd32b in QGraphicsView::viewportEvent(QEvent*) () > from /usr/lib64/qt4/libQtGui.so.4 > #13 0x00007ffff6a9f223 in > QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, > QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 > #14 0x00007ffff48d4bac in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 > #15 0x00007ffff48d7602 in QApplication::notify(QObject*, QEvent*) () > from /usr/lib64/qt4/libQtGui.so.4 > #16 0x00007ffff5600a08 in KApplication::notify(QObject*, QEvent*) () > from /usr/lib64/libkdeui.so.5 > #17 0x00007ffff6a9f0ad in QCoreApplication::notifyInternal(QObject*, > QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 > #18 0x00007ffff492705f in QWidgetPrivate::drawWidget(QPaintDevice*, > QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) > () from /usr/lib64/qt4/libQtGui.so.4 > #19 0x00007ffff4ae5639 in QWidgetPrivate::repaint_sys(QRegion const&) > () from /usr/lib64/qt4/libQtGui.so.4 > #20 0x00007ffff49159e4 in QWidgetPrivate::syncBackingStore() () from > /usr/lib64/qt4/libQtGui.so.4 > #21 0x00007ffff4922691 in QWidget::event(QEvent*) () from > /usr/lib64/qt4/libQtGui.so.4 > #22 0x00007ffff209fd0a in QGLWidget::event(QEvent*) () from > /usr/lib64/qt4/libQtOpenGL.so.4 > #23 0x00007ffff48d4bcc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 > #24 0x00007ffff48d7602 in QApplication::notify(QObject*, QEvent*) () > from /usr/lib64/qt4/libQtGui.so.4 > #25 0x00007ffff5600a08 in KApplication::notify(QObject*, QEvent*) () > from /usr/lib64/libkdeui.so.5 > #26 0x00007ffff6a9f0ad in QCoreApplication::notifyInternal(QObject*, > QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 > #27 0x00007ffff6aa26e8 in > QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) > () from /usr/lib64/qt4/libQtCore.so.4 > #28 0x00007ffff6acd653 in ?? () from /usr/lib64/qt4/libQtCore.so.4 > #29 0x00007ffff05e4a94 in g_main_context_dispatch () from > /usr/lib64/libglib-2.0.so.0 > #30 0x00007ffff05e4df0 in ?? () from /usr/lib64/libglib-2.0.so.0 > #31 0x00007ffff05e4eac in g_main_context_iteration () from > /usr/lib64/libglib-2.0.so.0 > #32 0x00007ffff6acd7c6 in > QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) > () from /usr/lib64/qt4/libQtCore.so.4 > #33 0x00007ffff4975f26 in ?? () from /usr/lib64/qt4/libQtGui.so.4 > #34 0x00007ffff6a9dcef in > QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () > from /usr/lib64/qt4/libQtCore.so.4 > #35 0x00007ffff6a9dfd0 in > QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from > /usr/lib64/qt4/libQtCore.so.4 > #36 0x00007ffff4d6e147 in QDialog::exec() () from /usr/lib64/qt4/libQtGui.so.4 > #37 0x000000000044c7f3 in Gwenview::MainWindow::showConfigDialog > (this=0xaf1e30) at /home/weber/work/gwenview/app/mainwindow.cpp:1468 > #38 0x00007ffff6ab3644 in QMetaObject::activate(QObject*, QMetaObject > const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4 > #39 0x00007ffff48ce752 in QAction::triggered(bool) () from > /usr/lib64/qt4/libQtGui.so.4 > #40 0x00007ffff48cfb00 in QAction::activate(QAction::ActionEvent) () > from /usr/lib64/qt4/libQtGui.so.4 > #41 0x00007ffff4ceef83 in ?? () from /usr/lib64/qt4/libQtGui.so.4 > #42 0x00007ffff4cf4179 in ?? () from /usr/lib64/qt4/libQtGui.so.4 > #43 0x00007ffff56bb44e in KMenu::mouseReleaseEvent(QMouseEvent*) () > from /usr/lib64/libkdeui.so.5 > #44 0x00007ffff492223b in QWidget::event(QEvent*) () from > /usr/lib64/qt4/libQtGui.so.4 > #45 0x00007ffff4cf58b3 in QMenu::event(QEvent*) () from > /usr/lib64/qt4/libQtGui.so.4 > #46 0x00007ffff48d4bcc in QApplicationPrivate::notify_helper(QObject*, > QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 > #47 0x00007ffff48d7e79 in QApplication::notify(QObject*, QEvent*) () > from /usr/lib64/qt4/libQtGui.so.4 > #48 0x00007ffff5600a08 in KApplication::notify(QObject*, QEvent*) () > from /usr/lib64/libkdeui.so.5 > #49 0x00007ffff6a9f0ad in QCoreApplication::notifyInternal(QObject*, > QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 > #50 0x00007ffff48dad03 in > QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, > QWidget*, QWidget**, QPointer<QWidget>&, bool) () > from /usr/lib64/qt4/libQtGui.so.4 > #51 0x00007ffff494e40c in ?? () from /usr/lib64/qt4/libQtGui.so.4 > #52 0x00007ffff494d301 in QApplication::x11ProcessEvent(_XEvent*) () > from /usr/lib64/qt4/libQtGui.so.4 > #53 0x00007ffff4975e52 in ?? () from /usr/lib64/qt4/libQtGui.so.4 > #54 0x00007ffff05e4a94 in g_main_context_dispatch () from > /usr/lib64/libglib-2.0.so.0 > #55 0x00007ffff05e4df0 in ?? () from /usr/lib64/libglib-2.0.so.0 > #56 0x00007ffff05e4eac in g_main_context_iteration () from > /usr/lib64/libglib-2.0.so.0 > #57 0x00007ffff6acd7ee in > QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) > () from /usr/lib64/qt4/libQtCore.so.4 > #58 0x00007ffff4975f26 in ?? () from /usr/lib64/qt4/libQtGui.so.4 > #59 0x00007ffff6a9dcef in > QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () > from /usr/lib64/qt4/libQtCore.so.4 > #60 0x00007ffff6a9dfd0 in > QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from > /usr/lib64/qt4/libQtCore.so.4 > #61 0x00007ffff6aa32c8 in QCoreApplication::exec() () from > /usr/lib64/qt4/libQtCore.so.4 > #62 0x0000000000429d36 in main (argc=<optimized out>, > argv=0x7fffffffdb58) at /home/weber/work/gwenview/app/main.cpp:139 > > I've no idea what the whole code is doing but I took a quick guess to > get at least rid of the crash. > > The OpenGL backend is still nonfunctional and Gwenview still crashes > on a clean start but this is probably a QT bug, see: > https://bugs.gentoo.org/show_bug.cgi?id=405989 > Possibly releated: > https://bugs.kde.org/show_bug.cgi?id=198294 > https://bugreports.qt-project.org/browse/QTBUG-12836 > > Cheers, > David > > From 68939d1cfe3c94e8cda5cfc2e6d941ddd979e0bd Mon Sep 17 00:00:00 2001 > From: David Weber <weber.aulend...@googlemail.com> > Date: Wed, 16 Jul 2014 23:34:52 +0200 > Subject: [PATCH] Don't update framebuffer size without surface > > --- > src/mesa/state_tracker/st_atom_framebuffer.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/state_tracker/st_atom_framebuffer.c > b/src/mesa/state_tracker/st_atom_framebuffer.c > index b195c55..7c2eec0 100644 > --- a/src/mesa/state_tracker/st_atom_framebuffer.c > +++ b/src/mesa/state_tracker/st_atom_framebuffer.c > @@ -127,9 +127,9 @@ update_framebuffer_state( struct st_context *st ) > if (strb->is_rtt) { > /* rendering to a GL texture, may have to update surface */ > st_update_renderbuffer_surface(st, strb); > + pipe_surface_reference(&framebuffer->zsbuf, strb->surface); > + update_framebuffer_size(framebuffer, strb->surface); > } > - pipe_surface_reference(&framebuffer->zsbuf, strb->surface); > - update_framebuffer_size(framebuffer, strb->surface); > } > else { > strb = st_renderbuffer(fb->Attachment[BUFFER_STENCIL].Renderbuffer); > -- > 2.0.0 > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev