[idea/request] Standalone compositor
clapbr opened this issue · 25 comments
It would be great to use just the vulkan compositor with other WMs, like people use compton in plasma or xfce. Compton itself was considering a vulkan backend but it still didnt fly. What you think, @jaelpark ?
I definitely thought about it already when I started the project, and I still like the idea of implementing such thing.
However there are still a couple of issues I'd like to work out before attempting to make the compositor something more widely usable.. One of the major problems is how to efficiently transform the window contents to something that can be used by Vulkan. The current solution is very much a placeholder, and can be a bit of performance killer in some cases..
I'm working on a solution, and once things start looking more acceptable for something beyond an experimental setup, I will surely look how to get most out of the work already done.
I know essentially adding a comment that just expresses interest is not generally acceptable in issue tickets. However, I am curious about the status of this request in this project. I see that there have been several commits referencing this issue since the initial response. So, I have some questions:
- Is the plan still as last described?
- How is it going?
- Where can an enthusiastic outsider help, if possible?
Thanks for this cool project!
Thanks for the interest! It's still my goal to have this feature out, and hopefully soon. I think the composition works well enough for this to proceed.
The branch that I've worked on has some preliminary functionality. I've been testing with i3-gaps, and it works, but as of now there are still some breaking issues. The windows are not stacked correctly and I recall there being some problems with workspaces as well. Furthermore, at the moment i3's titlebars have to be disabled, since the compositor does not handle decorations properly.
To make the standalone compositing possible, some minor refactoring had to be done. However, this refactoring seems to have introduced a crash bug that is triggered in some events. Resolving this is the next milestone. I have a test case and I know why the crash happens, but what actually sets the conditions for it is not clear yet and needs more investigation.
Since you asked, I motivated myself to rebase the branch yesterday. I'll do some checks that it's alright and push it here today along with some details. Hopefully with some details it will be easier for interested people to look into it as well! I'll see what I can do about the bug soon when I have some time.
Awesome work. Can you write a guide for using the standalone compositor please? That will help other to do the test and report stuffs too.
Thanks! Here are some brief instructions on how to get started:
- Checkout the branch
dmabuf_standalone_comp
and build it. Master branch does not have standalone features yet. For some WMs, it might be better to use plain rectangular windows, so before compiling you may want to change this line to 0 (I will make this later post-build configurable) - Start your WM. You may have to disable any border and decoration effects for now to avoid glitches
- Start chamfer in compositor mode by passing
-C
as an argument:chamfer -C --experimental --config=/path/to/config.py --shader-path=/path/to/chamfer/shaders/
- Send your bug repors 👍 . I'm aware of some issues with stacking order, and workspaces at least on i3-gaps.
I built chamfer
and ran it with chamfer -C --experimental
. I don't know what those --config
and --shader-path
parameters are and I expect there are some defaults, so I omitted those. After doing so, I got a quick segfault. Here's the full terminal log, including figuring out how to use meson, the meson and ninja build log, and subsequent running with output:
terminal log
[alex@alex-pc chamferwm]$ ninja
ninja: error: loading 'build.ninja': No such file or directory
[alex@alex-pc chamferwm]$ meson
ERROR: Must specify at least one directory name.
[alex@alex-pc chamferwm]$ meson .
ERROR: Source and build directories must not be the same. Create a pristine build directory.
[alex@alex-pc chamferwm]$ mkdir install
[alex@alex-pc chamferwm]$ cd install
[alex@alex-pc install]$ meson ..
The Meson build system
Version: 0.58.0
Source dir: /home/alex/media/projects/chamferwm
Build dir: /home/alex/media/projects/chamferwm/install
Build type: native build
Project name: chamferwm
Project version: undefined
C compiler for the host machine: ccache cc (gcc 11.1.0 "cc (GCC) 11.1.0")
C linker for the host machine: cc ld.bfd 2.36.1
C++ compiler for the host machine: ccache c++ (gcc 11.1.0 "c++ (GCC) 11.1.0")
C++ linker for the host machine: c++ ld.bfd 2.36.1
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.7.3)
Run-time dependency xcb found: YES 1.14
Run-time dependency xcb-keysyms found: YES 0.4.0
Found CMake: /usr/bin/cmake (3.20.3)
Run-time dependency xcb-cursor found: NO (tried pkgconfig and cmake)
../meson.build:19:0: ERROR: Dependency "xcb-cursor" not found, tried pkgconfig and cmake
A full log can be found at /home/alex/media/projects/chamferwm/install/meson-logs/meson-log.txt
[alex@alex-pc install]$ yay xcb-cursor
no packages match search
[alex@alex-pc install]$ yay xcb
65 aur/frankenwm 1.0.23-1 (+0 0.00)
Fast dynamic tiling window manager based on monsterwm-xcb
64 aur/lemonbar 1.4-1 (+0 0.00)
A featherweight, lemon-scented, bar based on xcb.
63 aur/libx32-libxcb 1.11.1-1.1 (+0 0.00)
X11 client-side library (x32 ABI)
62 aur/flap 1.1-1 (+0 0.00)
An XCB based window geometry tool with support for relative/per-monitor positioning and resizing.
61 aur/i3lock-blur 2.10-3 (+0 0.00)
An improved screenlocker based upon XCB and PAM with background blurring filter
60 aur/i3lock-cri 2.12.cri-0 (+0 0.00)
An improved screenlocker based upon XCB and PAM - cri's version
59 aur/i3lock-s3lph-git r317.50d1174-1 (+0 0.00)
An improved screenlocker based upon XCB and PAM (s3lph fork)
58 aur/lemonbar-ucs4-git 213.91b444a-1 (+0 0.00)
A lightweight xcb based bar with ported xft and ucs4 support.
57 aur/qt5-pmp-xcb-private-headers 5.9.5-2 (+0 0.00)
Private headers for Qt5 Xcb (for plex-media-player)
56 aur/mingw-w64-libxcb 1.11.r59.g4033d39-1 (+1 0.00) (Orphaned) (Out-of-date: 2020-05-23)
X11 client-side library on top of Win32 - git version (mingw-w64)
55 aur/xstatus-git 0.1-2 (+1 0.00)
lightweight xcb-based desktop panel
54 aur/jbxvt-git 0.8-1 (+1 0.00)
xcb terminal emulator
53 aur/xcb-util-xrm-git v1.3.r0.ga485748-1 (+1 0.00)
XCB utility functions for the X resource manager
52 aur/guile-xcb-git r88.db7d5a3-1 (+1 0.00)
Windowmanagement environment for guile
51 aur/perl-x11-xcb 0.18-3.1 (+1 0.00)
Perl bindings for libxcb
50 aur/python2-xcffib 0.9.0-1 (+1 0.03) (Orphaned)
Python drop in replacement for xpyb, an XCB python binding
49 aur/xwm 0.1.6-1 (+1 0.02)
A tiny XCB floating window manager
48 aur/qt5-xcb-private-headers-595 5.9.5-2 (+1 0.00)
Private headers for Qt5 Xcb (v5.9.5)
47 aur/mingw-w64-xcb-proto 1.11.r95.g6b832a0-1 (+1 0.00) (Orphaned)
XML-XCB protocol descriptions (mingw-w64)
46 aur/lib32-xcb-util-image 0.4.0-1 (+1 0.00)
32bit xcb-util-image
45 aur/lib32-libxcb-git 1.14-1 (+1 0.01)
X11 client-side library (32-bit)
44 aur/i3lock-cac03-git 2bfcb7-2 (+2 0.00)
An improved screenlocker based upon XCB and PAM (cac03 fork) with clock, layout indicator, CAPS indicator
43 aur/lib32-xcb-util-wm 0.4.1-1 (+2 0.10)
Utility libraries for XC Binding - client and window-manager helpers for ICCCM. (32-bits)
42 aur/xpyb-git r93.ed0147e-1 (+2 0.00)
XCB-based Python bindings for the X Window System
41 aur/emacs-xelb-git r151.3226fe2-1 (+2 0.00) (Orphaned)
emacs interface to xcb
40 aur/xpybutil-git r89.8ee7dc4-1 (+3 0.00) (Out-of-date: 2018-05-08)
An incomplete xcb-util port plus some extras
39 aur/mcwm-git 20130209.2.r11.gee7d9df-3 (+3 0.00)
A minimalist floating window manager written on top of the XCB
38 aur/bar-aint-recursive-git 213.1411d26-1 (+4 0.00)
A lightweight xcb based bar.
37 aur/lemonbar-clicks-git 1.3.0-1 (+4 0.45)
A lightweight xcb based bar with ported xft support, support to specify outputs, support for unlimited clickable areas and support for longer input.
36 aur/mcwm 20130209.2-5 (+4 0.00)
A minimalist floating window manager written on top of the XCB
35 aur/libxcb-git 1.14.r1.g704e0a9-1 (+4 0.05)
X11 client-side library - git version
34 aur/xcb-imdkit-git 1.0.0.r2.g8d762c3-1 (+4 0.13)
Input method development support for xcb
33 aur/python2-xcb-proto 1.14-1 (+5 0.42)
XML-XCB protocol descriptions. (Python2)
32 aur/frankenwm-git 1.0.22-3 (+6 0.00)
Fast dynamic tiling window manager based on monsterwm-xcb
31 aur/velox-git 0.0.2.r244.g4e549c6-1 (+8 0.00)
A simple xcb window manager inspired by awesome, xmonad, and dwm.
30 aur/xcb-proto-git xcb.rproto.1.14.1.0.g496e3ce-1 (+20 0.05)
XML-XCB protocol descriptions
29 aur/i3lock-color 2.13.c.3-1 (+24 5.51) (Out-of-date: 2021-06-04)
An improved screenlocker based upon XCB and PAM with color configuration support
28 aur/xcb-util-cursor-git 0.1.3.r1.g947eaba-1 (+29 0.00)
XCB cursor library
27 aur/i3lock-color-git r736.b2c1024-4 (+32 0.10)
An improved screenlocker based upon XCB and PAM with color configuration support
26 aur/lemonbar-xft-git r280.0042efd-1 (+51 1.04)
A lightweight xcb based bar with ported xft support.
25 aur/i3lock-git 2.12.r18.g9f675b8-1 (+58 0.00)
An improved screenlocker based upon XCB and PAM
24 aur/lemonbar-git v1.4.r0.g2e8ac2c-1 (+74 0.00)
A featherweight, lemon-scented, bar based on xcb.
23 multilib/lib32-xcb-util-keysyms 0.4.0-1 (5.9 KiB 14.0 KiB)
Utility libraries for XC Binding - Standard X key constants and conversion to/from keycodes
22 multilib/lib32-xcb-util 0.4.0-2 (8.6 KiB 19.0 KiB)
Utility libraries for XC Binding (32-bit)
21 multilib/lib32-libxkbcommon-x11 1.3.0-1 (14.3 KiB 29.6 KiB)
Keyboard handling library using XKB data for X11 XCB clients
20 multilib/lib32-libxcb 1.14-1 (188.6 KiB 995.1 KiB) (Installed)
X11 client-side library (32-bit)
19 community/xcb-util-xrm 1.3-2 (14.9 KiB 37.4 KiB)
XCB utility functions for the X resource manager
18 community/xcb-util-errors 1.0-4 (13.2 KiB 49.5 KiB)
XCB errors library
17 community/xcb-imdkit 1.0.3-1 (344.4 KiB 649.8 KiB)
Input method development support for xcb
16 community/python-xpybutil 0.0.6-3 (90.6 KiB 590.2 KiB)
An incomplete xcb-util port plus some extras
15 community/python-xcffib 0.11.1-1 (192.5 KiB 2.0 MiB)
Python3 drop in replacement for xpyb, an XCB python binding
14 community/lemonbar-xft 269.00a3fe6-1 (19.5 KiB 63.0 KiB)
A lightweight xcb based bar with ported xft support.
13 community/i3lock 2.13-1 (23.8 KiB 54.3 KiB) [i3]
Improved screenlocker based upon XCB and PAM
12 community/haskell-xcb-types 0.10.0-11 (118.2 KiB 576.9 KiB)
Parses XML files used by the XCB project
11 community/deepin-qt5platform-plugins 5.0.23-2 (200.2 KiB 566.1 KiB) [deepin]
Qt platform plugins for DDE
10 extra/xcb-util-wm 0.4.1-3 (34.2 KiB 224.4 KiB) (Installed)
Utility libraries for XC Binding - client and window-manager helpers for ICCCM
9 extra/xcb-util-renderutil 0.3.9-3 (9.7 KiB 36.0 KiB) (Installed)
Utility libraries for XC Binding - Convenience functions for the Render extension
8 extra/xcb-util-keysyms 0.4.0-3 (8.3 KiB 29.3 KiB) (Installed)
Utility libraries for XC Binding - Standard X key constants and conversion to/from keycodes
7 extra/xcb-util-image 0.4.0-3 (17.9 KiB 52.8 KiB) (Installed)
Utility libraries for XC Binding - Port of Xlib's XImage and XShmImage functions
6 extra/xcb-util-cursor 0.1.3-3 (12.4 KiB 32.6 KiB)
XCB cursor library
5 extra/xcb-util 0.4.0-3 (12.5 KiB 38.2 KiB) (Installed)
Utility libraries for XC Binding
4 extra/xcb-proto 1.14.1-3 (108.0 KiB 846.2 KiB) (Installed)
XML-XCB protocol descriptions
3 extra/qt5-xcb-private-headers 5.15.2+kde+r196-1 (23.7 KiB 121.1 KiB)
Private headers for Qt5 Xcb
2 extra/libxkbcommon-x11 1.3.0-1 (22.5 KiB 71.2 KiB) (Installed)
Keyboard handling library using XKB data for X11 XCB clients
1 extra/libxcb 1.14-1 (999.8 KiB 3.7 MiB) (Installed)
X11 client-side library
==> Packages to install (eg: 1 2 3, 1-3 or ^4)
==> 6
resolving dependencies...
looking for conflicting packages...
Packages (1) xcb-util-cursor-0.1.3-3
Total Download Size: 0.01 MiB
Total Installed Size: 0.03 MiB
:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
xcb-util-cursor-... 12.4 KiB 0.00 B/s 00:00 [######################] 100%
(1/1) checking keys in keyring [######################] 100%
(1/1) checking package integrity [######################] 100%
(1/1) loading package files [######################] 100%
(1/1) checking for file conflicts [######################] 100%
(1/1) checking available disk space [######################] 100%
:: Running pre-transaction hooks...
(1/1) Pre-Upgrade Pacback Hook
Creating Snapshot...
Snapshot Creation Complete!
:: Processing package changes...
(1/1) installing xcb-util-cursor [######################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
[alex@alex-pc install]$ meson ..
The Meson build system
Version: 0.58.0
Source dir: /home/alex/media/projects/chamferwm
Build dir: /home/alex/media/projects/chamferwm/install
Build type: native build
Project name: chamferwm
Project version: undefined
C compiler for the host machine: ccache cc (gcc 11.1.0 "cc (GCC) 11.1.0")
C linker for the host machine: cc ld.bfd 2.36.1
C++ compiler for the host machine: ccache c++ (gcc 11.1.0 "c++ (GCC) 11.1.0")
C++ linker for the host machine: c++ ld.bfd 2.36.1
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.7.3)
Run-time dependency xcb found: YES 1.14
Run-time dependency xcb-keysyms found: YES 0.4.0
Run-time dependency xcb-cursor found: YES 0.1.3
Run-time dependency xcb-xfixes found: YES 1.14
Run-time dependency xcb-damage found: YES 1.14
Run-time dependency xcb-shm found: YES 1.14
Run-time dependency xcb-dri3 found: YES 1.14
Run-time dependency xcb-composite found: YES 1.14
Run-time dependency xcb-icccm found: YES 0.4.1
Run-time dependency xcb-ewmh found: YES 0.4.1
Run-time dependency xcb-randr found: YES 1.14
Run-time dependency xcb-util found: YES 0.4.0
Run-time dependency vulkan found: YES 1.2.177
Run-time dependency glm found: YES 0.9.9.8
Run-time dependency python3 found: YES 3.9
Run-time dependency python3-embed found: YES 3.9
Run-time dependency Boost (found: filesystem, python39, system) found: YES 1.75.0 (/usr)
Run-time dependency freetype2 found: YES 23.4.17
Run-time dependency fontconfig found: YES 2.13.93
Run-time dependency harfbuzz found: YES 2.8.1
Program glslc found: YES (/usr/bin/glslc)
Program spirv-opt found: YES (/usr/bin/spirv-opt)
Build targets in project: 11
Found ninja-1.10.2 at /usr/bin/ninja
[alex@alex-pc install]$ ninja ..
ninja: error: unknown target '..', did you mean 'all'?
[alex@alex-pc install]$ ninja
[23/29] Compiling C++ object chamfer.p/src_backend.cpp.o
../src/backend.cpp: In member function ‘virtual void Backend::X11Client::UpdateTranslation()’:
../src/backend.cpp:207:68: warning: narrowing conversion of ‘titleFrameOffset.glm::vec<2, float, glm::packed_highp>::<anonymous>.glm::vec<2, float, glm::packed_highp>::<unnamed union>::x’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
207 | titleRect = (WManager::Rectangle){titleFrameOffset.x,titleFrameOffset.y,titleFrameExtent.x,titleFrameExtent.y};
| ~~~~~~~~~~~~~~~~~^
../src/backend.cpp:207:87: warning: narrowing conversion of ‘titleFrameOffset.glm::vec<2, float, glm::packed_highp>::<anonymous>.glm::vec<2, float, glm::packed_highp>::<unnamed union>::y’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
207 | titleRect = (WManager::Rectangle){titleFrameOffset.x,titleFrameOffset.y,titleFrameExtent.x,titleFrameExtent.y};
| ~~~~~~~~~~~~~~~~~^
../src/backend.cpp:207:106: warning: narrowing conversion of ‘((Backend::X11Client*)this)->Backend::X11Client::<anonymous>.WManager::Client::titleFrameExtent.glm::vec<2, float, glm::packed_highp>::<anonymous>.glm::vec<2, float, glm::packed_highp>::<unnamed union>::x’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
207 | titleRect = (WManager::Rectangle){titleFrameOffset.x,titleFrameOffset.y,titleFrameExtent.x,titleFrameExtent.y};
| ~~~~~~~~~~~~~~~~~^
../src/backend.cpp:207:125: warning: narrowing conversion of ‘((Backend::X11Client*)this)->Backend::X11Client::<anonymous>.WManager::Client::titleFrameExtent.glm::vec<2, float, glm::packed_highp>::<anonymous>.glm::vec<2, float, glm::packed_highp>::<unnamed union>::y’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
207 | titleRect = (WManager::Rectangle){titleFrameOffset.x,titleFrameOffset.y,titleFrameExtent.x,titleFrameExtent.y};
| ~~~~~~~~~~~~~~~~~^
../src/backend.cpp:213:44: warning: narrowing conversion of ‘coord.glm::vec<4, float, glm::packed_highp>::<anonymous>.glm::vec<4, float, glm::packed_highp>::<unnamed union>::x’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
213 | rect = (WManager::Rectangle){coord.x,coord.y,coord.z,coord.w};
| ~~~~~~^
../src/backend.cpp:213:52: warning: narrowing conversion of ‘coord.glm::vec<4, float, glm::packed_highp>::<anonymous>.glm::vec<4, float, glm::packed_highp>::<unnamed union>::y’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
213 | rect = (WManager::Rectangle){coord.x,coord.y,coord.z,coord.w};
| ~~~~~~^
../src/backend.cpp:213:60: warning: narrowing conversion of ‘coord.glm::vec<4, float, glm::packed_highp>::<anonymous>.glm::vec<4, float, glm::packed_highp>::<unnamed union>::z’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
213 | rect = (WManager::Rectangle){coord.x,coord.y,coord.z,coord.w};
| ~~~~~~^
../src/backend.cpp:213:68: warning: narrowing conversion of ‘coord.glm::vec<4, float, glm::packed_highp>::<anonymous>.glm::vec<4, float, glm::packed_highp>::<unnamed union>::w’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
213 | rect = (WManager::Rectangle){coord.x,coord.y,coord.z,coord.w};
| ~~~~~~^
../src/backend.cpp:215:32: warning: narrowing conversion of ‘((Backend::X11Client*)this)->Backend::X11Client::<anonymous>.WManager::Client::rect.WManager::Rectangle::x’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
215 | uint values[4] = {rect.x,rect.y,rect.w,rect.h};
| ~~~~~^
../src/backend.cpp:215:39: warning: narrowing conversion of ‘((Backend::X11Client*)this)->Backend::X11Client::<anonymous>.WManager::Client::rect.WManager::Rectangle::y’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
215 | uint values[4] = {rect.x,rect.y,rect.w,rect.h};
| ~~~~~^
../src/backend.cpp:215:46: warning: narrowing conversion of ‘((Backend::X11Client*)this)->Backend::X11Client::<anonymous>.WManager::Client::rect.WManager::Rectangle::w’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
215 | uint values[4] = {rect.x,rect.y,rect.w,rect.h};
| ~~~~~^
../src/backend.cpp:215:53: warning: narrowing conversion of ‘((Backend::X11Client*)this)->Backend::X11Client::<anonymous>.WManager::Client::rect.WManager::Rectangle::h’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
215 | uint values[4] = {rect.x,rect.y,rect.w,rect.h};
| ~~~~~^
../src/backend.cpp: In constructor ‘Backend::X11Container::X11Container(Backend::X11Backend*, bool)’:
../src/backend.cpp:285:62: warning: narrowing conversion of ‘WManager::Container::rootQueue.std::deque<WManager::Container*>::size()’ from ‘std::deque<WManager::Container*>::size_type’ {aka ‘long unsigned int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
285 | uint values[1] = {WManager::Container::rootQueue.size()};
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../src/backend.cpp: In member function ‘virtual void Backend::X11Container::Focus1()’:
../src/backend.cpp:334:44: warning: narrowing conversion of ‘std::operator-(m, std::deque<_Tp, _Alloc>::begin() [with _Tp = WManager::Container*; _Alloc = std::allocator<WManager::Container*>; std::deque<_Tp, _Alloc>::iterator = std::_Deque_base<WManager::Container*, std::allocator<WManager::Container*> >::iterator]())’ from ‘std::_Deque_iterator<WManager::Container*, WManager::Container*&, WManager::Container**>::difference_type’ {aka ‘long int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
334 | uint values[1] = {m-WManager::Container::rootQueue.begin()};
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/backend.cpp: In member function ‘virtual void Backend::Default::Start()’:
../src/backend.cpp:669:17: warning: narrowing conversion of ‘((((((!((Backend::Default*)this)->Backend::Default::standaloneComp) ? ((int)XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT) : 0) | ((int)XCB_EVENT_MASK_STRUCTURE_NOTIFY)) | ((int)XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY)) | ((int)XCB_EVENT_MASK_EXPOSURE)) | ((int)XCB_EVENT_MASK_PROPERTY_CHANGE))’ from ‘int’ to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
665 | uint values[4] = {(!standaloneComp?XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT:0)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
666 | |XCB_EVENT_MASK_STRUCTURE_NOTIFY
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
667 | |XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
668 | |XCB_EVENT_MASK_EXPOSURE
| ~~~~~~~~~~~~~~~~~~~~~~~~
669 | |XCB_EVENT_MASK_PROPERTY_CHANGE,0,0,0}; //[4] for later use
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/backend.cpp: In member function ‘virtual sint Backend::Default::HandleEvent(bool)’:
../src/backend.cpp:961:74: warning: narrowing conversion of ‘std::get<1, unsigned int, WManager::Rectangle, unsigned int>((* & mrect.__gnu_cxx::__normal_iterator<std::tuple<unsigned int, WManager::Rectangle, unsigned int>*, std::vector<std::tuple<unsigned int, WManager::Rectangle, unsigned int> > >::operator*())).WManager::Rectangle::x’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
961 | {XCB_CONFIG_WINDOW_X,std::get<1>(*mrect).x},
| ~~~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:962:74: warning: narrowing conversion of ‘std::get<1, unsigned int, WManager::Rectangle, unsigned int>((* & mrect.__gnu_cxx::__normal_iterator<std::tuple<unsigned int, WManager::Rectangle, unsigned int>*, std::vector<std::tuple<unsigned int, WManager::Rectangle, unsigned int> > >::operator*())).WManager::Rectangle::y’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
962 | {XCB_CONFIG_WINDOW_Y,std::get<1>(*mrect).y},
| ~~~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:963:78: warning: narrowing conversion of ‘std::get<1, unsigned int, WManager::Rectangle, unsigned int>((* & mrect.__gnu_cxx::__normal_iterator<std::tuple<unsigned int, WManager::Rectangle, unsigned int>*, std::vector<std::tuple<unsigned int, WManager::Rectangle, unsigned int> > >::operator*())).WManager::Rectangle::w’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
963 | {XCB_CONFIG_WINDOW_WIDTH,std::get<1>(*mrect).w},
| ~~~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:964:79: warning: narrowing conversion of ‘std::get<1, unsigned int, WManager::Rectangle, unsigned int>((* & mrect.__gnu_cxx::__normal_iterator<std::tuple<unsigned int, WManager::Rectangle, unsigned int>*, std::vector<std::tuple<unsigned int, WManager::Rectangle, unsigned int> > >::operator*())).WManager::Rectangle::h’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
964 | {XCB_CONFIG_WINDOW_HEIGHT,std::get<1>(*mrect).h},
| ~~~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:896:51: warning: variable ‘propertyCookieNormalHints’ set but not used [-Wunused-but-set-variable]
896 | xcb_get_property_cookie_t propertyCookieNormalHints = xcb_icccm_get_wm_normal_hints(pcon,pev->window);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/backend.cpp:1086:71: warning: narrowing conversion of ‘std::get<1, unsigned int, WManager::Rectangle, unsigned int>((* & mrect.__gnu_cxx::__normal_iterator<std::tuple<unsigned int, WManager::Rectangle, unsigned int>*, std::vector<std::tuple<unsigned int, WManager::Rectangle, unsigned int> > >::operator*())).WManager::Rectangle::x’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
1086 | uint values[4] = {std::get<1>(*mrect).x,std::get<1>(*mrect).y,std::get<1>(*mrect).w,std::get<1>(*mrect).h};
| ~~~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1086:93: warning: narrowing conversion of ‘std::get<1, unsigned int, WManager::Rectangle, unsigned int>((* & mrect.__gnu_cxx::__normal_iterator<std::tuple<unsigned int, WManager::Rectangle, unsigned int>*, std::vector<std::tuple<unsigned int, WManager::Rectangle, unsigned int> > >::operator*())).WManager::Rectangle::y’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
1086 | uint values[4] = {std::get<1>(*mrect).x,std::get<1>(*mrect).y,std::get<1>(*mrect).w,std::get<1>(*mrect).h};
| ~~~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1086:115: warning: narrowing conversion of ‘std::get<1, unsigned int, WManager::Rectangle, unsigned int>((* & mrect.__gnu_cxx::__normal_iterator<std::tuple<unsigned int, WManager::Rectangle, unsigned int>*, std::vector<std::tuple<unsigned int, WManager::Rectangle, unsigned int> > >::operator*())).WManager::Rectangle::w’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
1086 | uint values[4] = {std::get<1>(*mrect).x,std::get<1>(*mrect).y,std::get<1>(*mrect).w,std::get<1>(*mrect).h};
| ~~~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1086:137: warning: narrowing conversion of ‘std::get<1, unsigned int, WManager::Rectangle, unsigned int>((* & mrect.__gnu_cxx::__normal_iterator<std::tuple<unsigned int, WManager::Rectangle, unsigned int>*, std::vector<std::tuple<unsigned int, WManager::Rectangle, unsigned int> > >::operator*())).WManager::Rectangle::h’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
1086 | uint values[4] = {std::get<1>(*mrect).x,std::get<1>(*mrect).y,std::get<1>(*mrect).w,std::get<1>(*mrect).h};
| ~~~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1248:51: warning: suggest explicit braces to avoid ambiguous ‘else’ [-Wdangling-else]
1248 | if(ma != clientStack.end())
| ^
../src/backend.cpp:1580:69: warning: narrowing conversion of ‘pev->xcb_client_message_event_t::data.xcb_client_message_data_t::data32[1]’ from ‘uint32_t’ {aka ‘unsigned int’} to ‘sint’ {aka ‘int’} [-Wnarrowing]
1580 | sint values[4] = {pev->data.data32[1],pev->data.data32[2],
| ~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1580:89: warning: narrowing conversion of ‘pev->xcb_client_message_event_t::data.xcb_client_message_data_t::data32[2]’ from ‘uint32_t’ {aka ‘unsigned int’} to ‘sint’ {aka ‘int’} [-Wnarrowing]
1580 | sint values[4] = {pev->data.data32[1],pev->data.data32[2],
| ~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1581:59: warning: narrowing conversion of ‘pev->xcb_client_message_event_t::data.xcb_client_message_data_t::data32[3]’ from ‘uint32_t’ {aka ‘unsigned int’} to ‘sint’ {aka ‘int’} [-Wnarrowing]
1581 | pev->data.data32[3],pev->data.data32[4]};
| ~~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1581:79: warning: narrowing conversion of ‘pev->xcb_client_message_event_t::data.xcb_client_message_data_t::data32[4]’ from ‘uint32_t’ {aka ‘unsigned int’} to ‘sint’ {aka ‘int’} [-Wnarrowing]
1581 | pev->data.data32[3],pev->data.data32[4]};
| ~~~~~~~~~~~~~~~~~~^
../src/backend.cpp: In member function ‘virtual void Backend::DebugClient::UpdateTranslation()’:
../src/backend.cpp:1811:68: warning: narrowing conversion of ‘titleFrameOffset.glm::vec<2, float, glm::packed_highp>::<anonymous>.glm::vec<2, float, glm::packed_highp>::<unnamed union>::x’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
1811 | titleRect = (WManager::Rectangle){titleFrameOffset.x,titleFrameOffset.y,titleFrameExtent.x,titleFrameExtent.y};
| ~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1811:87: warning: narrowing conversion of ‘titleFrameOffset.glm::vec<2, float, glm::packed_highp>::<anonymous>.glm::vec<2, float, glm::packed_highp>::<unnamed union>::y’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
1811 | titleRect = (WManager::Rectangle){titleFrameOffset.x,titleFrameOffset.y,titleFrameExtent.x,titleFrameExtent.y};
| ~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1811:106: warning: narrowing conversion of ‘titleFrameExtent.glm::vec<2, float, glm::packed_highp>::<anonymous>.glm::vec<2, float, glm::packed_highp>::<unnamed union>::x’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
1811 | titleRect = (WManager::Rectangle){titleFrameOffset.x,titleFrameOffset.y,titleFrameExtent.x,titleFrameExtent.y};
| ~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1811:125: warning: narrowing conversion of ‘titleFrameExtent.glm::vec<2, float, glm::packed_highp>::<anonymous>.glm::vec<2, float, glm::packed_highp>::<unnamed union>::y’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
1811 | titleRect = (WManager::Rectangle){titleFrameOffset.x,titleFrameOffset.y,titleFrameExtent.x,titleFrameExtent.y};
| ~~~~~~~~~~~~~~~~~^
../src/backend.cpp:1817:44: warning: narrowing conversion of ‘coord.glm::vec<4, float, glm::packed_highp>::<anonymous>.glm::vec<4, float, glm::packed_highp>::<unnamed union>::x’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
1817 | rect = (WManager::Rectangle){coord.x,coord.y,coord.z,coord.w};
| ~~~~~~^
../src/backend.cpp:1817:52: warning: narrowing conversion of ‘coord.glm::vec<4, float, glm::packed_highp>::<anonymous>.glm::vec<4, float, glm::packed_highp>::<unnamed union>::y’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
1817 | rect = (WManager::Rectangle){coord.x,coord.y,coord.z,coord.w};
| ~~~~~~^
../src/backend.cpp:1817:60: warning: narrowing conversion of ‘coord.glm::vec<4, float, glm::packed_highp>::<anonymous>.glm::vec<4, float, glm::packed_highp>::<unnamed union>::z’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
1817 | rect = (WManager::Rectangle){coord.x,coord.y,coord.z,coord.w};
| ~~~~~~^
../src/backend.cpp:1817:68: warning: narrowing conversion of ‘coord.glm::vec<4, float, glm::packed_highp>::<anonymous>.glm::vec<4, float, glm::packed_highp>::<unnamed union>::w’ from ‘float’ to ‘sint’ {aka ‘int’} [-Wnarrowing]
1817 | rect = (WManager::Rectangle){coord.x,coord.y,coord.z,coord.w};
| ~~~~~~^
[26/29] Compiling C++ object chamfer.p/src_compositor.cpp.o
../src/compositor.cpp: In member function ‘void Compositor::CompositorInterface::AddDamageRegion(const WManager::Client*)’:
../src/compositor.cpp:805:68: warning: narrowing conversion of ‘(((((int)pclient->WManager::Client::rect.WManager::Rectangle::w) + (2 * margin.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::x)) - titlePadOffset.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::x) + titlePadExtent.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::x)’ from ‘int’ to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
805 | rect1.extent = {pclient->rect.w+2*margin.x-titlePadOffset.x+titlePadExtent.x,pclient->rect.h+2*margin.y-titlePadOffset.y+titlePadExtent.y};
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../src/compositor.cpp:805:129: warning: narrowing conversion of ‘(((((int)pclient->WManager::Client::rect.WManager::Rectangle::h) + (2 * margin.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::y)) - titlePadOffset.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::y) + titlePadExtent.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::y)’ from ‘int’ to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
805 | rect1.extent = {pclient->rect.w+2*margin.x-titlePadOffset.x+titlePadExtent.x,pclient->rect.h+2*margin.y-titlePadOffset.y+titlePadExtent.y};
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../src/compositor.cpp:808:71: warning: narrowing conversion of ‘(((((int)pclient->WManager::Client::oldRect.WManager::Rectangle::w) + (2 * margin.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::x)) - titlePadOffset.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::x) + titlePadExtent.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::x)’ from ‘int’ to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
808 | rect1.extent = {pclient->oldRect.w+2*margin.x-titlePadOffset.x+titlePadExtent.x,pclient->oldRect.h+2*margin.y-titlePadOffset.y+titlePadExtent.y};
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../src/compositor.cpp:808:135: warning: narrowing conversion of ‘(((((int)pclient->WManager::Client::oldRect.WManager::Rectangle::h) + (2 * margin.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::y)) - titlePadOffset.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::y) + titlePadExtent.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::y)’ from ‘int’ to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
808 | rect1.extent = {pclient->oldRect.w+2*margin.x-titlePadOffset.x+titlePadExtent.x,pclient->oldRect.h+2*margin.y-titlePadOffset.y+titlePadExtent.y};
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../src/compositor.cpp: In member function ‘void Compositor::CompositorInterface::GenerateCommandBuffers(const std::deque<WManager::Client*>*, const WManager::Container*, const WManager::Client*)’:
../src/compositor.cpp:1016:43: warning: narrowing conversion of ‘(int)std::max<int>((b.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::x - scissor.VkRect2D::offset.VkOffset2D::x), 0)’ from ‘int’ to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1016 | scissor.extent = {std::max(b.x-scissor.offset.x,0),std::max(b.y-scissor.offset.y,0)};
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
../src/compositor.cpp:1016:76: warning: narrowing conversion of ‘(int)std::max<int>((b.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::y - scissor.VkRect2D::offset.VkOffset2D::y), 0)’ from ‘int’ to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1016 | scissor.extent = {std::max(b.x-scissor.offset.x,0),std::max(b.y-scissor.offset.y,0)};
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
../src/compositor.cpp:1053:60: warning: narrowing conversion of ‘renderObject.Compositor::CompositorInterface::RenderObject::pclient->WManager::Client::rect.WManager::Rectangle::w’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1053 | frame.extent = {renderObject.pclient->rect.w,renderObject.pclient->rect.h};
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
../src/compositor.cpp:1053:89: warning: narrowing conversion of ‘renderObject.Compositor::CompositorInterface::RenderObject::pclient->WManager::Client::rect.WManager::Rectangle::h’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1053 | frame.extent = {renderObject.pclient->rect.w,renderObject.pclient->rect.h};
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
../src/compositor.cpp:1105:60: warning: narrowing conversion of ‘extent.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::x’ from ‘int’ to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1105 | textFrame.extent = {extent.x,extent.y};
| ~~~~~~~^
../src/compositor.cpp:1105:69: warning: narrowing conversion of ‘extent.glm::vec<2, int, glm::packed_highp>::<anonymous>.glm::vec<2, int, glm::packed_highp>::<unnamed union>::y’ from ‘int’ to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1105 | textFrame.extent = {extent.x,extent.y};
| ~~~~~~~^
../src/compositor.cpp: In lambda function:
../src/compositor.cpp:1367:31: warning: comparison of integer expressions of different signedness: ‘sint’ {aka ‘int’} and ‘unsigned int’ [-Wsign-compare]
1367 | return rect.w < rect1.offset.x+rect1.extent.width || rect.h < rect1.offset.y+rect1.extent.height;
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/compositor.cpp:1367:77: warning: comparison of integer expressions of different signedness: ‘sint’ {aka ‘int’} and ‘unsigned int’ [-Wsign-compare]
1367 | return rect.w < rect1.offset.x+rect1.extent.width || rect.h < rect1.offset.y+rect1.extent.height;
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/compositor.cpp: In member function ‘virtual void Compositor::X11ClientFrame::UpdateContents(VkCommandBuffer_T* const*)’:
../src/compositor.cpp:1378:38: warning: narrowing conversion of ‘((Compositor::X11ClientFrame*)this)->Compositor::X11ClientFrame::<anonymous>.Backend::X11Client::<anonymous>.WManager::Client::rect.WManager::Rectangle::w’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1378 | rect1.extent = {rect.w,rect.h};
| ~~~~~^
../src/compositor.cpp:1378:45: warning: narrowing conversion of ‘((Compositor::X11ClientFrame*)this)->Compositor::X11ClientFrame::<anonymous>.Backend::X11Client::<anonymous>.WManager::Client::rect.WManager::Rectangle::h’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1378 | rect1.extent = {rect.w,rect.h};
| ~~~~~^
../src/compositor.cpp: In member function ‘virtual void Compositor::X11ClientFrame::SetTitle1(const char*)’:
../src/compositor.cpp:1562:34: warning: narrowing conversion of ‘((Compositor::X11ClientFrame*)this)->Compositor::X11ClientFrame::<anonymous>.Backend::X11Client::<anonymous>.WManager::Client::titleRect.WManager::Rectangle::w’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1562 | rect.extent = {titleRect.w,titleRect.h};
| ~~~~~~~~~~^
../src/compositor.cpp:1562:46: warning: narrowing conversion of ‘((Compositor::X11ClientFrame*)this)->Compositor::X11ClientFrame::<anonymous>.Backend::X11Client::<anonymous>.WManager::Client::titleRect.WManager::Rectangle::h’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1562 | rect.extent = {titleRect.w,titleRect.h};
| ~~~~~~~~~~^
../src/compositor.cpp: In member function ‘virtual void Compositor::X11DebugClientFrame::UpdateContents(VkCommandBuffer_T* const*)’:
../src/compositor.cpp:1908:30: warning: narrowing conversion of ‘((Compositor::X11DebugClientFrame*)this)->Compositor::X11DebugClientFrame::<anonymous>.Backend::DebugClient::<anonymous>.WManager::Client::rect.WManager::Rectangle::w’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1908 | rect1.extent = {rect.w,rect.h};
| ~~~~~^
../src/compositor.cpp:1908:37: warning: narrowing conversion of ‘((Compositor::X11DebugClientFrame*)this)->Compositor::X11DebugClientFrame::<anonymous>.Backend::DebugClient::<anonymous>.WManager::Client::rect.WManager::Rectangle::h’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1908 | rect1.extent = {rect.w,rect.h};
| ~~~~~^
../src/compositor.cpp: In member function ‘virtual void Compositor::X11DebugClientFrame::SetTitle1(const char*)’:
../src/compositor.cpp:1952:34: warning: narrowing conversion of ‘((Compositor::X11DebugClientFrame*)this)->Compositor::X11DebugClientFrame::<anonymous>.Backend::DebugClient::<anonymous>.WManager::Client::titleRect.WManager::Rectangle::w’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1952 | rect.extent = {titleRect.w,titleRect.h};
| ~~~~~~~~~~^
../src/compositor.cpp:1952:46: warning: narrowing conversion of ‘((Compositor::X11DebugClientFrame*)this)->Compositor::X11DebugClientFrame::<anonymous>.Backend::DebugClient::<anonymous>.WManager::Client::titleRect.WManager::Rectangle::h’ from ‘sint’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} [-Wnarrowing]
1952 | rect.extent = {titleRect.w,titleRect.h};
| ~~~~~~~~~~^
[27/29] Compiling C++ object chamfer.p/src_main.cpp.o
In file included from /usr/include/boost/smart_ptr/detail/sp_thread_sleep.hpp:22,
from /usr/include/boost/smart_ptr/detail/yield_k.hpp:23,
from /usr/include/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp:14,
from /usr/include/boost/smart_ptr/detail/spinlock.hpp:42,
from /usr/include/boost/smart_ptr/detail/spinlock_pool.hpp:25,
from /usr/include/boost/smart_ptr/shared_ptr.hpp:29,
from /usr/include/boost/shared_ptr.hpp:17,
from /usr/include/boost/python/converter/shared_ptr_to_python.hpp:12,
from /usr/include/boost/python/converter/arg_to_python.hpp:15,
from /usr/include/boost/python/call.hpp:15,
from /usr/include/boost/python/object_core.hpp:14,
from /usr/include/boost/python/args.hpp:22,
from /usr/include/boost/python.hpp:11,
from ../src/config.h:4,
from ../src/main.cpp:7:
/usr/include/boost/bind.hpp:36:1: note: ‘#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.’
36 | BOOST_PRAGMA_MESSAGE(
| ^~~~~~~~~~~~~~~~~~~~
../src/main.cpp: In constructor ‘DefaultCompositor::DefaultCompositor(std::vector<std::pair<const WManager::Client*, WManager::Client*> >*, Backend::X11Backend*, args::ValueFlagList<std::__cxx11::basic_string<char> >&, Config::CompositorInterface*)’:
../src/main.cpp:800:264: warning: narrowing conversion of ‘_pcompositorInt->Config::CompositorInterface::deviceIndex’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
800 | DefaultCompositor(std::vector<StackAppendixElement> *_pstackAppendix, Backend::X11Backend *pbackend, args::ValueFlagList<std::string> &shaderPaths, Config::CompositorInterface *_pcompositorInt) : X11Compositor(pconfig = new Configuration{_pcompositorInt->deviceIndex,_pcompositorInt->debugLayers,_pcompositorInt->scissoring,_pcompositorInt->hostMemoryImport,_pcompositorInt->unredirOnFullscreen,_pcompositorInt->enableAnimation,_pcompositorInt->animationDuration,_pcompositorInt->fontName.c_str(),_pcompositorInt->fontSize},pbackend), RunCompositor(_pstackAppendix,_pcompositorInt){
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~
../src/main.cpp: In constructor ‘DebugCompositor::DebugCompositor(std::vector<std::pair<const WManager::Client*, WManager::Client*> >*, Backend::X11Backend*, args::ValueFlagList<std::__cxx11::basic_string<char> >&, Config::CompositorInterface*)’:
../src/main.cpp:855:267: warning: narrowing conversion of ‘_pcompositorInt->Config::CompositorInterface::deviceIndex’ from ‘sint’ {aka ‘int’} to ‘uint’ {aka ‘unsigned int’} [-Wnarrowing]
855 | DebugCompositor(std::vector<StackAppendixElement> *_pstackAppendix, Backend::X11Backend *pbackend, args::ValueFlagList<std::string> &shaderPaths, Config::CompositorInterface *_pcompositorInt) : X11DebugCompositor(pconfig = new Configuration{_pcompositorInt->deviceIndex,_pcompositorInt->debugLayers,_pcompositorInt->scissoring,_pcompositorInt->hostMemoryImport,_pcompositorInt->unredirOnFullscreen,_pcompositorInt->enableAnimation,_pcompositorInt->animationDuration,_pcompositorInt->fontName.c_str(),_pcompositorInt->fontSize},pbackend), RunCompositor(_pstackAppendix,_pcompositorInt){
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~
[28/29] Compiling C++ object chamfer.p/src_config.cpp.o
In file included from /usr/include/boost/smart_ptr/detail/sp_thread_sleep.hpp:22,
from /usr/include/boost/smart_ptr/detail/yield_k.hpp:23,
from /usr/include/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp:14,
from /usr/include/boost/smart_ptr/detail/spinlock.hpp:42,
from /usr/include/boost/smart_ptr/detail/spinlock_pool.hpp:25,
from /usr/include/boost/smart_ptr/shared_ptr.hpp:29,
from /usr/include/boost/shared_ptr.hpp:17,
from /usr/include/boost/python/converter/shared_ptr_to_python.hpp:12,
from /usr/include/boost/python/converter/arg_to_python.hpp:15,
from /usr/include/boost/python/call.hpp:15,
from /usr/include/boost/python/object_core.hpp:14,
from /usr/include/boost/python/args.hpp:22,
from /usr/include/boost/python.hpp:11,
from ../src/config.h:4,
from ../src/config.cpp:6:
/usr/include/boost/bind.hpp:36:1: note: ‘#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.’
36 | BOOST_PRAGMA_MESSAGE(
| ^~~~~~~~~~~~~~~~~~~~
[29/29] Linking target chamfer
[alex@alex-pc install]$ ./chamfer -C --experimental
[chamferwm 2021-06-07 20:13:48] Error: Unable to find configuration file.
[chamferwm 2021-06-07 20:13:48] Experimental compositor features enabled.
[chamferwm 2021-06-07 20:13:48] Screen size: 3840x1200 (DPI: 96.000000x0.000000)
[chamferwm 2021-06-07 20:13:48] Root id: 1e9
[chamferwm 2021-06-07 20:13:48] Launching in standalone compositor mode.
[chamferwm 2021-06-07 20:13:48] Backend initialized.
created workspace '1'
[chamferwm 2021-06-07 20:13:48] XComposite 0.4
[chamferwm 2021-06-07 20:13:48] overlay xid: 487
[chamferwm 2021-06-07 20:13:48] XFixes 5.0
[chamferwm 2021-06-07 20:13:48] Damage 1.1
[chamferwm 2021-06-07 20:13:48] Error: SHM extension unavailable.
Segmentation fault (core dumped)
[alex@alex-pc install]$
I'm willing to continue with any help. Thanks for this project.
Also, running this (with the output from the previous comment) seems to have somehow set the number of XFCE workspaces I have to 1. I didn't realize this would happen, and now all my windows are piled up in 1 workspace. I've re-added the removed workspaces manually and reorganized everything again, but that seems like an issue. I would like to be able to use all my usual workspaces in the end.
Thanks for the report! I may have identified the cause for why all the workspaces are removed, and will submit a fix for testing soon. As for the crash, are you running on nvidia by any chance? If so, you may have to enable SHM in your xorg config, as done here.
The default --config
and --shader-path
assume that chamfer was installed as indicated in the README. If you didn't install after build and have problem with those, you can point --shader-path
to the build directory, and --config
to the config directory that comes with the repository.
The nvidia documentation says this about AllowSHMPixmaps
: "These pixmaps prevent the NVIDIA driver from performing a number of optimizations and degrade performance in many circumstances." I'm going to try it, but I wonder about the surrounding details, like what optimizations are prevented and what kind of performance will be degraded. I've set it now and I'm rebooting.
OK, I enabled it and rebooted, then tried it again. I got another segfault immediately, with a different error this time. Here's the terminal log.
terminal log
[alex@alex-pc ~]$ cd media/projects/chamferwm/install
[alex@alex-pc install]$ ./chamfer -C --experimental --no-host-memory-import --no-scissoring
[chamferwm 2021-06-08 14:46:21] Error: Unable to find configuration file.
[chamferwm 2021-06-08 14:46:21] Experimental compositor features enabled.
[chamferwm 2021-06-08 14:46:21] Screen size: 3840x1200 (DPI: 96.000000x0.000000)
[chamferwm 2021-06-08 14:46:21] Root id: 1e9
[chamferwm 2021-06-08 14:46:21] Launching in standalone compositor mode.
[chamferwm 2021-06-08 14:46:21] Backend initialized.
created workspace '1'
[chamferwm 2021-06-08 14:46:21] XComposite 0.4
[chamferwm 2021-06-08 14:46:21] overlay xid: 487
[chamferwm 2021-06-08 14:46:21] XFixes 5.0
[chamferwm 2021-06-08 14:46:21] Damage 1.1
[chamferwm 2021-06-08 14:46:21] SHM 1.2
[chamferwm 2021-06-08 14:46:21] Error: DRI3 extension unavailable.
Segmentation fault (core dumped)
[alex@alex-pc install]$
@AlexFolland Please try the following: gdb --args ./chamfer -C --experimental --no-host-memory-import --no-scissoring
, then inside gdb, enter the command r
, once it crashes, use bt
to grab the backtrace and paste it here.
I did that, but the behavior seemed to be different in gdb somehow. Here's my terminal log showing first running it, then running it in gdb.
terminal log
[alex@alex-pc install]$ ./chamfer -C --experimental --no-host-memory-import --no-scissoring
[chamferwm 2021-06-08 14:55:46] Error: Unable to find configuration file.
[chamferwm 2021-06-08 14:55:46] Experimental compositor features enabled.
[chamferwm 2021-06-08 14:55:46] Screen size: 3840x1200 (DPI: 96.000000x0.000000)
[chamferwm 2021-06-08 14:55:46] Root id: 1e9
[chamferwm 2021-06-08 14:55:46] Launching in standalone compositor mode.
[chamferwm 2021-06-08 14:55:46] Backend initialized.
created workspace '1'
[chamferwm 2021-06-08 14:55:46] XComposite 0.4
[chamferwm 2021-06-08 14:55:46] overlay xid: 487
[chamferwm 2021-06-08 14:55:46] XFixes 5.0
[chamferwm 2021-06-08 14:55:46] Damage 1.1
[chamferwm 2021-06-08 14:55:46] SHM 1.2
[chamferwm 2021-06-08 14:55:46] Error: DRI3 extension unavailable.
Segmentation fault (core dumped)
[alex@alex-pc install]$ gdb --args gdb --args ./chamfer -C --experimental --no-host-memory-import --no-scissoring
GNU gdb (GDB) 10.2
Copyright (C) 2021 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 "x86_64-pc-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 gdb...
(No debugging symbols found in gdb)
(gdb) r
Starting program: /usr/bin/gdb --args ./chamfer -C --experimental --no-host-memory-import --no-scissoring
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7ffff3c69640 (LWP 59188)]
[New Thread 0x7ffff3468640 (LWP 59189)]
[New Thread 0x7ffff2c67640 (LWP 59190)]
[New Thread 0x7ffff2466640 (LWP 59191)]
[New Thread 0x7ffff1c65640 (LWP 59192)]
[New Thread 0x7ffff1464640 (LWP 59193)]
[New Thread 0x7ffff0c63640 (LWP 59194)]
[Detaching after vfork from child process 59195]
[New Thread 0x7fffefa71640 (LWP 59196)]
[New Thread 0x7fffef270640 (LWP 59197)]
[New Thread 0x7fffeea6f640 (LWP 59198)]
[New Thread 0x7fffee26e640 (LWP 59199)]
[New Thread 0x7fffeda6d640 (LWP 59200)]
[New Thread 0x7fffed26c640 (LWP 59201)]
[New Thread 0x7fffeca6b640 (LWP 59202)]
[New Thread 0x7fffcffff640 (LWP 59203)]
GNU gdb (GDB) 10.2
Copyright (C) 2021 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 "x86_64-pc-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 ./chamfer...
(gdb) bt
No stack.
(gdb) quit
[Thread 0x7fffcffff640 (LWP 59203) exited]
[Thread 0x7fffeca6b640 (LWP 59202) exited]
[Thread 0x7fffed26c640 (LWP 59201) exited]
[Thread 0x7fffeda6d640 (LWP 59200) exited]
[Thread 0x7fffee26e640 (LWP 59199) exited]
[Thread 0x7fffef270640 (LWP 59197) exited]
[Thread 0x7fffefa71640 (LWP 59196) exited]
[Thread 0x7ffff0c63640 (LWP 59194) exited]
[Thread 0x7ffff1464640 (LWP 59193) exited]
[Thread 0x7ffff1c65640 (LWP 59192) exited]
[Thread 0x7ffff2466640 (LWP 59191) exited]
[Thread 0x7ffff2c67640 (LWP 59190) exited]
[Thread 0x7ffff3468640 (LWP 59189) exited]
[Thread 0x7ffff3c69640 (LWP 59188) exited]
[Thread 0x7ffff44a0380 (LWP 59184) exited]
[Inferior 1 (process 59184) exited normally]
(gdb) quit
[alex@alex-pc install]$
Oh, I ran the wrong command in my above post. I had duplicated the gdb --args
part. OK. I tried the correct command, but the whole screen froze, so I couldn't continue using anything. I had to kill my terminal, so I don't see the output. I wonder how I can sandbox it in such a way that I can continue using the terminal. Maybe I can SSH in from my phone.
Try this: gdb -ex run -ex bt -ex quit --args ./chamfer -C --experimental --no-host-memory-import --no-scissoring
I did that and it still froze my screen, so I tried it with > output.txt
appended so that when it froze, I could at least get the output in a text file after killing the terminal. Here are the contents of my output.txt
.
output.txt
GNU gdb (GDB) 10.2
Copyright (C) 2021 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 "x86_64-pc-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 ./chamfer...
Starting program: /home/alex/media/projects/chamferwm/install/chamfer -C --experimental --no-host-memory-import --no-scissoring
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff73f79a9 in free () from /usr/lib/libc.so.6
#0 0x00007ffff73f79a9 in free () from /usr/lib/libc.so.6
#1 0x00007ffff7f5951e in xcb_cursor_context_free ()
from /usr/lib/libxcb-cursor.so.0
#2 0x00005555555ef6ff in Backend::Default::Stop (this=0x555555770410)
at ../src/backend.cpp:792
#3 0x000055555557dd54 in DefaultBackend::~DefaultBackend (
this=0x555555770410, __in_chrg=<optimized out>) at ../src/main.cpp:347
#4 0x000055555557de08 in DefaultBackend::~DefaultBackend (
this=0x555555770410, __in_chrg=<optimized out>) at ../src/main.cpp:358
#5 0x000055555557192d in main (argc=5, pargv=0x7fffffffde28)
at ../src/main.cpp:1026
�[?2004hA debugging session is active.
Inferior 1 [process 63275] will be killed.
Quit anyway? (y or n) error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 63275] will be killed.
��[?2004l
Very weird. I suppose @jaelpark might be able to provide any ideas.
I would try commenting out https://github.com/jaelpark/chamferwm/blob/master/src/backend.cpp#L744-L745 just to see what would happen (maybe along with the allocation code a couple lines up, but that shouldn't matter).
You linked to the master
branch instead of the dmabuf_standalone_comp
branch. Was that intentional?
Oh oops, that was by mistake. You should be able to find the same code in that branch as well.
The log says it couldn't find the DRI3 extension. Can you check if DRI3 is enabled?
I googled that and searched the nvidia documentation, but I'm not sure how to enable it. I also searched for "direct rendering" and found the AllowIndirectGLXProtocol
setting, which I have enabled in my xorg configuration. Should I disable that? I don't really know how to approach that.
I'm guessing there's no way to have the DRI3 extension loaded on proprietary nvidia drivers, since DRI is more of a mesa thing. Good news is that the code doesn't really strictly depend on this extension yet, so I can make it optional. I'll see if I can commit some changes soon. I think you can leave your configs as they are, with the exception of AllowSHMPixmaps
which is still needed for now.
Hi! I tried this again today, using gdb -ex run -ex bt -ex quit --args ./chamfer -C --experimental --no-host-memory-import --no-scissoring > output.txt
. The whole screen was frozen except for my mouse cursor, so I had to Alt+F4 the terminal to recover. The good news is it didn't seem to crash, and we have more output directly from chamfer
now. Please see the contents of my output.txt
below.
output.txt
GNU gdb (GDB) 10.2
Copyright (C) 2021 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 "x86_64-pc-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 ./chamfer...
Starting program: /home/alex/media/projects/chamferwm/install/chamfer -C --experimental --no-host-memory-import --no-scissoring
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[chamferwm 2021-06-29 13:16:11] Experimental compositor features enabled.
[chamferwm 2021-06-29 13:16:11] Screen size: 3840x1200 (DPI: 96.000000x0.000000)
[chamferwm 2021-06-29 13:16:11] Root id: 1e9
[chamferwm 2021-06-29 13:16:11] Launching in standalone compositor mode.
[chamferwm 2021-06-29 13:16:11] Backend initialized.
created workspace '1'
[chamferwm 2021-06-29 13:16:11] XComposite 0.4
[chamferwm 2021-06-29 13:16:11] overlay xid: 487
[chamferwm 2021-06-29 13:16:11] XFixes 5.0
[chamferwm 2021-06-29 13:16:11] Damage 1.1
[chamferwm 2021-06-29 13:16:11] SHM 1.2
[chamferwm 2021-06-29 13:16:11] Enumerating required layers
[chamferwm 2021-06-29 13:16:11] Enumerating required extensions
VK_KHR_external_memory_capabilities
VK_KHR_get_physical_device_properties2
VK_KHR_surface
VK_KHR_xcb_surface
VK_EXT_debug_report
[chamferwm 2021-06-29 13:16:11] validation layer2: ReadDataFilesInSearchPaths: Searching the following paths for manifest files: /etc/xdg/vulkan/implicit_layer.d:/etc/vulkan/implicit_layer.d:/usr/local/share/vulkan/implicit_layer.d:/usr/share/vulkan/implicit_layer.d:/home/alex/.local/share/vulkan/implicit_layer.d
[chamferwm 2021-06-29 13:16:11] validation layer2: Found manifest file /usr/share/vulkan/implicit_layer.d/nvidia_layers.json, version "1.0.0"
[chamferwm 2021-06-29 13:16:11] validation layer2: Found manifest file /usr/share/vulkan/implicit_layer.d/MangoHud.json, version "1.0.0"
[chamferwm 2021-06-29 13:16:11] validation layer2: Found manifest file /home/alex/.local/share/vulkan/implicit_layer.d/steamoverlay_i386.json, version "1.0.0"
[chamferwm 2021-06-29 13:16:11] validation layer2: Found manifest file /home/alex/.local/share/vulkan/implicit_layer.d/steamfossilize_x86_64.json, version "1.0.0"
[chamferwm 2021-06-29 13:16:11] validation layer2: Found manifest file /home/alex/.local/share/vulkan/implicit_layer.d/steamfossilize_i386.json, version "1.0.0"
[chamferwm 2021-06-29 13:16:11] validation layer2: Found manifest file /home/alex/.local/share/vulkan/implicit_layer.d/steamoverlay_x86_64.json, version "1.0.0"
[chamferwm 2021-06-29 13:16:11] validation layer2: ReadDataFilesInSearchPaths: Searching the following paths for manifest files: /etc/xdg/vulkan/explicit_layer.d:/etc/vulkan/explicit_layer.d:/usr/local/share/vulkan/explicit_layer.d:/usr/share/vulkan/explicit_layer.d:/home/alex/.local/share/vulkan/explicit_layer.d
[chamferwm 2021-06-29 13:16:11] validation layer2: ReadDataFilesInSearchPaths: Searching the following paths for manifest files: /etc/xdg/vulkan/icd.d:/etc/vulkan/icd.d:/usr/local/share/vulkan/icd.d:/usr/share/vulkan/icd.d:/home/alex/.local/share/vulkan/icd.d
[chamferwm 2021-06-29 13:16:11] validation layer2: Found ICD manifest file /usr/share/vulkan/icd.d/nvidia_icd.json, version "1.0.0"
[chamferwm 2021-06-29 13:16:11] validation layer2: Searching for ICD drivers named libGLX_nvidia.so.0
[chamferwm 2021-06-29 13:16:11] validation layer2: Build ICD instance extension list
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_device_group_creation (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_display (libGLX_nvidia.so.0) version 0.0.23
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_external_fence_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_external_memory_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_external_semaphore_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_get_display_properties2 (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_get_physical_device_properties2 (libGLX_nvidia.so.0) version 0.0.2
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_get_surface_capabilities2 (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_surface (libGLX_nvidia.so.0) version 0.0.25
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_surface_protected_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_xcb_surface (libGLX_nvidia.so.0) version 0.0.6
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_xlib_surface (libGLX_nvidia.so.0) version 0.0.6
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_acquire_xlib_display (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_debug_report (libGLX_nvidia.so.0) version 0.0.9
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_debug_utils (libGLX_nvidia.so.0) version 0.0.2
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_direct_mode_display (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_display_surface_counter (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Loading layer library /usr/$LIB/libMangoHud.so
[chamferwm 2021-06-29 13:16:11] validation layer2: Insert instance layer VK_LAYER_MANGOHUD_overlay (/usr/$LIB/libMangoHud.so)
[chamferwm 2021-06-29 13:16:11] validation layer2: Build ICD instance extension list
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_device_group_creation (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_display (libGLX_nvidia.so.0) version 0.0.23
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_external_fence_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_external_memory_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_external_semaphore_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_get_display_properties2 (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_get_physical_device_properties2 (libGLX_nvidia.so.0) version 0.0.2
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_get_surface_capabilities2 (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_surface (libGLX_nvidia.so.0) version 0.0.25
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_surface_protected_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_xcb_surface (libGLX_nvidia.so.0) version 0.0.6
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_KHR_xlib_surface (libGLX_nvidia.so.0) version 0.0.6
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_acquire_xlib_display (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_debug_report (libGLX_nvidia.so.0) version 0.0.9
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_debug_utils (libGLX_nvidia.so.0) version 0.0.2
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_direct_mode_display (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 13:16:11] validation layer2: Instance Extension: VK_EXT_display_surface_counter (libGLX_nvidia.so.0) version 0.0.1
Program received signal SIGABRT, Aborted.
0x00007ffff73a8d22 in raise () from /usr/lib/libc.so.6
#0 0x00007ffff73a8d22 in raise () from /usr/lib/libc.so.6
#1 0x00007ffff7392862 in abort () from /usr/lib/libc.so.6
#2 0x00007ffff73ead28 in __libc_message () from /usr/lib/libc.so.6
#3 0x00007ffff73f292a in malloc_printerr () from /usr/lib/libc.so.6
#4 0x00007ffff73f41b0 in _int_free () from /usr/lib/libc.so.6
#5 0x00007ffff73f79e8 in free () from /usr/lib/libc.so.6
#6 0x00007ffff7f5951e in xcb_cursor_context_free () from /usr/lib/libxcb-cursor.so.0
#7 0x00005555555ee385 in Backend::Default::Stop (this=0x55555576d410) at ../src/backend.cpp:792
#8 0x000055555557cd54 in DefaultBackend::~DefaultBackend (this=0x55555576d410, __in_chrg=<optimized out>)
at ../src/main.cpp:347
#9 0x000055555557ce08 in DefaultBackend::~DefaultBackend (this=0x55555576d410, __in_chrg=<optimized out>)
at ../src/main.cpp:358
#10 0x000055555557092d in main (argc=5, pargv=0x7fffffffde08) at ../src/main.cpp:1026
�[?2004hA debugging session is active.
Inferior 1 [process 210813] will be killed.
Quit anyway? (y or n) �[?2004l
�[?2004h(gdb) q
�[?2004l
�[?2004hA debugging session is active.
Inferior 1 [process 210813] will be killed.
Quit anyway? (y or n) q
�[?2004l
Please answer y or n.
�[?2004hA debugging session is active.
Inferior 1 [process 210813] will be killed.
Quit anyway? (y or n) q
�[?2004l
Please answer y or n.
�[?2004hA debugging session is active.
Inferior 1 [process 210813] will be killed.
Quit anyway? (y or n) �[?2004l
�[?2004h(gdb) error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 210813] will be killed.
Quit anyway? (y or n) error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 210813] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 210813] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 210813] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 210813] will be killed.
�error detected on stdin
�[?2004l
A debugging session is active.
Inferior 1 [process 210813] will be killed.
��[?2004l
I noticed that if I run it without GDB, it crashes. If I run it with GDB, it doesn't crash. That's inconvenient. However, the crash message shows something that may be useful, since it's an exception error message from your own code. Here's that output for your analysis.
output from running without GDB
[alex@alex-pc ~]$ cd media/projects/chamferwm/install
[alex@alex-pc install]$ ./chamfer -C --experimental
[chamferwm 2021-06-29 14:02:09] Error: Unable to find configuration file.
[chamferwm 2021-06-29 14:02:09] Experimental compositor features enabled.
[chamferwm 2021-06-29 14:02:09] Screen size: 3840x1200 (DPI: 96.000000x0.000000)
[chamferwm 2021-06-29 14:02:09] Root id: 1e9
[chamferwm 2021-06-29 14:02:09] Launching in standalone compositor mode.
[chamferwm 2021-06-29 14:02:09] Backend initialized.
created workspace '1'
[chamferwm 2021-06-29 14:02:09] XComposite 0.4
[chamferwm 2021-06-29 14:02:09] overlay xid: 487
[chamferwm 2021-06-29 14:02:09] XFixes 5.0
[chamferwm 2021-06-29 14:02:09] Damage 1.1
[chamferwm 2021-06-29 14:02:09] SHM 1.2
[chamferwm 2021-06-29 14:02:09] Error: DRI3 extension unavailable.[chamferwm 2021-06-29 14:02:09] Enumerating required layers
[chamferwm 2021-06-29 14:02:09] Enumerating required extensions
VK_KHR_external_memory_capabilities
VK_KHR_get_physical_device_properties2
VK_KHR_surface
VK_KHR_xcb_surface
VK_EXT_debug_report
[chamferwm 2021-06-29 14:02:09] validation layer2: ReadDataFilesInSearchPaths: Searching the following paths for manifest files: /etc/xdg/vulkan/implicit_layer.d:/etc/vulkan/implicit_layer.d:/usr/local/share/vulkan/implicit_layer.d:/usr/share/vulkan/implicit_layer.d:/home/alex/.local/share/vulkan/implicit_layer.d
[chamferwm 2021-06-29 14:02:09] validation layer2: Found manifest file /usr/share/vulkan/implicit_layer.d/nvidia_layers.json, version "1.0.0"
[chamferwm 2021-06-29 14:02:09] validation layer2: Found manifest file /usr/share/vulkan/implicit_layer.d/MangoHud.json, version "1.0.0"
[chamferwm 2021-06-29 14:02:09] validation layer2: Found manifest file /home/alex/.local/share/vulkan/implicit_layer.d/steamoverlay_i386.json, version "1.0.0"
[chamferwm 2021-06-29 14:02:09] validation layer2: Found manifest file /home/alex/.local/share/vulkan/implicit_layer.d/steamfossilize_x86_64.json, version "1.0.0"
[chamferwm 2021-06-29 14:02:09] validation layer2: Found manifest file /home/alex/.local/share/vulkan/implicit_layer.d/steamfossilize_i386.json, version "1.0.0"
[chamferwm 2021-06-29 14:02:09] validation layer2: Found manifest file /home/alex/.local/share/vulkan/implicit_layer.d/steamoverlay_x86_64.json, version "1.0.0"
[chamferwm 2021-06-29 14:02:09] validation layer2: ReadDataFilesInSearchPaths: Searching the following paths for manifest files: /etc/xdg/vulkan/explicit_layer.d:/etc/vulkan/explicit_layer.d:/usr/local/share/vulkan/explicit_layer.d:/usr/share/vulkan/explicit_layer.d:/home/alex/.local/share/vulkan/explicit_layer.d
[chamferwm 2021-06-29 14:02:09] validation layer2: ReadDataFilesInSearchPaths: Searching the following paths for manifest files: /etc/xdg/vulkan/icd.d:/etc/vulkan/icd.d:/usr/local/share/vulkan/icd.d:/usr/share/vulkan/icd.d:/home/alex/.local/share/vulkan/icd.d
[chamferwm 2021-06-29 14:02:09] validation layer2: Found ICD manifest file /usr/share/vulkan/icd.d/nvidia_icd.json, version "1.0.0"
[chamferwm 2021-06-29 14:02:09] validation layer2: Searching for ICD drivers named libGLX_nvidia.so.0
[chamferwm 2021-06-29 14:02:09] validation layer2: Build ICD instance extension list
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_device_group_creation (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_display (libGLX_nvidia.so.0) version 0.0.23
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_external_fence_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_external_memory_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_external_semaphore_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_get_display_properties2 (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_get_physical_device_properties2 (libGLX_nvidia.so.0) version 0.0.2
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_get_surface_capabilities2 (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_surface (libGLX_nvidia.so.0) version 0.0.25
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_surface_protected_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_xcb_surface (libGLX_nvidia.so.0) version 0.0.6
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_xlib_surface (libGLX_nvidia.so.0) version 0.0.6
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_acquire_xlib_display (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_debug_report (libGLX_nvidia.so.0) version 0.0.9
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_debug_utils (libGLX_nvidia.so.0) version 0.0.2
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_direct_mode_display (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_display_surface_counter (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Loading layer library /usr/$LIB/libMangoHud.so
[chamferwm 2021-06-29 14:02:09] validation layer2: Insert instance layer VK_LAYER_MANGOHUD_overlay (/usr/$LIB/libMangoHud.so)
[chamferwm 2021-06-29 14:02:09] validation layer2: Build ICD instance extension list
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_device_group_creation (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_display (libGLX_nvidia.so.0) version 0.0.23
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_external_fence_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_external_memory_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_external_semaphore_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_get_display_properties2 (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_get_physical_device_properties2 (libGLX_nvidia.so.0) version 0.0.2
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_get_surface_capabilities2 (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_surface (libGLX_nvidia.so.0) version 0.0.25
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_surface_protected_capabilities (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_xcb_surface (libGLX_nvidia.so.0) version 0.0.6
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_KHR_xlib_surface (libGLX_nvidia.so.0) version 0.0.6
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_acquire_xlib_display (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_debug_report (libGLX_nvidia.so.0) version 0.0.9
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_debug_utils (libGLX_nvidia.so.0) version 0.0.2
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_direct_mode_display (libGLX_nvidia.so.0) version 0.0.1
[chamferwm 2021-06-29 14:02:09] validation layer2: Instance Extension: VK_EXT_display_surface_counter (libGLX_nvidia.so.0) version 0.0.1
skipping config: /home/alex/media/projects/chamferwm/install/MangoHud.conf [ not found ]
skipping config: /home/alex/.config/MangoHud/chamfer.conf [ not found ]
skipping config: /home/alex/.config/MangoHud/MangoHud.conf [ not found ]
[chamferwm 2021-06-29 14:02:09] Enumerating physical devices
Host pointer import supported!
* 0: NVIDIA GeForce GTX 1080 Ti
.deviceID: 6918
.vendorID: 4318
.deviceType: 2
max push constant size: 256
max bound desc sets: 32
[chamferwm 2021-06-29 14:02:09] Available surface formats: 225088848
[chamferwm 2021-06-29 14:02:10] Error: No suitable queue family available.
Segmentation fault (core dumped)
[alex@alex-pc install]$
Looking forward to this tried of using the 1000 forks of picom that all have their own issues
Thanks for the interest for the project. Due to busyness with work and stuff, I haven't found much time to work on this lately. There are lots of improvements in other branches I'm looking to merge into the master eventually, including the standalone compositor, but some fixing and more work is still needed. Things are a bit too buggy at the moment to be presentable...