
Сообщение от
Dexus
ZXMAK, не, в Xpeccy (без S) пиксельные шейдеры в opengl режиме имеются, для имитации crt (какой-никакой). В паке с конфигами по моей ссылке. Но судя по скрину - собрана не GL версия, а с софтовым рендером и масштабированием.
Хм, ccmake не видит опции для GL:
Код:
CMAKE_BUILD_TYPE
CMAKE_INSTALL_PREFIX /usr/local
Qt5Core_DIR /usr/lib/aarch64-linux-gnu/cmake/Qt5Core
Qt5Gui_DIR /usr/lib/aarch64-linux-gnu/cmake/Qt5Gui
Qt5Widgets_DIR /usr/lib/aarch64-linux-gnu/cmake/Qt5Widgets
Qt5_DIR /usr/lib/aarch64-linux-gnu/cmake/Qt5
SDL2MAIN_LIBRARY /usr/lib/aarch64-linux-gnu/libSDL2main.a
SDL2_INCLUDE_DIR /usr/include/SDL2
SDL2_LIBRARY /usr/lib/aarch64-linux-gnu/libSDL2main.a;/usr/lib/aarch64-linux-gnu/libSDL2.so
Добавил вручную cmake -DUSEOPENGL=1, собралось но падает при запуске:
Код:
$ gdb ./xpeccy
GNU gdb (Debian 13.1-3) 13.1
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./xpeccy...
(No debugging symbols found in ./xpeccy)
(gdb) run
Starting program: /home/pi/ZX/Xpeccy/build/xpeccy
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ff271f040 (LWP 518305)]
[New Thread 0x7ff1c26040 (LWP 518306)]
Using SDL ver 2.26.5
Using ZLIB ver 1.2.13
Using Qt ver 5.15.8
[New Thread 0x7fed43a040 (LWP 518307)]
[New Thread 0x7fecc2a040 (LWP 518308)]
[New Thread 0x7fdf3cf040 (LWP 518311)]
[Thread 0x7fdf3cf040 (LWP 518311) exited]
[New Thread 0x7fdf3cf040 (LWP 518312)]
[New Thread 0x7fdebbf040 (LWP 518313)]
[Thread 0x7fdf3cf040 (LWP 518312) exited]
[New Thread 0x7fdf3cf040 (LWP 518314)]
[New Thread 0x7fde38a040 (LWP 518315)]
[Thread 0x7fdf3cf040 (LWP 518314) exited]
[Thread 0x7fdebbf040 (LWP 518313) exited]
[New Thread 0x7fdebbf040 (LWP 518316)]
[New Thread 0x7fdf3cf040 (LWP 518317)]
[Thread 0x7fdebbf040 (LWP 518316) exited]
[Thread 0x7fde38a040 (LWP 518315) exited]
[Thread 0x7fdf3cf040 (LWP 518317) exited]
[New Thread 0x7fdf3cf040 (LWP 518319)]
SDL audio device opening...success: 48000 960 (32784 / 32784)
constructor
Joystick not opened
[New Thread 0x7fde38a040 (LWP 518324)]
[New Thread 0x7fdebbf040 (LWP 518325)]
end:constructor
[New Thread 0x7fca7be040 (LWP 518326)]
[New Thread 0x7fbbbde040 (LWP 518329)]
initializeGL
vtx_shd
frg_shd
end: initializeGL
qt.qpa.wayland: Wayland does not support QWindow::requestActivate()
[New Thread 0x7fbb21f040 (LWP 518330)]
Thread 1 "xpeccy" received signal SIGSEGV, Segmentation fault.
0x0000007ff708c018 in QImage::QImage(QImage const&) () from /lib/aarch64-linux-gnu/libQt5Gui.so.5
(gdb)
видимо какая-то ошибка с неправильным вызовом QImage::QImage или до этого где-то память повредилась
Update: вот с callstack:
Код:
(gdb) bt
#0 0x0000007ff708c018 in QImage::QImage(QImage const&) () at /lib/aarch64-linux-gnu/libQt5Gui.so.5
#1 0x0000007fed9c3ed4 in QtWaylandClient::QWaylandShmBackingStore::toImage() const () at /lib/aarch64-linux-gnu/libQt5WaylandClient.so.5
#2 0x0000007ff7330d20 in QPlatformBackingStore::toTexture(QRegion const&, QSize*, QFlags<QPlatformBackingStore::TextureFlag>*) const ()
at /lib/aarch64-linux-gnu/libQt5Gui.so.5
#3 0x0000007ff7330724 in QPlatformBackingStore::composeAndFlush(QWindow*, QRegion const&, QPoint const&, QPlatformTextureList*, bool) ()
at /lib/aarch64-linux-gnu/libQt5Gui.so.5
#4 0x0000007ff7739b18 in () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#5 0x0000007ff773b2ec in () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#6 0x0000007ff773d720 in () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#7 0x0000007ff77706d0 in QWidget::event(QEvent*) () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#8 0x0000007ff772c0a0 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#9 0x0000007ff6c39d60 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/aarch64-linux-gnu/libQt5Core.so.5
#10 0x0000007ff773e374 in () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#11 0x0000007ff7740960 in () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#12 0x0000007ff77594dc in QWidget::repaint(QRect const&) () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#13 0x0000007ff775954c in QWidget::repaint() () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#14 0x00000055556174f0 in MainWin::frame_timer() (this=0x7fffffd240) at /home/pi/ZX/Xpeccy/src/emulwin.cpp:621
#15 0x0000007ff6c76628 in () at /lib/aarch64-linux-gnu/libQt5Core.so.5
#16 0x0000007ff6c7ac40 in QTimer::timeout(QTimer::QPrivateSignal) () at /lib/aarch64-linux-gnu/libQt5Core.so.5
#17 0x0000007ff6c6a5e4 in QObject::event(QEvent*) () at /lib/aarch64-linux-gnu/libQt5Core.so.5
#18 0x0000007ff772c0a0 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/aarch64-linux-gnu/libQt5Widgets.so.5
#19 0x0000007ff6c39d60 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/aarch64-linux-gnu/libQt5Core.so.5
#20 0x0000007ff6c98d80 in QTimerInfoList::activateTimers() () at /lib/aarch64-linux-gnu/libQt5Core.so.5
#21 0x0000007ff6c996ec in () at /lib/aarch64-linux-gnu/libQt5Core.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#22 0x0000007ff521774c in g_main_context_dispatch () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#23 0x0000007ff52179e0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#24 0x0000007ff5217a84 in g_main_context_iteration () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#25 0x0000007ff6c99ac8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/aarch64-linux-gnu/libQt5Core.so.5
#26 0x0000007ff6c38278 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/aarch64-linux-gnu/libQt5Core.so.5
#27 0x0000007ff6c412fc in QCoreApplication::exec() () at /lib/aarch64-linux-gnu/libQt5Core.so.5
#28 0x000000555560f060 in main(int, char**) (ac=<optimized out>, av=0x7fffffefb8) at /home/pi/ZX/Xpeccy/src/main.cpp:307
Дело не в OpenGL, сам OpenGL прекрасно работает.