rpcs3 icon indicating copy to clipboard operation
rpcs3 copied to clipboard

Qt6 port

Open Megamouse opened this issue 2 years ago • 17 comments

Not concidered for merge. Missing at least one feature (windows taskbar stuff).

Just testing CI etc.

TODO:

  • [x] Test music handler
  • [x] Test play sound
  • [ ] Add taskbar stuff when available

Megamouse avatar Aug 06 '22 10:08 Megamouse

Apply https://github.com/Megamouse/rpcs3/pull/10 to fix FreeBSD CI

jbeich avatar Aug 23 '22 21:08 jbeich

Why isn't this considered for merge?

Margen67 avatar Nov 02 '22 13:11 Margen67

Will break compatibility with older Windows systems and might break AppImages for some distros at first. Some heads up is needed before the merge to adjust minimum requirements if there are no other solutions. We're dropping bionic next April as it reaches EOL and switching the AppImage base to focal so that might help with compatibility on the Linux side.

AniLeo avatar Nov 02 '22 16:11 AniLeo

Will break compatibility with older Windows systems

What about supporting both Qt5 and Qt6?

Margen67 avatar Nov 03 '22 07:11 Margen67

What about qt6 is so important that it'd justify the maintenance burden and added complexity? Qt5 seems to work just fine right now, I don't see why we would need to rush with this

MSuih avatar Nov 03 '22 07:11 MSuih

What about qt6 is so important that it'd justify the maintenance burden and added complexity? Qt5 seems to work just fine right now, I don't see why we would need to rush with this

That's reasonable as long as the main reason isn't to keep support for irrelevant OSes like Windows 7/8(.1): https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam?platform=pc

Margen67 avatar Nov 03 '22 07:11 Margen67

I'll show ya about "irrelevant" OS! Somebody hold my beer for a momemnt...

Romano44 avatar Nov 21 '22 17:11 Romano44

Qt6 port would be great appreciated because the last QT 5 LTS(Long Term Support) version is supported until May 2023, after that QT 5 will be almost completely dead and deprecated...

ghost avatar Nov 22 '22 10:11 ghost

I think this has to wait before we move away from Ubuntu 18.04 LTS to generate AppImages regardless

AniLeo avatar Nov 22 '22 11:11 AniLeo

Many projects still use old GTK2 and they work fine. QT is really only for GUI(+sound) and it just works. No need for "support" regarding that? Unless its sound backend become issue which I could then understand, why switch to QT6 and cut older Windows base(however small), only due to GUI backend? Yuzu at least had a reason, they changed memory handling, Ryujinx too yet that one actually still works(it automatically switch to older, slower memory handling). Please, if you ever make RPCS3 incompatible with Windows 7 one day, at least make it for a good reason, like an actual desirable core/memory code change(or if sound become an issue), not just for a GUI backend switch for gods sake!

Romano44 avatar Nov 22 '22 11:11 Romano44

Many projects still use old GTK2 and they work fine. QT is really only for GUI(+sound) and it just works. No need for "support" regarding that? Unless its sound backend become issue which I could then understand, why switch to QT6 and cut older Windows base(however small), only due to GUI backend? Yuzu at least had a reason, they changed memory handling, Ryujinx too yet that one actually still works(it automatically switch to older, slower memory handling). Please, if you ever make RPCS3 incompatible with Windows 7 one day, at least make it for a good reason, like an actual desirable core/memory code change(or if sound become an issue), not just for a GUI backend switch for gods sake!

On Windows you can run an outdated Qt version, it's okay, but on Linux, no you can't. On Linux a library is usually get from a package on a repository with a package manager, if the library isn't in your repo, good luck to use and/or compile stuff that use this lib, Qt 5.15 LTS(the last Qt 5 version) will be deprecated in May 2023, so, soon after this deprecation(especially on rolling release distro) all distro maintainers will start to remove Qt 5 from their repositories because it's obsolete/deprecated.

And I want to be able to compile & run the latest git version of RPCS3, even after May/June 2023.

I know that Linux is a minority of people, but if RPCS3 support Linux they should try to not break itself on Linux, that's it.

ghost avatar Nov 22 '22 18:11 ghost

@yann-boyer If an application is relevant(and RPCS3 is), they will always ship it, along with required dependencies. You still find python 2, GTK 2, SDL 1 and so many others in repos because there are apps that are considered important to have that use them. So I wouldn't worry about that. If they can keep old GTK, I don't see why they couldn't keep old QT.

Romano44 avatar Nov 22 '22 22:11 Romano44

May need a rebase after 681a6ef73ca1:

rpcs3/rpcs3qt/gs_frame.cpp:358:5: error: use of undeclared identifier 'QSound'
                                QSound::play(qstr(sound_path));
                                ^

jbeich avatar Dec 10 '22 08:12 jbeich

Was able to build and package AppImage using gcc-11 and clang-14 with the latest commit https://github.com/RPCS3/rpcs3/pull/12471/commits/9a0490114383403f00f53dabf0373b75f132685e on Ubuntu-18.04

Ubuntu-18.04 gcc-11

Ubuntu-18.04 clang-14

Qt 6.5.0 was built from source and packaged to speedup build time.

Edit:

MacOS clang-14 using Qt 6.4.2

qurious-pixel avatar Feb 04 '23 15:02 qurious-pixel

$QT_VER_MAIN and $QT_VER should be global variables or passed to linux and mac tasks in .cirrus.yml

qurious-pixel avatar Feb 22 '23 15:02 qurious-pixel

$QT_VER_MAIN and $QT_VER should be global variables or passed to linux and mac tasks in .cirrus.yml

Thanks. that seems to work.

Megamouse avatar Feb 22 '23 22:02 Megamouse

This is just a tangentially relevant comment, but thanks to both Chrome and Steam announcing the end of support for Windows 7 and 8.1, the negative effects of dropping Qt5 (and Windows 7+8.1) should be largely mitigated now. Screenshot_20230408-133405~2

Valtekken avatar Apr 08 '23 11:04 Valtekken

This PR fixes a long-standing issue I have had (which only seems to affect me...) That has caused me grief for a year and a half.

In QT5 I intermittently got a major scaling bug. Reinstalling/DDUing drivers, reinstalling Windows 10 22H2, Updating to Windows 11, manually setting QT Config files to work with DPI Scaling, using a fresh RPCS3 Install/Folder with no configs, going back to RPCS3 builds from years ago that used to work fine for me... you name it, I tried it. The issue was clearly somewhere on my system, or with some other program I used causing a conflict with QT causing it to break. Most annoyingly, the issue was intermittent and would usually fix itself after a reboot. I tried uninstalling all my other applications that use QT. But nothing fixed it. image

Whenever I was affected by this bug, it would remain until I rebooted, closing and re-opening RPCS3 or changing DPI Scaling to 100% then back to 200% etc wouldn't help. And that's why this screenshot of me showing RPCS3 on QT5 (Left) and RPCS3 on QT6 (Right) running at the same time confirms that the issue is resolved: image You have no idea how happy this makes me.

Asinin3 avatar Jul 22 '23 02:07 Asinin3

Is this PR ready to be compiled and tested on Linux? I'd like to try it out on Fedora 38 to see if Wayland support is in better shape compared to Qt5 where I always have to specify QT_QPA_PLATFORM=xcb in order to not have it crashing on me.

MastaG avatar Jul 27 '23 21:07 MastaG

Testing is always welcome

Megamouse avatar Jul 27 '23 21:07 Megamouse

Alright from my initial testing, it seems to behave the same as qt5. The same bugs still exist though. I'm running Fedora 38 (default Genome desktop on wayland) which ships qt6 version 6.5.2. First of all, rpcs3 still segfaults when closing the emulator, just by opening and closing the emulator without running any games. It happens both on QT_QPA_PLATFORM=xcb and wayland. I've reported this one here: https://github.com/RPCS3/rpcs3/issues/13981

Secondly when running QT_QPA_PLATFORM=wayland, the dedicated nvidia GPU cannot be used and will segfault the emulator when starting a game. Since wayland seems to be the default QPA platform on Fedora, I have to explicitly specify QT_QPA_PLATFORM=xcb so I can use the nvidia GPU instead of the intel integrated one for the Vulkan renderer.

MastaG avatar Jul 31 '23 08:07 MastaG

As of this update, RPCS3 only opens on my secondary monitor. If I move the main app window the the main monitor, the dropdown menus open on the edge of the secondary monitor. Reverting to 15417 fixes it, and every build after is broken again.

MilkManEX avatar Aug 10 '23 15:08 MilkManEX

As of this update, RPCS3 only opens on my secondary monitor. If I move the main app window the the main monitor, the dropdown menus open on the edge of the secondary monitor. Reverting to 15417 fixes it, and every build after is broken again.

Create a regression report with all the required information don't comment under already merged commits.

readywer avatar Aug 10 '23 15:08 readywer