Desktop Player Qt 6 Test Builds

Forum Preview Post

We would like users to test out builds of Desktop and HTPC which use Qt 6 on Mac/Linux and Qt 5 on Windows:

Edit: Builds removed as this change is rolled out into release versions of the apps.

Those of you who have been monitoring the forums know that Qt 6 is necessary to make builds that run on M1/2 processors without emulation. While the above builds are not native for M1/2, they are the next step towards ones that are. We’ve done some internal testing but we would like to expand the testing of these versions to the community to see if there are issues we didn’t catch.

Known Issues

In Plex for Mac/Linux, downloads are inaccessible. We already have this fixed internally but it has to wait on some pieces before we can put this fix in a build for you.

Why not Qt 6.4?

We originally talked about updating to Qt 6.4 but whenever HTPC is used, the UI couldn’t render transparency. This means that video playback is not visible because the UI remains. This issue is oddly not present in the non-HTPC version of the app.
This issue is present in every version of Qt from 6.3 on to even the 6.5 beta.

Why is Windows still on Qt 5?

This one requires some explanation. First, Chromium uses OpenGL across each platform for its GPU accelerated drawing. However, those who have messed with OpenGL know that its support on Windows isn’t the greatest and is also not consistent across different GPU drivers. To work around this, Google created the ANGLE library to translate OpenGL ES to Direct3D.

Qt 5 used ANGLE for the same reasons as Chromium since all of Qt 5’s drawing was OpenGL based. Qt 6 changed that by creating a hardware accelerated drawing abstraction to support OpenGL, Metal, Direct3D, and Vulkan (and possibly some others I’m forgetting). Along with this change, ANGLE support was removed from Qt 6.

If the QtWebEngine (Chromium) is to be used in the app, it requires a function call that performs initialization early in the process. One of the steps in this function is to switch the rendering to be OpenGL-only. This means on Windows this is using the native OpenGL (WGL) which suffers from some of the aforementioned issues. These present in parts of the UI flashing to white, animation frames seemingly displayed out of order, persistent white boxes, and other artifacts in the UI (video was unaffected). These artifacts appear to be more present when using an Intel GPU rather than NVIDIA or AMD but still present to some degree in all 3.

We tried many variations of the app including down to only creating the UI (no video playback capability) and the bare minimum to display the Web interface and the issue persists. It also persists to varying degrees in every single version of Qt 6 that we could test.

So, we elected to go through the trouble to make our code capable of working in both Qt 5 and Qt 6 and so we could use Qt 6 on Mac/Linux but remain on Qt 5 on Windows.

2 Likes

Feel free to reply to this topic with your experiences with these builds. Please only comment on differences between these builds and the normal releases.

I updated the OP to a new build based on the Plex for Windows/Mac/Linux 1.67.1 released today.

Will spend more time on this later but at first sight the Downloads are borked on my device.

Mac M2 Max on Ventura 13.2.1

I have no Downloads loaded locally on the machine. Previously on stable build it just showed Downloads without the ! triangle tooltip warning symbol. On the new build I get a never-ending loading symbol while on the stable build I get the regular “You have no items downloaded”.

CleanShot 2023-03-31 at 22.39.07@2x

This is mentioned in the first post.

2 Likes

As far as the windows build goes it seems nothing has changed - I have not noticed anything different. Which is a good thing I guess?

Apologies, my fault for trying to reply at night before bed :sweat_smile:

After trial and error I’ve not noticed any differences apart from the Downloads.

In fact these builds seem to run slightly snappier on MacOS.

When I load a video from the home page there are 3 stages from the moment I click on the media to play it:

  1. The loading page with the little yellow loading icon with a fainted background.
  2. A page where everything is grey that usually takes 1 second or 2 to get past before loading the video.
  3. The actual video playing.

Stage 2 feels about 50% faster (which isn’t a lot to as it’s 1 second to half a second). But just something I’ve noticed this on several videos to nearly all videos.

I’m unsure if it’s truly faster or if it’s just “not loading a bunch of things”, but I haven’t noticed any media issues so I can only assume a small but fruitful optimization was done.

That being said I did notice the new Qt builds taking significant more ressources.

(Build given on top, my usual plex on the bottom)

The exact same actions and media playbacks were performed on both versions downright to the seconds played of X TV show.

Will keep an eye on ressources

Yep.

TBH the performance on an M1/2 chip is not something we are concerned about in these builds since they are a stepping stone toward making native ARM builds on MacOS which will perform much better.

The QtWebEngineProcess is really (a slightly modified) Chromium so this appears to be a side effect of a newer Chromium and its bloat.

2 Likes

Wouldn’t it be better to just make the app an electron app at that point and cut Qt off?

I hope you realize that these apps have capabilities far beyond that of an Electron app. Most notably is the playback stack MPV and not the one you get in a browser. TBH, if these were made into Electron apps, there’s really no longer any point in their existence at all.

That being said, there are alternatives to our use of Qt here and they are under consideration. It’s just that Electron isn’t really a viable alternative.

4 Likes

Installed 1.67.1.3668-66b4861c on my MacBook Air M2 running 13.3.1 (22E261).

I’ve tested with several files and no issues to report so far. If you’d like anything specific tested, happy to help (in the spirit of helping to move us forward to a native Apple Silicon Plex Desktop at some point).

Do the new builds, especially for MacOS, have true HDR playback? The current players doesn’t show HDR in the same way that IINA does for example

1 Like

So is the plan to remain on qt5 forever on Windows? Seems like there would be an expiration date with that.

yeah, would be nice if the devs still experiment with qt6 on Windows. I mean it works fine at the moment but nobody knows how long it will run fine with qt5…

QtWebEngine in Qt6 on Windows still suffers from the same problem I mentioned in the first post. It really isn’t a great experience and for those with Intel GPUs it’s outright terrible (it’s hard to get a single page without a large artifact visible).

The limiting factor for how long Qt 5 can be used is entirely dependent on the minimum version of Chromium that our web and web-tv apps require. Currently the version isn’t that old so this is likely not to be an issue any time soon.

1 Like

Oh okay, well that’s sad, and this affects every version of qt6? Even the newest 6.5?

The Qt5.15.3 version used features chromium version 87.0.4280.144, right? So even updating to the latest 5.15.x version does not feature any newer chromium build… (QtWebEngine/ChromiumVersions - Qt Wiki) So I guess there are also no plans to update qt5 on Windows to the absolute latest version? (Qt 5.15 Release - Qt Wiki)

Your findings appear correct. Qt versions above 6.2 have issues with complete lack of transparency in addition to the artifacts.