-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
linux/SDL: fails to run on Wayland (Vulkan backend) #16163
Comments
What this means is that PPSSPP has crashed on startup trying to init your graphics drivers for both OpenGL and Vulkan. So other apps that use OpenGL, Vulkan, or GLES work? Is it compiled against the right target (USING_FBDEV, Wayland, etc.)? -[Unknown] |
well, the deal is, that I'm using gnome based on Wayland. After switching to Xorg version, it started working. How to compile PPSSPP for wayland? |
I think you need -[Unknown] |
I wonder if we could make it auto-detect with both code paths always on, so you could use the same binary. |
Ok, clear we need to do some work on wayland support.. |
yah, it'd be nice since some linux distros are using it by default (e.g. Fedora uses gnome on wayland. It is possible to switch to Xorg but some features doesn't work) I'm trying to find what's going wrong. output from
|
hmm, now it doesn't behave like in #16163 (comment) It seems to crash like at the beginning 😄 here is the log25:20:124 Core/Config.cpp:649 I[G3D]: Longest display side: 1920 pixels. Choosing scale 2
25:20:125 Core/Config.cpp:1932 E[LOADER]: Failed to read /home/mszeptuch/.config/ppsspp/PSP/SYSTEM/controls.ini. Setting controller config to default.
VulkanMayBeAvailable: Device allowed ('SDL:Linux')
VulkanMayBeAvailable: Library loaded ('libvulkan.so.1')
VulkanMayBeAvailable: Enumerating instance extensions
VulkanMayBeAvailable: Instance extension count: 19
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_surface_protected_capabilities (00000001)
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: Calling vkCreateInstance
VulkanMayBeAvailable: Vulkan test instance created successfully.
VulkanMayBeAvailable: Ineligible device found and ignored: 'llvmpipe (LLVM 14.0.0, 256 bits)'
VulkanMayBeAvailable: Found working Vulkan API!
VulkanMayBeAvailable: Destroying instance
DEBUG: Vulkan might be available.
Info: We compiled against SDL version 2.24.0 and we are linking against SDL version 2.24.0. :)
ThreadManager::Init(compute threads: 8, all: 16)
Pixels: 960 x 544
Virtual pixels: 960 x 544
Failed to initialize glew!
GL init error ''
loading control pad mappings from gamecontrollerdb.txt: SUCCESS!
Segmentation fault (core dumped) |
why does it say "Vulkan may be available" all the time but it decides to use SDL finally (even I build with |
SDL is used for Vulkan and for OpenGL. On Linux, we currently default to OpenGL, but when OpenGL is marked as failed (i.e. you tried to use OpenGL, and it crashed during startup), it will try Vulkan. You can try editing ~/.config/ppsspp/PSP/SYSTEM/ppsspp.ini and change -[Unknown] |
Same error on flatpak ppsspp. |
Does #16219 fix this, or is that just one of more problems? -[Unknown] |
@unknownbrackets |
I'd like to try to fix it, so I'm trying to switch my Ubuntu 22.4 Linux laptop to Wayland. I'm following the instructions here: https://linuxconfig.org/how-to-enable-disable-wayland-on-ubuntu-22-04-desktop But even after editing /etc/gdm3/custom.conf , that gear icon just won't show up on the login screen, so I can't choose Wayland. Any ideas? |
No idea, in fedora it is there by default... |
Also, note that you cannot be logged in when you want to switch desktop |
@gucio321 |
The Qt issue above almost looks like it gave us a backbuffer with alpha and is compositing it. We used to force alpha to 1 in the UI shaders but maybe don't anymore since we use Draw elsewhere now? -[Unknown] |
Yes, i was using vulkan... Let me check again |
okey, for me, the SDL version under wayland still crashes. I'm using Vulkan backend now. I've also compiled with logVulkanMayBeAvailable: Device allowed ('SDL:Linux')
VulkanMayBeAvailable: Library loaded ('libvulkan.so')
VulkanMayBeAvailable: Enumerating instance extensions
VulkanMayBeAvailable: Instance extension count: 19
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_surface_protected_capabilities (00000001)
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: Calling vkCreateInstance
VulkanMayBeAvailable: Vulkan test instance created successfully.
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
VulkanMayBeAvailable: Ineligible device found and ignored: 'llvmpipe (LLVM 14.0.0, 256 bits)'
VulkanMayBeAvailable: Found working Vulkan API!
VulkanMayBeAvailable: Destroying instance
DEBUG: Vulkan might be available.
Info: We compiled against SDL version 2.24.0 and we are linking against SDL version 2.24.0. :)
ThreadManager::Init(compute threads: 10, all: 20)
Registered VFS for prefix : /usr/local/share/ppsspp/assets
Registered VFS for prefix : /home/mszeptuch/git/ppsspp/build/assets
Registered VFS for prefix : /home/mszeptuch/git/ppsspp/build
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/mszeptuch
33:30:745 Core/Config.cpp:649 I[G3D]: Longest display side: 1920 pixels. Choosing scale 2
33:30:752 Core/Config.cpp:1441 I[LOADER]: Loading controller config: /home/mszeptuch/.config/ppsspp/PSP/SYSTEM/controls.ini
33:30:752 Core/Config.cpp:1484 I[LOADER]: Config loaded: '/home/mszeptuch/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
33:30:753 Core/Config.cpp:1721 I[SYSTEM]: CleanRecent took 0.00
33:30:754 UI/NativeApp.cpp:821 D[SYSTEM]: ScreenManager!
33:30:754 UI/NativeApp.cpp:383 N[LOADER]: Not checking for failed graphics backends in debug mode
Pixels: 960 x 544
Virtual pixels: 960 x 544
33:30:774 Vulkan/VulkanLoader.cpp:284 I[G3D]: VulkanLoad: Library loaded ('libvulkan.so')
33:30:774 Vulkan/VulkanLoader.cpp:514 I[G3D]: VulkanLoad: Base functions loaded.
33:30:782 Vulkan/VulkanContext.cpp:144 I[G3D]: Vulkan debug_utils validation enabled.
33:30:782 Vulkan/VulkanContext.cpp:201 W[G3D]: Validation on but instance layer not available - dropping layers
33:30:784 Vulkan/VulkanLoader.cpp:585 I[G3D]: Vulkan instance functions loaded.
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
33:30:785 Vulkan/VulkanContext.cpp:765 I[G3D]: Debug callback registered with vkCreateDebugUtilsMessengerEXT.
33:30:785 Vulkan/VulkanContext.cpp:533 I[G3D]: Chose physical device 0: 0x2dec550
33:30:785 Vulkan/VulkanContext.cpp:573 I[G3D]: Memory Types (1):
33:30:785 Vulkan/VulkanContext.cpp:578 I[G3D]: 0: Heap 0; Flags: DEVICE_LOCAL HOST_VISIBLE HOST_CACHED HOST_COHERENT
33:30:787 Vulkan/VulkanLoader.cpp:592 I[G3D]: Vulkan device functions loaded.
33:30:787 Vulkan/VulkanLoader.cpp:609 I[G3D]: Missing (device): vkGetDeviceBufferMemoryRequirements
33:30:787 Vulkan/VulkanLoader.cpp:612 I[G3D]: Missing (device): vkGetDeviceImageMemoryRequirements
33:30:787 Vulkan/VulkanContext.cpp:690 I[G3D]: Vulkan Device created
Vulkan subsystem 6 not supported |
That means PPSSPPSDL was compiled without -DVK_USE_PLATFORM_WAYLAND_KHR, which either means -[Unknown] |
info: after installing new logVulkanMayBeAvailable: Device allowed ('SDL:Linux')
VulkanMayBeAvailable: Library loaded ('libvulkan.so')
VulkanMayBeAvailable: Enumerating instance extensions
VulkanMayBeAvailable: Instance extension count: 19
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_surface_protected_capabilities (00000001)
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: Calling vkCreateInstance
VulkanMayBeAvailable: Vulkan test instance created successfully.
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
VulkanMayBeAvailable: Ineligible device found and ignored: 'llvmpipe (LLVM 14.0.0, 256 bits)'
VulkanMayBeAvailable: Found working Vulkan API!
VulkanMayBeAvailable: Destroying instance
DEBUG: Vulkan might be available.
Info: We compiled against SDL version 2.24.0 and we are linking against SDL version 2.24.0. :)
ThreadManager::Init(compute threads: 10, all: 20)
Registered VFS for prefix : /usr/local/share/ppsspp/assets
Registered VFS for prefix : /home/mszeptuch/git/ppsspp/build/assets
Registered VFS for prefix : /home/mszeptuch/git/ppsspp/build
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/mszeptuch
37:41:598 Core/Config.cpp:649 I[G3D]: Longest display side: 1920 pixels. Choosing scale 2
37:41:605 Core/Config.cpp:1441 I[LOADER]: Loading controller config: /home/mszeptuch/.config/ppsspp/PSP/SYSTEM/controls.ini
37:41:605 Core/Config.cpp:1484 I[LOADER]: Config loaded: '/home/mszeptuch/.config/ppsspp/PSP/SYSTEM/ppsspp.ini'
37:41:605 Core/Config.cpp:1721 I[SYSTEM]: CleanRecent took 0.00
37:41:607 UI/NativeApp.cpp:821 D[SYSTEM]: ScreenManager!
37:41:607 UI/NativeApp.cpp:383 N[LOADER]: Not checking for failed graphics backends in debug mode
Pixels: 960 x 544
Virtual pixels: 960 x 544
37:41:629 Vulkan/VulkanLoader.cpp:284 I[G3D]: VulkanLoad: Library loaded ('libvulkan.so')
37:41:629 Vulkan/VulkanLoader.cpp:514 I[G3D]: VulkanLoad: Base functions loaded.
37:41:636 Vulkan/VulkanContext.cpp:144 I[G3D]: Vulkan debug_utils validation enabled.
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
37:41:644 Vulkan/VulkanLoader.cpp:585 I[G3D]: Vulkan instance functions loaded.
37:41:645 Vulkan/VulkanContext.cpp:765 I[G3D]: Debug callback registered with vkCreateDebugUtilsMessengerEXT.
37:41:645 Vulkan/VulkanContext.cpp:533 I[G3D]: Chose physical device 0: 0x41e2470
37:41:645 Vulkan/VulkanContext.cpp:573 I[G3D]: Memory Types (1):
37:41:645 Vulkan/VulkanContext.cpp:578 I[G3D]: 0: Heap 0; Flags: DEVICE_LOCAL HOST_VISIBLE HOST_CACHED HOST_COHERENT
37:41:647 Vulkan/VulkanLoader.cpp:592 I[G3D]: Vulkan device functions loaded.
37:41:647 Vulkan/VulkanLoader.cpp:609 I[G3D]: Missing (device): vkGetDeviceBufferMemoryRequirements
37:41:647 Vulkan/VulkanLoader.cpp:612 I[G3D]: Missing (device): vkGetDeviceImageMemoryRequirements
37:41:647 Vulkan/VulkanContext.cpp:690 I[G3D]: Vulkan Device created
Vulkan subsystem 6 not supported |
ok, will check it |
Yeah, this should be easier. I don't really know why Wayland is off by default. -[Unknown] |
yah, I changed it this way: diff --git a/b.sh b/b.sh
index b68e93e2c..aeb8fae4d 100755
--- a/b.sh
+++ b/b.sh
@@ -96,6 +96,6 @@ set -e
mkdir -p ${BUILD_DIR}
pushd ${BUILD_DIR}
-cmake $CMAKE_ARGS ..
+cmake $CMAKE_ARGS -DUSE_WAYLAND_WSI=ON ..
make -j$CORES_COUNT $MAKE_OPT
popd but it is not commitable imo, someone needs to change it more proffesional 😄 |
I kinda feel like the find_package is enough, it should just enable Wayland whenever you have the packages for it. But I don't use Wayland, so this is just armchair opinioning. -[Unknown] |
Sadly, I'm not familiar with cmake at all... I suppose, I see the valid place to do this, but... How to set this variable to ON in CMakeList? # add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
if(USE_WAYLAND_WSI)
find_package(Wayland)
if(NOT WAYLAND_FOUND)
message(STATUS "Could not find Wayland libraries, disabling Wayland WSI
else()
include_directories(${WAYLAND_INCLUDE_DIR})
add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR)
add_definitions(-DUSE_WAYLAND_WSI=ON)
endif() but it doesn't work 😄 |
wait, I see the problemm, |
ok, opened a PR |
ok, gonna open a separated issues for Wayland+OPENGL and Wayland+QT (thay are both different cases and both aren't exactly a problem discussed here) |
I don't know if I should make a new issue or just commenting here, but, I found some things. I tested PPSSPP on my Arch Linux KDE system(with AMD graphics card) with Wayland with -DUSE_WAYLAND_WSI and it worked very well. I don't think this issue is specific to Nvidia, it seems to be happening on other GPUs as well, like the Rasberry Pi 4 GPU : Black screen at launch with -DUSE_WAYLAND_WSI. I think the Wayland experience with PPSSPP differs from GPU to GPU.. (The Vulkan backend was used everytime) |
@yann-boyer just wondering: what happens |
@gucio321 Yes I also tested on OpenGL backend and everything worked fine, but the Vulkan one is broken with Wayland and some GPUs. |
Just commenting to confirm that for me it also slowly turns white. It kinda looks like theres no background layer/buffer (transparent) and then it's doing some calculation (imagine multiplicating alpha) which makes the window/foreground turn white eventually. Hope that description makes sense. |
Game or games this happens in
<doesn't matter>
What area of the game / PPSSPP
PPSSPP doesn't start on my linux machine.
I'm getting backend error (see logs)
A few days ago, I succeeded compiling the app on another linux machine.
What should happen
app should start
Logs
logs
44:01:524 Core/Config.cpp:649 I[G3D]: Longest display side: 1920 pixels. Choosing scale 2
44:01:536 UI/NativeApp.cpp:416 E[LOADER]: Failed graphics backends: OPENGL,VULKAN,ALL
44:01:536 Core/Config.cpp:751 E[LOADER]: Graphics backend failed for 0, trying another
44:01:536 Core/Config.cpp:776 E[LOADER]: All graphics backends failed
VulkanMayBeAvailable: Device allowed ('SDL:Linux')
VulkanMayBeAvailable: Library loaded ('libvulkan.so.1')
VulkanMayBeAvailable: Enumerating instance extensions
VulkanMayBeAvailable: Instance extension count: 19
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_surface_protected_capabilities (00000001)
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: Calling vkCreateInstance
VulkanMayBeAvailable: Vulkan test instance created successfully.
VulkanMayBeAvailable: Ineligible device found and ignored: 'llvmpipe (LLVM 14.0.0, 256 bits)'
VulkanMayBeAvailable: Found working Vulkan API!
VulkanMayBeAvailable: Destroying instance
DEBUG: Vulkan might be available.
Info: We compiled against SDL version 2.24.0 and we are linking against SDL version 2.24.0. :)
ThreadManager::Init(compute threads: 8, all: 16)
Pixels: 960 x 544
Virtual pixels: 960 x 544
Failed to initialize glew!
GL init error ''
loading control pad mappings from gamecontrollerdb.txt: SUCCESS!
Segmentation fault (core dumped)
Platform
Linux / BSD
Mobile phone model or graphics card
Fedora 36; AMD ATI Radeon Vega Series / Radeon Vega Mobile Series
PPSSPP version affected
64c5b5e
Last working version
No response
Graphics backend (3D API)
OpenGL / GLES
Checklist
The text was updated successfully, but these errors were encountered: