hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
10.98k stars 2.14k forks source link

linux/Qt: broken rendering on Wayland #16254

Open gucio321 opened 1 year ago

gucio321 commented 1 year ago

Game or games this happens in

N/A

What area of the game / PPSSPP

Hi there, the app compiled against Qt and run on wayland looks this way: image

(it is all white in fact, but screenshot system made it black. On startup, I can see the startup menu but it turns white (It seems like alpha gets from 255 to 0 instead from 0 to 255)

reffer #16163

What should happen

everything should work like on X11

Logs

generally nothing special

logs ```console QSocketNotifier: Can only be used with threads started with QThread 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 58:39:188 Core/Config.cpp:1441 I[LOADER]: Loading controller config: /home/mszeptuch/.config/ppsspp/PSP/SYSTEM/controls.ini 58:39:188 Core/Config.cpp:1484 I[LOADER]: Config loaded: '/home/mszeptuch/.config/ppsspp/PSP/SYSTEM/ppsspp.ini' 58:39:188 Core/Config.cpp:1721 I[SYSTEM]: CleanRecent took 0.00 58:39:194 UI/NativeApp.cpp:821 D[SYSTEM]: ScreenManager! QObject::connect: No such slot MainWindow::frameSkippinGroup_triggered(QAction *) in /home/mszeptuch/git/ppsspp/Qt/mainwindow.cpp:620 58:39:222 Qt/QtMain.cpp:597 I[SYSTEM]: Initializing GL graphics context 58:39:222 OpenGL/GLFeatures.cpp:195 I[G3D]: GPU Vendor : Intel ; renderer: Mesa Intel(R) Graphics (ADL-S GT1) version str: 4.6 (Core Profile) Mesa 22.1.7 ; GLSL version str: 4.60 58:39:222 OpenGL/GLFeatures.cpp:108 D[G3D]: Checking for GL driver bugs... vendor=3 model='Mesa Intel(R) Graphics (ADL-S GT1)' 58:39:222 OpenGL/thin3d_gl.cpp:213 D[G3D]: Shader module created (0x3e9d510) 58:39:222 OpenGL/thin3d_gl.cpp:213 D[G3D]: Shader module created (0x3e9d5e0) 58:39:222 OpenGL/thin3d_gl.cpp:213 D[G3D]: Shader module created (0x3e9d6d0) 58:39:222 OpenGL/thin3d_gl.cpp:213 D[G3D]: Shader module created (0x3ec4a20) 58:39:222 OpenGL/thin3d_gl.cpp:213 D[G3D]: Shader module created (0x3ec4b10) 58:39:222 Qt/QtMain.cpp:599 I[SYSTEM]: Using thread, starting emu thread 58:39:222 OpenGL/GLRenderManager.cpp:130 I[G3D]: Updating inflight frames to 3 58:39:222 Core/Core.cpp:202 I[G3D]: pixel_res: 200x71. Calling NativeResized() 58:39:222 UI/NativeApp.cpp:872 I[SYSTEM]: NativeInitGraphics 58:39:222 UI/NativeApp.cpp:1449 I[G3D]: NativeResized - setting flag 58:39:223 UI/NativeApp.cpp:930 I[SYSTEM]: NativeInitGraphics completed 58:39:224 UI/DiscordIntegration.cpp:60 I[SYSTEM]: Discord connection initialized 58:39:224 Core/Core.cpp:202 I[G3D]: pixel_res: 960x544. Calling NativeResized() 58:39:224 UI/NativeApp.cpp:1449 I[G3D]: NativeResized - setting flag 58:39:224 UI/NativeApp.cpp:383 N[LOADER]: Not checking for failed graphics backends in debug mode 58:39:260 UI/NativeApp.cpp:1137 I[G3D]: Resized flag set - recalculating bounds 58:39:260 UI/Screen.cpp:144 I[SYSTEM]: ScreenManager::resized(dp: 969x549) loading control pad mappings from gamecontrollerdb.txt: SUCCESS! Control pad device 0 not supported by SDL game controller database, attempting to create default mapping... Added default mapping ok found control pad: LiteOn Lenovo Calliope USB Keyboard Consumer Control, loading mapping: SUCCESS, mapping is: 03000000ef1700008c60000011010000,LiteOn Lenovo Calliope USB Keyboard Consumer Control,x:b3,a:b0,b:b1,y:b2,back:b8,guide:b10,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:a5,leftstick:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,platform:Linux pad 1 has been assigned to control pad: LiteOn Lenovo Calliope USB Keyboard Consumer Control 58:39:335 OpenGL/GLRenderManager.cpp:233 I[G3D]: Running first frame (0) 58:39:496 Core/Config.cpp:1721 I[SYSTEM]: CleanRecent took 0.00 58:39:502 Core/Config.cpp:1568 I[LOADER]: Config saved (clearFailedGPUBackends): '/home/mszeptuch/.config/ppsspp/PSP/SYSTEM/ppsspp.ini' 58:39:502 Core/Config.cpp:1581 I[LOADER]: Controller config saved: /home/mszeptuch/.config/ppsspp/PSP/SYSTEM/controls.ini qt.qpa.wayland: Creating a fake screen in order for Qt not to crash 02:53:596 Qt/QtMain.cpp:393 I[SYSTEM]: MainUI::Destructor 02:53:596 Qt/QtMain.cpp:395 I[SYSTEM]: EmuThreadStop 02:53:599 UI/NativeApp.cpp:975 I[SYSTEM]: NativeShutdownGraphics 02:53:599 UI/NativeApp.cpp:1020 I[SYSTEM]: NativeShutdownGraphics done 02:53:599 OpenGL/GLRenderManager.cpp:266 I[G3D]: GL submission thread paused. Frame=2 02:53:620 Qt/QtMain.cpp:772 I[SYSTEM]: Left mainInternal here. 02:53:671 Core/Config.cpp:1721 I[SYSTEM]: CleanRecent took 0.00 02:53:682 Core/Config.cpp:1568 I[LOADER]: Config saved (NativeShutdown): '/home/mszeptuch/.config/ppsspp/PSP/SYSTEM/ppsspp.ini' 02:53:683 Core/Config.cpp:1581 I[LOADER]: Controller config saved: /home/mszeptuch/.config/ppsspp/PSP/SYSTEM/controls.ini 02:53:683 UI/NativeApp.cpp:1475 I[SYSTEM]: NativeShutdown called 02:53:683 UI/NativeApp.cpp:1479 I[SYSTEM]: Missing translation [DesktopUI]: Font 02:53:683 UI/NativeApp.cpp:1479 I[SYSTEM]: Missing translation [Graphics]: OpenGL, debug build ```

Platform

Linux / BSD

Mobile phone model or graphics card

Fedora Workstation 36

PPSSPP version affected

7db6467af953a92989d12194bb815ba68337b92a

Last working version

No response

Graphics backend (3D API)

OpenGL / GLES

Checklist

anr2me commented 1 year ago

Qt version aren't being maintained for a long time i think. Also, if you're using Debug version from recent commits it have some GPU-issue, even on Windows version, like crashes (Vulkan/D3D11), and black screen or messed up textures on PPSSPP UI (OpenGL/D3D9).

Does the same issue also happened on Release version?

unknownbrackets commented 1 year ago

There are validation handlers installed in debug mode that were tripping recently related to some depth and input attachment changes. I don't think it's related. I have not seen any messed up textures in the UI.

If you call PPSSPPQt with a game as an argument, does the game run? On most platforms, we get a backbuffer where we just don't care about alpha. I'm wondering if Qt is giving us a backbuffer where alpha is used by the compositor to blend against windows beneath it. We might not be careful to produce 100% alpha because other platforms don't care.

-[Unknown]

gucio321 commented 1 year ago

If you call PPSSPPQt with a game as an argument, does the game run?

I haven't tried but when I run the game clicking on it, the problemm still exists

hch12907 commented 1 year ago

It's pretty bad. On a HiDPI screen, the PPSSPP UI occupies only a quarter of the window, and the rendering is all kinds of messed up there (screenshot doesn't show it though).

image

jiang131072 commented 5 months ago

There is a temporary fix for the problem in KDE. You may right click the title bar after launching to configure settings for specific programs (here PPSSPPQt). Add a attribute "active opacity" of 99%. Then put a pure black background window behind PPSSPP.

image

devnoot commented 3 months ago

Is PPSSPPQt not supported anymore? I'm experiencing the same issues on Wayland. If it's not supported, there should be a deprecation notice or something during the install process.

hrydgard commented 3 months ago

Since when is there an install process?

Qt is indeed unmaintained except for keeping it building.

devnoot commented 3 months ago

I meant the build process

hrydgard commented 3 months ago

Right, I should update the wiki page I suppose. Or maybe someone will one day step up to maintain it..