Nvidia Vulkan completely broken under Wayland

Hello.

It seems that the Vulkan Wayland WSI is broken with the proprietary Nvidia drivers, on every desktop environment I tested(Sway WM, KDE, GNOME).

The vkcube-wayland app doesn’t function properly, it draws a semi transparent(normally the window is a solid color) window while still rendering the spinning cube.
On the emulation side, every emulators faced problems with Vulkan on Wayland but OpenGL works fine.

On GNOME the window become white and when you move it across the screen you can brievely see anything because it’s a little more transparent(Emulator : PPSSPP), (Emulator : PCSX2) the window render well but the game feels like we are viewing it through a white-transparent filter.

on KDE, no white filter problems, however, games have severe visual glitches makes all my the games unplayable on various emulators(PPSSPP, PCSX2 etc.)

But it seems that “normal” games that uses Vulkan and Wayland still works good, I’m not sure either.

And on my full AMD CPU/GPU desktop system Vulkan and Wayland works fine with the same settings and emulators.

I don’t understand what’s happening.

How I can fix this issue and if I can’t, how I can contact Nvidia to tell them to fix this bug ?

I have similar issue with 530.41.03. Wayland apps like vkcube-wayland segfault when trying to use vulkan with nvidia card (RTX 3060 laptop). They can use Intel UHD vulkan just fine.
Update: if __NV_PRIME_RENDER_OFFLOAD set to 1, vkcube-wayland prints:
error 7: importing the supplied dmabufs failed
and exits

With 535.54.03 issue persists: native wayland applications can not use vulkan on nvidia GPU at least in offload mode.

II tested vulkan offloading for native wayland apps with 545.29.06 and the results are:
vkcube-wayland works fine

PPSSPPSDL crashes on startup:

Starting program: /mnt/d/PPSSPP/PPSSPPSDL 

To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.                                                                                  
[Thread debugging using libthread_db enabled]                                                                                                                                                                            
Using host libthread_db library "/lib64/libthread_db.so.1".                                                                                                                                         
VulkanMayBeAvailable: Device allowed ('SDL:Linux')                                                                                                                                                                       
VulkanMayBeAvailable: Library loaded ('libvulkan.so')                                                                                                                                                                    
VulkanMayBeAvailable: Enumerating instance extensions                                                                                                                                               
VulkanMayBeAvailable: Instance extension count: 23                                                                                                                                                                       
VulkanMaybeAvailable: Instance extension found: VK_KHR_device_group_creation (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_display (00000017)
VulkanMaybeAvailable: Instance extension found: VK_KHR_external_fence_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_external_memory_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_external_semaphore_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_get_display_properties2 (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_get_physical_device_properties2 (00000002)
VulkanMaybeAvailable: Instance extension found: VK_KHR_get_surface_capabilities2 (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_surface (00000019)
VulkanMaybeAvailable: Instance extension found: VK_KHR_wayland_surface (00000006)
VulkanMaybeAvailable: Instance extension found: VK_KHR_xcb_surface (00000006)
VulkanMaybeAvailable: Instance extension found: VK_KHR_xlib_surface (00000006)
VulkanMaybeAvailable: Instance extension found: VK_EXT_acquire_drm_display (00000001)
VulkanMaybeAvailable: Instance extension found: VK_EXT_acquire_xlib_display (00000001)
VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_report (0000000a)
VulkanMaybeAvailable: Instance extension found: VK_EXT_debug_utils (00000002)
VulkanMaybeAvailable: Instance extension found: VK_EXT_direct_mode_display (00000001)
VulkanMaybeAvailable: Instance extension found: VK_EXT_display_surface_counter (00000001)
VulkanMaybeAvailable: Instance extension found: VK_EXT_swapchain_colorspace (00000004)
VulkanMaybeAvailable: Instance extension found: VK_KHR_surface_protected_capabilities (00000001)
VulkanMaybeAvailable: Instance extension found: VK_EXT_surface_maintenance1 (00000001)
VulkanMaybeAvailable: Instance extension found: VK_KHR_portability_enumeration (00000001)
VulkanMaybeAvailable: Instance extension found: VK_LUNARG_direct_driver_loading (00000001)
VulkanMayBeAvailable: Calling vkCreateInstance                                                                                       
VulkanMayBeAvailable: Vulkan test instance created successfully.                                                                                                                                                         
[New Thread 0x7fffe5bff6c0 (LWP 58717)]
VulkanMayBeAvailable: Eligible device found: 'NVIDIA GeForce RTX 3060 Laptop GPU'
VulkanMayBeAvailable: Eligible device found: 'Intel(R) UHD Graphics (CML GT2)'
VulkanMayBeAvailable: Ineligible device found and ignored: 'llvmpipe (LLVM 16.0.6, 256 bits)'
VulkanMayBeAvailable: Found working Vulkan API!
VulkanMayBeAvailable: Destroying instance
[Thread 0x7fffe5bff6c0 (LWP 58717) exited]
DEBUG: Vulkan might be available.                                                                                        
[New Thread 0x7ffff1d8d6c0 (LWP 58726)]                                                                                                                                                                                  
Info: We compiled against SDL version 2.26.5 and we are linking against SDL version 2.26.5. :)                                                                                                                           
ThreadManager::Init(compute threads: 16, all: 32)
[New Thread 0x7fffe5bff6c0 (LWP 58728)]
[New Thread 0x7ffff19aa6c0 (LWP 58729)]
[New Thread 0x7ffff11a96c0 (LWP 58730)]
[New Thread 0x7fffe8bff6c0 (LWP 58731)]
[New Thread 0x7fffe83fe6c0 (LWP 58732)]
[New Thread 0x7fffe7bfd6c0 (LWP 58733)]
[New Thread 0x7fffe73fc6c0 (LWP 58734)]
[New Thread 0x7fffe53fe6c0 (LWP 58735)]
[New Thread 0x7fffe4bfd6c0 (LWP 58736)]
[New Thread 0x7fffdbfff6c0 (LWP 58737)]
[New Thread 0x7fffdb7fe6c0 (LWP 58738)]
[New Thread 0x7fffdaffd6c0 (LWP 58739)]
[New Thread 0x7fffda7fc6c0 (LWP 58740)]
[New Thread 0x7fffd9ffb6c0 (LWP 58741)]
[New Thread 0x7fffd97fa6c0 (LWP 58742)]
[New Thread 0x7fffd8ff96c0 (LWP 58743)]
[New Thread 0x7fffd87f86c0 (LWP 58744)]
[New Thread 0x7fffd7ff76c0 (LWP 58745)]
[New Thread 0x7fffd77f66c0 (LWP 58746)]
[New Thread 0x7fffd6ff56c0 (LWP 58747)]
[New Thread 0x7fffd67f46c0 (LWP 58748)]
[New Thread 0x7fffd5ff36c0 (LWP 58749)]
[New Thread 0x7fffd57f26c0 (LWP 58750)]
[New Thread 0x7fffd4ff16c0 (LWP 58751)]
[New Thread 0x7fffd47f06c0 (LWP 58752)]
[New Thread 0x7fffd3fef6c0 (LWP 58753)]
[New Thread 0x7fffd37ee6c0 (LWP 58754)]
[New Thread 0x7fffd2fed6c0 (LWP 58755)]
[New Thread 0x7fffd27ec6c0 (LWP 58756)]
[New Thread 0x7fffd1feb6c0 (LWP 58757)]
[New Thread 0x7fffd17ea6c0 (LWP 58758)]
[New Thread 0x7fffd0fe96c0 (LWP 58759)]
Registered VFS for prefix : /usr/local/share/ppsspp/assets
Registered VFS for prefix : /mnt/d/PPSSPP/assets
Registered VFS for prefix : /mnt/d/PPSSPP
Registered VFS for prefix : /usr/local/share/ppsspp/assets
Registered VFS for prefix : /usr/local/share/games/ppsspp/assets
Registered VFS for prefix : /usr/share/ppsspp/assets
Registered VFS for prefix : /usr/share/games/ppsspp/assets
Registered VFS for prefix : assets
Registered VFS for prefix : /home/thesource
03:44:793 Core/Config.cpp:329 I[G3D]: Longest display side: 1920 pixels. Choosing scale 2
03:44:810 Core/Config.cpp:1196 I[LOADER]: Loading controller config: /home/thesource/.config/ppsspp/PSP/SYSTEM/controls.ini
[New Thread 0x7fffc2fff6c0 (LWP 58760)]
03:44:811 Core/Config.cpp:1212 I[LOADER]: Config loaded: '/home/thesource/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
[Thread 0x7fffc2fff6c0 (LWP 58760) exited]
03:44:814 Core/System.cpp:725 I[IO]: Creating '/home/thesource/.config/ppsspp/PSP' and subdirs:
03:44:814 File/FileUtil.cpp:537 D[COMMON]: CreateDir('/home/thesource/.config/ppsspp/PSP')
03:44:814 File/FileUtil.cpp:561 W[COMMON]: CreateDir: mkdir failed on /home/thesource/.config/ppsspp/PSP: already exists
03:44:814 File/FileUtil.cpp:573 D[COMMON]: CreateFullPath: path exists /home/thesource/.config/ppsspp/PSP/Cheats
03:44:814 File/FileUtil.cpp:573 D[COMMON]: CreateFullPath: path exists /home/thesource/.config/ppsspp/PSP/SAVEDATA
03:44:814 File/FileUtil.cpp:573 D[COMMON]: CreateFullPath: path exists /home/thesource/.config/ppsspp/PSP/PPSSPP_STATE
03:44:814 File/FileUtil.cpp:573 D[COMMON]: CreateFullPath: path exists /home/thesource/.config/ppsspp/PSP/GAME
03:44:814 File/FileUtil.cpp:573 D[COMMON]: CreateFullPath: path exists /home/thesource/.config/ppsspp/PSP/SYSTEM
03:44:814 File/FileUtil.cpp:573 D[COMMON]: CreateFullPath: path exists /home/thesource/.config/ppsspp/PSP/TEXTURES
03:44:814 File/FileUtil.cpp:573 D[COMMON]: CreateFullPath: path exists /home/thesource/.config/ppsspp/PSP/PLUGINS
03:44:814 File/FileUtil.cpp:573 D[COMMON]: CreateFullPath: path exists /home/thesource/.config/ppsspp/PSP/SYSTEM/CACHE
03:44:815 UI/BackgroundAudio.cpp:388 W[AUDIO]: Failed to load sample 'sfx_achievement_unlocked.wav'
03:44:815 UI/BackgroundAudio.cpp:521 E[SYSTEM]: Failed to load the default sample for UI sound 5
03:44:815 UI/BackgroundAudio.cpp:388 W[AUDIO]: Failed to load sample 'sfx_leaderbord_submitted.wav'
03:44:815 UI/BackgroundAudio.cpp:521 E[SYSTEM]: Failed to load the default sample for UI sound 6
03:44:815 UI/NativeApp.cpp:781 D[SYSTEM]: ScreenManager!
03:44:815 UI/NativeApp.cpp:317 N[LOADER]: Not checking for failed graphics backends in debug mode
03:44:815 Core/RetroAchievements.cpp:220 I[ACHIEVEMENTS]: RetroAchievements: Using host: http://retroachievements.org
03:44:815 Core/RetroAchievements.cpp:220 I[ACHIEVEMENTS]: RetroAchievements: Attempting to log in thesourcehim (with token)
03:44:815 Net/HTTPRequest.cpp:13 I[HTTP]: HTTP POST request: http://retroachievements.org/dorequest.php (Подключение к серверу RetroAchievements...)
[New Thread 0x7fffc27fe6c0 (LWP 58761)]                                                                                                                                   
03:45:629 Net/HTTPClient.cpp:152 I[HTTP]: connect(28): Ignoring unreachable resolved address ::2a06:98c1:3123:e000:0:0                                                                                                   
03:45:629 Net/HTTPClient.cpp:152 I[HTTP]: connect(28): Ignoring unreachable resolved address ::2a06:98c1:3122:e000:0:0
03:45:832 Vulkan/VulkanLoader.cpp:295 I[G3D]: VulkanLoad: Library loaded ('libvulkan.so')                                                                                                                                
03:45:832 Vulkan/VulkanLoader.cpp:527 I[G3D]: VulkanLoad: Base functions loaded.
03:45:837 Vulkan/VulkanContext.cpp:144 I[G3D]: Vulkan debug_utils validation enabled.
03:47:485 Net/HTTPClient.cpp:594 I[HTTP]: Completed requesting http://retroachievements.org/dorequest.php (storing result to memory)                                                                                                                                                          
[Thread 0x7fffc27fe6c0 (LWP 58761) exited]                                                                                                                                                                               
[New Thread 0x7fffb7dff6c0 (LWP 58805)]                                                                                                                                                                                  
04:04:241 Vulkan/VulkanLoader.cpp:603 I[G3D]: Vulkan instance functions loaded.
04:04:270 Vulkan/VulkanContext.cpp:817 I[G3D]: Debug callback registered with vkCreateDebugUtilsMessengerEXT.
04:04:270 Vulkan/VulkanContext.cpp:539 I[G3D]: Chose physical device 0: NVIDIA GeForce RTX 3060 Laptop GPU
04:04:270 Vulkan/VulkanContext.cpp:581 I[G3D]: Memory Types (5):
04:04:270 Vulkan/VulkanContext.cpp:586 I[G3D]:   1: Heap 0; Flags: DEVICE_LOCAL   
04:04:270 Vulkan/VulkanContext.cpp:586 I[G3D]:   2: Heap 1; Flags: HOST_VISIBLE HOST_COHERENT   
04:04:270 Vulkan/VulkanContext.cpp:586 I[G3D]:   3: Heap 1; Flags: HOST_VISIBLE HOST_CACHED HOST_COHERENT   
04:04:270 Vulkan/VulkanContext.cpp:586 I[G3D]:   4: Heap 0; Flags: DEVICE_LOCAL HOST_VISIBLE HOST_COHERENT   
[New Thread 0x7fffb75fe6c0 (LWP 58807)]
[New Thread 0x7fffb6dfd6c0 (LWP 58808)]
[New Thread 0x7fffb65fc6c0 (LWP 58809)]
[New Thread 0x7fffb5dfb6c0 (LWP 58811)]
[New Thread 0x7fffb55fa6c0 (LWP 58813)]
04:04:297 Vulkan/VulkanLoader.cpp:610 I[G3D]: Vulkan device functions loaded.
04:04:297 Vulkan/VulkanLoader.cpp:627 I[G3D]: Missing (device): vkGetDeviceBufferMemoryRequirements
04:04:297 Vulkan/VulkanLoader.cpp:630 I[G3D]: Missing (device): vkGetDeviceImageMemoryRequirements
04:04:297 Vulkan/VulkanContext.cpp:743 I[G3D]: Vulkan Device created: NVIDIA GeForce RTX 3060 Laptop GPU
04:04:297 Vulkan/VulkanLoader.cpp:317 I[G3D]: Setting Vulkan availability to true
04:04:297 Vulkan/VulkanContext.cpp:845 I[G3D]: Creating Vulkan surface for window (0x2e7b9d0 0x2c1b4e0)
04:04:298 Vulkan/VulkanContext.cpp:1206 I[G3D]: swapchain_format: 37 (/7)
04:04:298 Vulkan/VulkanContext.cpp:1270 I[G3D]: surfCapabilities_.current: 1920x1080 min: 1x1 max: 16384x16384 computed: 1920x1080
04:04:298 Vulkan/VulkanContext.cpp:1289 I[G3D]: Supported present modes: MAILBOX, FIFO
04:04:298 Vulkan/VulkanContext.cpp:1317 I[G3D]: Chosen present mode: 2 (FIFO). numSwapChainImages: 3/8
04:04:298 Vulkan/VulkanContext.cpp:1364 I[G3D]: Transform supported: IDENTITY  current: IDENTITY  chosen: IDENTITY 
04:04:309 Vulkan/VulkanContext.cpp:1427 I[G3D]: Created swapchain: 1920x1080
04:04:310 Vulkan/VulkanQueueRunner.cpp:47 I[G3D]: VulkanQueueRunner::CreateDeviceObjects
04:04:675 Vulkan/VulkanRenderManager.cpp:322 I[G3D]: Starting Vulkan submission thread
[New Thread 0x7fff9c94b6c0 (LWP 58815)]
04:04:676 Vulkan/VulkanRenderManager.cpp:325 I[G3D]: Starting Vulkan compiler thread
[New Thread 0x7fff9c14a6c0 (LWP 58816)]
04:04:676 UI/NativeApp.cpp:829 I[SYSTEM]: NativeInitGraphics
04:04:677 Vulkan/VulkanRenderManager.cpp:136 I[G3D]: Pipeline (x/2) time on : 0.59 ms, 0.69 ms since scheduling  rpType: 0008 sampleBits: 1 (global_color)
04:04:677 Vulkan/VulkanRenderManager.cpp:136 I[G3D]: Pipeline (x/2) time on : 0.61 ms, 0.70 ms since scheduling  rpType: 0008 sampleBits: 1 (global_texcolor)
04:04:687 UI/NativeApp.cpp:893 I[SYSTEM]: NativeInitGraphics completed
04:04:687 SDL/SDLMain.cpp:160 I[AUDIO]: SDL: Trying a different audio device
[New Thread 0x7fff9b9496c0 (LWP 58817)]
loading control pad mappings from gamecontrollerdb.txt: SUCCESS!
04:04:697 Core/RetroAchievements.cpp:220 I[ACHIEVEMENTS]: RetroAchievements: Login failed: Invalid user/token combination.
04:04:697 Core/RetroAchievements.cpp:383 E[ACHIEVEMENTS]: Callback: Failure logging in via token: -34, Invalid user/token combination.
[New Thread 0x7fffc27fe6c0 (LWP 58819)]
04:04:698 UI/DiscordIntegration.cpp:60 I[SYSTEM]: Discord connection initialized
04:04:747 Vulkan/VulkanMemory.cpp:375 D[G3D]: pushBuffer: Created new block of size 16.0 MB in 0.02 ms
04:04:752 Vulkan/VulkanMemory.cpp:375 D[G3D]: pushBuffer: Created new block of size 8.0 MB in 1.14 ms
04:04:762 UI/NativeApp.cpp:1163 I[G3D]: Resized flag set - recalculating bounds
[New Thread 0x7fff9b1486c0 (LWP 58823)]
04:04:766 Vulkan/VulkanRenderManager.cpp:366 I[G3D]: Vulkan submission thread joined. Frame=1
[Thread 0x7fff9c94b6c0 (LWP 58815) exited]
04:04:766 Vulkan/VulkanRenderManager.cpp:374 I[G3D]: Vulkan compiler thread joined.
[Thread 0x7fff9c14a6c0 (LWP 58816) exited]
04:04:766 Vulkan/VulkanQueueRunner.cpp:247 I[G3D]: Backbuffers destroyed

Thread 1 "PPSSPPSDL" received signal SIGSEGV, Segmentation fault.
0x00007ffff7fb9806 in wl_list_empty (list=list@entry=0x0) at ../src/wayland-util.c:81
81              return list->next == list;                                                                                                                                                                               
Missing separate debuginfos, use: dnf debuginfo-install xorg-x11-drv-nvidia-libs-545.29.06-1.fc39.x86_64
(gdb) bt full
#0  0x00007ffff7fb9806 in wl_list_empty (list=list@entry=0x0) at ../src/wayland-util.c:81
No locals.
#1  0x00007ffff7fb996e in wl_display_prepare_read_queue (display=display@entry=0x2e7b9d0, queue=queue@entry=0x0) at ../src/wayland-client.c:1853
        ret = <optimized out>
#2  0x00007ffff7fbb561 in wl_display_dispatch_queue (display=0x2e7b9d0, queue=0x0) at ../src/wayland-client.c:1965
        ret = <optimized out>
#3  0x00007ffff5908583 in ?? () from /lib64/libnvidia-glcore.so.545.29.06
No symbol table info available.
#4  0x00007ffff5901537 in ?? () from /lib64/libnvidia-glcore.so.545.29.06
No symbol table info available.
#5  0x00007ffff59364a6 in ?? () from /lib64/libnvidia-glcore.so.545.29.06
No symbol table info available.
#6  0x00007ffff6d36c9c in ?? () from /lib64/libGLX_nvidia.so.0
No symbol table info available.
#7  0x00007fffb878a91f in DispatchDestroySwapchainKHR () at /usr/src/debug/vulkan-validation-layers-1.3.250.1-2.fc39.x86_64/layers/vulkan/generated/layer_chassis_dispatch.cpp:661
No locals.
#8  vulkan_layer_chassis::DestroySwapchainKHR () at /usr/src/debug/vulkan-validation-layers-1.3.250.1-2.fc39.x86_64/layers/vulkan/generated/chassis.cpp:5661
No locals.
#9  0x0000000000b97545 in VulkanContext::DestroySwapchain (this=0x2c448f0) at /mnt/d/projects/git/ppsspp/Common/GPU/Vulkan/VulkanContext.cpp:351
No locals.
#10 0x0000000000c712be in SDLVulkanGraphicsContext::Resize (this=0x2cc5d00) at /mnt/d/projects/git/ppsspp/SDL/SDLVulkanGraphicsContext.cpp:184
No locals.
#11 0x00000000004391c8 in NativeFrame (graphicsContext=0x2cc5d00) at /mnt/d/projects/git/ppsspp/UI/NativeApp.cpp:1180
        menuThrottle = true
        startTime = 19.886282025
        toProcess = std::vector of length 0, capacity 0
        __FUNCTION__ = "NativeFrame"
        ortho = {{{xx = 0.00104166672, xy = 0, xz = 0, xw = 0, yx = 0, yy = 0.00185356813, yz = 0, yw = 0, zx = 0, zy = 0, zz = 0.5, zw = 0, wx = -1, wy = -1, wz = 0.5, ww = 1}, m = {0.00104166672, 0, 0, 0, 0, 
              0.00185356813, 0, 0, 0, 0, 0.5, 0, -1, -1, 0.5, 1}}}
        debugFlags = Draw::DebugFlags::NONE
        interval = 1
        presentMode = Draw::PresentMode::FIFO
#12 0x00000000005ba427 in UpdateRunLoop (ctx=0x2cc5d00) at /mnt/d/projects/git/ppsspp/Core/Core.cpp:201
No locals.
#13 0x0000000000c6b482 in main (argc=1, argv=0x7fffffffd308) at /mnt/d/projects/git/ppsspp/SDL/SDLMain.cpp:1466
        startTime = 19.886237855000001
        event = {type = 32512, common = {type = 32512, timestamp = 25318}, display = {type = 32512, timestamp = 25318, display = 0, event = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', 
            data1 = 0}, window = {type = 32512, timestamp = 25318, windowID = 0, event = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', data1 = 0, data2 = 0}, key = {type = 32512, 
            timestamp = 25318, windowID = 0, state = 0 '\000', repeat = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', keysym = {scancode = SDL_SCANCODE_UNKNOWN, sym = 0, mod = 0, unused = 0}}, edit = {
            type = 32512, timestamp = 25318, windowID = 0, text = '\000' <repeats 31 times>, start = 0, length = 0}, editExt = {type = 32512, timestamp = 25318, windowID = 0, text = 0x0, start = 0, length = 0}, 
--Type <RET> for more, q to quit, c to continue without paging--
          text = {type = 32512, timestamp = 25318, windowID = 0, text = '\000' <repeats 31 times>}, motion = {type = 32512, timestamp = 25318, windowID = 0, which = 0, state = 0, x = 0, y = 0, xrel = 0, yrel = 0}, 
          button = {type = 32512, timestamp = 25318, windowID = 0, which = 0, button = 0 '\000', state = 0 '\000', clicks = 0 '\000', padding1 = 0 '\000', x = 0, y = 0}, wheel = {type = 32512, timestamp = 25318, 
            windowID = 0, which = 0, x = 0, y = 0, direction = 0, preciseX = 0, preciseY = 0, mouseX = 0, mouseY = 0}, jaxis = {type = 32512, timestamp = 25318, which = 0, axis = 0 '\000', padding1 = 0 '\000', 
            padding2 = 0 '\000', padding3 = 0 '\000', value = 0, padding4 = 0}, jball = {type = 32512, timestamp = 25318, which = 0, ball = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', 
            xrel = 0, yrel = 0}, jhat = {type = 32512, timestamp = 25318, which = 0, hat = 0 '\000', value = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, jbutton = {type = 32512, timestamp = 25318, 
            which = 0, button = 0 '\000', state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, jdevice = {type = 32512, timestamp = 25318, which = 0}, jbattery = {type = 32512, timestamp = 25318, which = 0, 
            level = SDL_JOYSTICK_POWER_EMPTY}, caxis = {type = 32512, timestamp = 25318, which = 0, axis = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', value = 0, padding4 = 0}, 
          cbutton = {type = 32512, timestamp = 25318, which = 0, button = 0 '\000', state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, cdevice = {type = 32512, timestamp = 25318, which = 0}, ctouchpad = {
            type = 32512, timestamp = 25318, which = 0, touchpad = 0, finger = 0, x = 0, y = 0, pressure = 0}, csensor = {type = 32512, timestamp = 25318, which = 0, sensor = 0, data = {0, 0, 0}, timestamp_us = 0}, 
          adevice = {type = 32512, timestamp = 25318, which = 0, iscapture = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000'}, sensor = {type = 32512, timestamp = 25318, which = 0, data = {0, 
              0, 0, 0, 0, 0}, timestamp_us = 0}, quit = {type = 32512, timestamp = 25318}, user = {type = 32512, timestamp = 25318, windowID = 0, code = 0, data1 = 0x0, data2 = 0x0}, syswm = {type = 32512, 
            timestamp = 25318, msg = 0x0}, tfinger = {type = 32512, timestamp = 25318, touchId = 0, fingerId = 0, x = 0, y = 0, dx = 0, dy = 0, pressure = 0, windowID = 0}, mgesture = {type = 32512, 
            timestamp = 25318, touchId = 0, dTheta = 0, dDist = 0, x = 0, y = 0, numFingers = 0, padding = 0}, dgesture = {type = 32512, timestamp = 25318, touchId = 0, gestureId = 0, numFingers = 0, error = 0, 
            x = 0, y = 0}, drop = {type = 32512, timestamp = 25318, file = 0x0, windowID = 0}, padding = "\000\177\000\000\346b", '\000' <repeats 49 times>}
        keys = 0x7ffff7ee054a <SDL_keyboard.lto_priv.0+522> ""
        renderThreadPaused = false
        compiled = {major = 2 '\002', minor = 26 '\032', patch = 5 '\005'}
        linked = {major = 2 '\002', minor = 26 '\032', patch = 5 '\005'}
        set_xres = -1
        set_yres = -1
        portrait = false
        set_ipad = false
        set_dpi = 0
        set_scale = 1
        remain_argc = 1
        remain_argv = {0x7fffffffd7f4 "/mnt/d/PPSSPP/PPSSPPSDL", 0x0 <repeats 255 times>}
        mode = 12321
        app_name = "ppsspp"
        app_name_nice = "PPSSPP"
        version = "v1.16.6"
        landscape = true
        joystick_enabled = true
        displayMode = {format = 370546692, w = 1920, h = 1080, refresh_rate = 120, driverdata = 0x2cdc4d0}
        should_be_zero = 0
        path = "/home/thesource/\000\277\377\377\377\177\000\000\017\000\000\000\000\000\000\000.erroronwarning\000\326\351\026\001\000\000\000\000\000\000\000\000\377\177\000\000@u\266\002\000\000\000\000\020\000\000\000\000\000\000\000\020", '\000' <repeats 15 times>, "\001\353\026\001", '\000' <repeats 12 times>, "P\300\377\377\377\177\000\000\a\000\000\000\000\000\000\000.nocash\000\000\000\000\000\000\000\000\000&\354\026\001", '\000' <repeats 12 times>, "\200\300\377\377\377\177\000\000\004\000\000\000\000\000\000\000.sym", '\000' <repeats 12 times>, "K\355\026\001", '\000' <repeats 12 times>...
        the_path = 0x7fffffffdc77 "/home/thesource"
        external_dir = 0x16adb18 "/tmp"
        x = 536805376
--Type <RET> for more, q to quit, c to continue without paging--
        y = 536805376
        w = 960
        h = 544
        graphicsContext = 0x2cc5d00
        window = 0x2c65b40
        error_message = ""
        dpi_scale = 0.999479473
        useEmuThread = false
        iconPath = "/mnt/d/PPSSPP/assets/icon_regular_72.png\000ar_72.png\000\000\000\000\000\000\260\235\266\002", '\000' <repeats 12 times>, "\363\310\354r\357\372\221\n\000u\332\001", '\000' <repeats 12 times>, "0\260\377\377\377\177\000\000\347\315\022\001\000\000\000\000\270\235\266\002\000\000\000\000\270\235\266\002\000\000\000\000\300\301\377\377\377\177\000\000\300\301\377\377\377\177\000\000\200\260\377\377\377\177\000\000\251\311\022\001\000\000\000\000\360g\266\002\000\000\000\000а\377\377\377\177\000\000\300\301\377\377\377\177\000\000\000u\332\001\000\000\000\000\200\260\377\377\377\177\000\0001"...
        width = 72
        height = 72
        imageData = 0x0
        inputTracker = {mouseDown = false, mouseDeltaX = 0, mouseDeltaY = 0, mouseWheelMovedUpFrames = 0, mouseWheelMovedDownFrames = 0, mouseCaptured = false}

ppsspp version 1.16.6, built from git source using provided b.sh script:
env CMAKE_ARGS=-DUSE_WAYLAND_WSI=ON ./b.sh --debug

With intel hardware ppsspp can use vulkan just fine, no crash.
So it seems there’s a progress supporting vulkan offloading for wayland but not everything works yet.

nvidia-bug-report.log.gz (1.4 MB)

With 550.54.14 the situation improved much. Now I can use ppsspp wayland with vulkan almost without errors: crash still occurs while destroying swapchain on exit:

#0  0x00007ffff7fb9806 in wl_list_empty () from /lib64/libwayland-client.so.0
No symbol table info available.
#1  0x00007ffff7fb996e in wl_display_prepare_read_queue () from /lib64/libwayland-client.so.0
No symbol table info available.
#2  0x00007ffff7fbb561 in wl_display_dispatch_queue () from /lib64/libwayland-client.so.0
No symbol table info available.
#3  0x00007ffff58ffa93 in ?? () from /lib64/libnvidia-glcore.so.550.54.14
No symbol table info available.
#4  0x00007ffff590dc77 in ?? () from /lib64/libnvidia-glcore.so.550.54.14
No symbol table info available.
#5  0x00007ffff5948ce6 in ?? () from /lib64/libnvidia-glcore.so.550.54.14
No symbol table info available.
#6  0x00007ffff6d3dccc in ?? () from /lib64/libGLX_nvidia.so.0
No symbol table info available.
#7  0x0000000000ba402b in VulkanContext::DestroySwapchain (this=0x2f6fd30) at /mnt/d/projects/git/ppsspp/Common/GPU/Vulkan/VulkanContext.cpp:352
No locals.
#8  0x0000000000c8469d in SDLVulkanGraphicsContext::Shutdown (this=0x2e1cad0) at /mnt/d/projects/git/ppsspp/SDL/SDLVulkanGraphicsContext.cpp:175
No locals.
#9  0x0000000000c7f0a3 in main (argc=1, argv=0x7fffffffd348) at /mnt/d/projects/git/ppsspp/SDL/SDLMain.cpp:1511
        compiled = {major = 2 '\002', minor = 28 '\034', patch = 5 '\005'}
        linked = {major = 2 '\002', minor = 28 '\034', patch = 5 '\005'}
        set_xres = -1
        set_yres = -1
        portrait = false
        set_ipad = false
        set_dpi = 0
        set_scale = 1
        remain_argc = 1
        remain_argv = {0x7fffffffd820 "/mnt/d/PPSSPP/bin/PPSSPPSDL", 0x0 <repeats 255 times>}
        mode = 12321
        app_name = "ppsspp"
        app_name_nice = "PPSSPP"
        version = "v1.17.1-23-g70cc5da62f"
        landscape = true
        joystick_enabled = true
        displayMode = {format = 370546692, w = 1920, h = 1080, refresh_rate = 120, driverdata = 0x2dcd790}
        should_be_zero = 0
        path = 
        the_path = 
        external_dir = 0x17083c8 "/tmp"
        x = 536805376
        y = 536805376
        w = 960
        h = 544
        graphicsContext = 0x2e1cad0
        window = 0x2e0ada0
        error_message = ""
        dpi_scale = 0.999479473
        mainThreadIsRender = false
        iconPath = 
        width = 72
        height = 72
        imageData = 0x0
        inputTracker = {mouseDown = false, mouseCaptured = false}
        waitOnExit = false