Log graphics API that is in use by the Qt Quick#32
Conversation
| case QSGRendererInterface::OpenGL: return "OpenGL ES 2.0 or higher"; | ||
| case QSGRendererInterface::Direct3D12: return "Direct3D 12"; | ||
| case QSGRendererInterface::OpenVG: return "OpenVG via EGL"; | ||
| #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) |
There was a problem hiding this comment.
There is the isApiRhiBased function. It was introduced in Qt 5.14.
This check is then appropriate and allows for a simplified control flow.
There was a problem hiding this comment.
@jarolrod still needs #if as the cases below don't exist in <5.14.
There was a problem hiding this comment.
yep, i meant that the way it is done here simplifies the control flow compared to if we used the function.
| QString GraphicsApi(QQuickWindow* window) | ||
| { | ||
| switch (window->rendererInterface()->graphicsApi()) { | ||
| case QSGRendererInterface::Unknown: return "Unknown"; |
There was a problem hiding this comment.
I've spent hours and hours digging through Qt code to figure out if there is a better way than manually maintaining these strings. Sadly, there is not. For now, this allows us to conveniently debug.
Note: Let's revisit this at some point in the future
|
Concept ACK |
|
FWIW, setting |
|
The PR description has been updated. |
| case QSGRendererInterface::OpenGL: return "OpenGL ES 2.0 or higher"; | ||
| case QSGRendererInterface::Direct3D12: return "Direct3D 12"; | ||
| case QSGRendererInterface::OpenVG: return "OpenVG via EGL"; | ||
| #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) |
There was a problem hiding this comment.
@jarolrod still needs #if as the cases below don't exist in <5.14.
682274a ci: install llvm-symbolizer in MSAN jobs (fanquake) 96527cd ci: use LLVM 16.0.6 in MSAN jobs (fanquake) Pull request description: Fixes: bitcoin/bitcoin#27737 (comment). Tested (locally) with #27495 that it produces a symbolized backtrace: ```bash 2023-06-20T17:5Uninitialized bytes in __interceptor_strlen at offset 113 inside [0x719000006908, 114) ==35429==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x56060fae8c4b in sqlite3Strlen30 /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:32670:28 #1 0x56060fb0fcf4 in sqlite3PagerOpen /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:57953:17 #2 0x56060fb0f48b in sqlite3BtreeOpen /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:68679:10 #3 0x56060fb01384 in openDatabase /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:171911:8 bitcoin-core#4 0x56060fb016ca in sqlite3_open_v2 /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:172034:10 bitcoin-core#5 0x56060e8a94db in wallet::SQLiteDatabase::Open() src/wallet/sqlite.cpp:250:19 bitcoin-core#6 0x56060e8a30fd in wallet::SQLiteDatabase::SQLiteDatabase(fs::path const&, fs::path const&, wallet::DatabaseOptions const&, bool) src/wallet/sqlite.cpp:133:9 bitcoin-core#7 0x56060e8b78f5 in std::__1::__unique_if<wallet::SQLiteDatabase>::__unique_single std::__1::make_unique[abi:v160006]<wallet::SQLiteDatabase, std::__1::__fs::filesystem::path, fs::path&, wallet::DatabaseOptions const&>(std::__1::__fs::filesystem::path&&, fs::path&, wallet::DatabaseOptions const&) /home/ubuntu/ci_scratch/ci/scratch/msan/cxx_build/include/c++/v1/__memory/unique_ptr.h:686:30 bitcoin-core#8 0x56060e8b5240 in wallet::MakeSQLiteDatabase(fs::path const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/wallet/sqlite.cpp:641:19 bitcoin-core#9 0x56060e83560b in wallet::MakeDatabase(fs::path const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/wallet/walletdb.cpp:1261:16 bitcoin-core#10 0x56060e7546e9 in wallet::MakeWalletDatabase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/wallet/wallet.cpp:2905:12 bitcoin-core#11 0x56060e4bc03f in wallet::TestLoadWallet(wallet::WalletContext&) src/wallet/test/util.cpp:68:21 bitcoin-core#12 0x56060e349ad4 in wallet::wallet_tests::ZapSelectTx::test_method() src/wallet/test/wallet_tests.cpp:897:19 bitcoin-core#13 0x56060e348598 in wallet::wallet_tests::ZapSelectTx_invoker() src/wallet/test/wallet_tests.cpp:891:1 bitcoin-core#14 0x56060cfec325 in boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:117:11 bitcoin-core#15 0x56060ced3a7e in boost::function0<void>::operator()() const /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:763:14 bitcoin-core#16 0x56060ced3a7e in boost::detail::forward::operator()() /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1388:32 bitcoin-core#17 0x56060ced3a7e in boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke(boost::detail::function::function_buffer&) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:137:18 bitcoin-core#18 0x56060cda71c2 in boost::function0<int>::operator()() const /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:763:14 bitcoin-core#19 0x56060cda71c2 in int boost::detail::do_invoke<boost::shared_ptr<boost::detail::translator_holder_base>, boost::function<int ()>>(boost::shared_ptr<boost::detail::translator_holder_base> const&, boost::function<int ()> const&) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:301:30 bitcoin-core#20 0x56060cda71c2 in boost::execution_monitor::catch_signals(boost::function<int ()> const&) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:903:16 bitcoin-core#21 0x56060cda784a in boost::execution_monitor::execute(boost::function<int ()> const&) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1301:16 bitcoin-core#22 0x56060cd9ec3a in boost::execution_monitor::vexecute(boost::function<void ()> const&) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1397:5 bitcoin-core#23 0x56060cd9ec3a in boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned long) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_monitor.ipp:49:9 bitcoin-core#24 0x56060ce1a07b in boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:815:44 bitcoin-core#25 0x56060ce1ad8b in boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:784:58 bitcoin-core#26 0x56060ce1ad8b in boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:784:58 bitcoin-core#27 0x56060cd9b8de in boost::unit_test::framework::run(unsigned long, bool) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:1722:29 bitcoin-core#28 0x56060cdd4fac in boost::unit_test::unit_test_main(boost::unit_test::test_suite* (*)(int, char**), int, char**) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_main.ipp:250:9 bitcoin-core#29 0x56060cdd6094 in main /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_main.ipp:306:12 bitcoin-core#30 0x7f7379691d8f (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: 69389d485a9793dbe873f0ea2c93e02efaa9aa3d) bitcoin-core#31 0x7f7379691e3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f) (BuildId: 69389d485a9793dbe873f0ea2c93e02efaa9aa3d) bitcoin-core#32 0x56060cce2e24 in _start (/home/ubuntu/ci_scratch/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/test_bitcoin+0x188e24) Uninitialized value was created by a heap allocation #0 0x56060cd163f2 in malloc /ci_base_install/ci/scratch/msan/llvm-project/compiler-rt/lib/msan/msan_interceptors.cpp:934:3 #1 0x56060fc10069 in sqlite3MemMalloc /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:25163:7 #2 0x56060fb063bc in mallocWithAlarm /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:28846:7 #3 0x56060fae4eb9 in sqlite3Malloc /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:28876:5 bitcoin-core#4 0x56060faf9e19 in sqlite3DbMallocRaw /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:29176:7 bitcoin-core#5 0x56060fb0fc67 in sqlite3PagerOpen /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:57938:17 bitcoin-core#6 0x56060fb0f48b in sqlite3BtreeOpen /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:68679:10 bitcoin-core#7 0x56060fb01384 in openDatabase /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:171911:8 bitcoin-core#8 0x56060fb016ca in sqlite3_open_v2 /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:172034:10 bitcoin-core#9 0x56060e8a94db in wallet::SQLiteDatabase::Open() src/wallet/sqlite.cpp:250:19 bitcoin-core#10 0x56060e8a30fd in wallet::SQLiteDatabase::SQLiteDatabase(fs::path const&, fs::path const&, wallet::DatabaseOptions const&, bool) src/wallet/sqlite.cpp:133:9 bitcoin-core#11 0x56060e8b78f5 in std::__1::__unique_if<wallet::SQLiteDatabase>::__unique_single std::__1::make_unique[abi:v160006]<wallet::SQLiteDatabase, std::__1::__fs::filesystem::path, fs::path&, wallet::DatabaseOptions const&>(std::__1::__fs::filesystem::path&&, fs::path&, wallet::DatabaseOptions const&) /home/ubuntu/ci_scratch/ci/scratch/msan/cxx_build/include/c++/v1/__memory/unique_ptr.h:686:30 bitcoin-core#12 0x56060e8b5240 in wallet::MakeSQLiteDatabase(fs::path const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/wallet/sqlite.cpp:641:19 bitcoin-core#13 0x56060e83560b in wallet::MakeDatabase(fs::path const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/wallet/walletdb.cpp:1261:16 bitcoin-core#14 0x56060e7546e9 in wallet::MakeWalletDatabase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&) src/wallet/wallet.cpp:2905:12 bitcoin-core#15 0x56060e4bc03f in wallet::TestLoadWallet(wallet::WalletContext&) src/wallet/test/util.cpp:68:21 bitcoin-core#16 0x56060e349ad4 in wallet::wallet_tests::ZapSelectTx::test_method() src/wallet/test/wallet_tests.cpp:897:19 bitcoin-core#17 0x56060e348598 in wallet::wallet_tests::ZapSelectTx_invoker() src/wallet/test/wallet_tests.cpp:891:1 bitcoin-core#18 0x56060cfec325 in boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:117:11 bitcoin-core#19 0x56060ced3a7e in boost::function0<void>::operator()() const /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:763:14 bitcoin-core#20 0x56060ced3a7e in boost::detail::forward::operator()() /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1388:32 bitcoin-core#21 0x56060ced3a7e in boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke(boost::detail::function::function_buffer&) /home/ubuntu/ci_scratch/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:137:18 SUMMARY: MemorySanitizer: use-of-uninitialized-value /home/ubuntu/ci_scratch/depends/work/build/x86_64-pc-linux-gnu/sqlite/3380500-f816a3e2d52/sqlite3.c:32670:28 in sqlite3Strlen30 ``` as opposed to unsymbolized: https://cirrus-ci.com/task/6005512018329600?logs=ci#L3245. ACKs for top commit: MarcoFalke: lgtm ACK 682274a Tree-SHA512: 8f3e7636761c956537a472989bf07529f5afbd988c5e7e1f07ece8b2599608fa4fe9e1efdc6e302cf0f7f44dec3cf9a3c1e68b758af81a8a8b476a43d3220807
Github-Pull: bitcoin-core#32 Rebased-From: 5eb4b72
Github-Pull: bitcoin-core#32 Rebased-From: c763435
Github-Pull: bitcoin-core#32 Rebased-From: 5eb4b72
Github-Pull: bitcoin-core#32 Rebased-From: c763435
Github-Pull: bitcoin-core#32 Rebased-From: 5eb4b72
Github-Pull: bitcoin-core#32 Rebased-From: c763435
Github-Pull: bitcoin-core#32 Rebased-From: 5eb4b72
Github-Pull: bitcoin-core#32 Rebased-From: c763435
Github-Pull: bitcoin-core#32 Rebased-From: 5eb4b72
Github-Pull: bitcoin-core#32 Rebased-From: c763435
… Qt Quick 76426d3948b28e85bb767ddcc645b5344cc7aaaa qml: Print "Default" for Default Style in log (Hennadii Stepanov) d125c75 qml: Use QmlUtil::GraphicsApi utility function for logging (Hennadii Stepanov) fc92e4b qml: Add QmlUtil::GraphicsApi utility function (Hennadii Stepanov) Pull request description: Some log excerpts with this PR: - Linux Mint, system Qt 5.12.8 ``` $ ./src/qt/bitcoin-qt -printtoconsole Bitcoin Core version v22.99.0-76426d3948b2 (release build) Qt 5.12.8 (dynamic), plugin=xcb (dynamic) No static plugins. QQuickStyle: Default System: Linux Mint 20.2, x86_64-little_endian-lp64 Screen: HDMI-1 2560x1440, pixel ratio=1.0 Screen: DP-1 1920x1080, pixel ratio=1.0 ... GUI: Graphics API in use: "OpenGL ES 2.0 or higher" ... ``` - Ubuntu Hirsute, system Qt 5.15.2 ``` $ QSG_RHI=1 ./src/qt/bitcoin-qt -printtoconsole GUI: Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway. Bitcoin Core version v22.99.0-76426d3948b2 (release build) Qt 5.15.2 (dynamic), plugin=xcb (dynamic) No static plugins. QQuickStyle: Default System: Ubuntu 21.04, x86_64-little_endian-lp64 Screen: XWAYLAND0 2560x1440, pixel ratio=1.0 ... GUI: Graphics API in use: "OpenGL ES 2.0 or higher via a graphics abstraction layer" ... ``` ACKs for top commit: promag: Code review ACK 76426d3948b28e85bb767ddcc645b5344cc7aaaa. Tree-SHA512: 4ef16552b93ee3e6691d60d4e2917c1d6737fcc19be84591e2fd0f23f0a9cdf3d76abc13fc39c26ccd7badb436a3702529aeacb96ea3f93a704e65eed0f9ee32
… Qt Quick
76426d3948b28e85bb767ddcc645b5344cc7aaaa qml: Print "Default" for Default Style in log (Hennadii Stepanov)
d125c75156641a629183bd4a4d662a71891475ae qml: Use QmlUtil::GraphicsApi utility function for logging (Hennadii Stepanov)
fc92e4b14efb50c6aabef5804d170a635fefec3d qml: Add QmlUtil::GraphicsApi utility function (Hennadii Stepanov)
Pull request description:
Some log excerpts with this PR:
- Linux Mint, system Qt 5.12.8
```
$ ./src/qt/bitcoin-qt -printtoconsole
Bitcoin Core version v22.99.0-76426d3948b2 (release build)
Qt 5.12.8 (dynamic), plugin=xcb (dynamic)
No static plugins.
QQuickStyle: Default
System: Linux Mint 20.2, x86_64-little_endian-lp64
Screen: HDMI-1 2560x1440, pixel ratio=1.0
Screen: DP-1 1920x1080, pixel ratio=1.0
...
GUI: Graphics API in use: "OpenGL ES 2.0 or higher"
...
```
- Ubuntu Hirsute, system Qt 5.15.2
```
$ QSG_RHI=1 ./src/qt/bitcoin-qt -printtoconsole
GUI: Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
Bitcoin Core version v22.99.0-76426d3948b2 (release build)
Qt 5.15.2 (dynamic), plugin=xcb (dynamic)
No static plugins.
QQuickStyle: Default
System: Ubuntu 21.04, x86_64-little_endian-lp64
Screen: XWAYLAND0 2560x1440, pixel ratio=1.0
...
GUI: Graphics API in use: "OpenGL ES 2.0 or higher via a graphics abstraction layer"
...
```
ACKs for top commit:
promag:
Code review ACK 76426d3948b28e85bb767ddcc645b5344cc7aaaa.
Tree-SHA512: 4ef16552b93ee3e6691d60d4e2917c1d6737fcc19be84591e2fd0f23f0a9cdf3d76abc13fc39c26ccd7badb436a3702529aeacb96ea3f93a704e65eed0f9ee32
Some log excerpts with this PR: