Jump to content

Real full-screen mode


mer-curious
 Share

Recommended Posts

Hey Tux! I saw the discussion on Raine's Github page on the inclusion of a real full-screen mode in Raine and I was wondering if I could think of some use-cases for that.

Well, maybe a real full-screen mode could fix the "blank picture" issue which we have in Windows after leaving the current borderless full-screen mode?*

Also, there's a nuissance which happens every time a notification pops up in desktop: it blinks the picture for a brief moment, which interferes in our borderless full-screen game-play. I know it could be worked around by simply closing the application which sends the notification, but perhaps this could be another use-case for a real full-screen mode to help?

I've asked a friend of mine to send me a Telegram message while I was playing in Raine using borderless full-screen to show you how it goes when it happens. I had to use my webcam as a monitoring source for this particular recording because for some reason OBS cannot capture Raine in borderless full-screen (everything is black). Take a look:

https://drive.google.com/file/d/1DhNBa_uQmFKsgwkfK8qcpLjJHNiCJCzW/view?usp=sharing

You'll notice from the monitoring camera that when the message pops up on desktop the screen blinks for a moment, and when it vanishes the picture blinks a second time. For fast-action games such as fighting games and shoot'em ups this could somewhat spoil the game-play experience, especially if you receive more than one message.

But I'm not sure if this is a side-effect of the cheap intel (Skylake+) OpenGL drivers. But maybe the real full-screen could help reduce this blink time?

I also asked my friend to send me a message when I was testing Duckstation with the Direct3D renderer and the blink doesn't happen there. We can hear the notification sound but it doesn't pop up in the screen hopefully. Take a look:

https://drive.google.com/file/d/10PVJzh8cPYYqNbxzOYaMpRXNzuh7ErVn/view?usp=sharing

If you pay attention, by second 21~22 in the video you hear the Telegram notification sound but it doesn't distract the picture.

 

Anyway, perhaps it could be worth it to enable this mode and check whether or not it would help in these use-cases.

 

Thank you for your time and work. 🙂

 

* I've noticed doing this testing that when you leave the borderless full-screen mode through the GUI the blank picture isn't produced, so it seems an issue isolated to the game picture rendering, no? 🤔

Edited by mer-curious
Link to comment
Share on other sites

Tsss... if you have read the thread until the end, it turned out it was just a window manager problem in linux combined with the video card driver, it was fixed in git, but not in any official binary yet (at least for what I could test, this guy didn't reply to say if tests on his side were ok, that's why the issue is still opened).

2ndly as I already told you, I can't reproduce your white screen here on my desktop, it happens only in windows and I had it a long time ago while setting up the 1st versions using sdl2, but I have not seen it since then here. So I believe it's more related to some video driver/video card issue, and anyway since it can be worked around easily and is impossible to reproduce for me for now, there's no point.

For the notifications I had telegram but only in linux, I downloaded the windows one, and in the parameters screen for notifications you can simulate notifications on your screen, that's what I did, raine playing in the background visible, the telegram window on top and the notifications which appear when you move the mouse over their displayed screen. No blinking, no white screen, nothing. Well since you use something to also capture some video, maybe it doesn't help.

Why is everybody thinking this "real fullscreen" is like a super holy solution ? The only reason previously to have this "real" fullscreen was because that was the only way to have double or triple buffered display, it's not the case anymore with sdl2 it works perfectly in a window. So this fullscreen windowed mode gives a few advantage, you can't display a window on top of something using this "real" fullscreen, here you can without any problem which makes things easier for debuging or checking something else. The windowed fullscreen is actually a better solution, especially for lcd screens, the real one tries to change the screen resolution to match the window size, you don't want to do that on a lcd screen, that's why version 0.50 was created, and it was a very long time ago now...

In the end, this is something really easy to test by modifying the source and testing by yourself, too bad you don't compile, you would have seen by yourself it's not the right solution ! Sorry about your driver glitches, but I can't do much about that, as far as I know at least... !

  • Like 1
Link to comment
Share on other sites

After some thinking, after all it's not that hard to make a binary so that you can test that by yourself, and you might be lucky and it might fix some of the issues you have on your side. So here it is.

The toggle to this real fullscreen can be made only from the video options dialog, not from the keyboard shortcut ingame.

Except that the main change is mainly the update for the 7z code, which gave me some trouble to compile the windows version.

Anyway here it is, in 64 bits, exe only. (I tested it quickly in windows 10 here, everything seems fine).

raine64.7z

  • Like 1
Link to comment
Share on other sites

Posted (edited)

Hey Tux! Thank you so much for providing a test version to see how this new full-screen mode could work with the use-cases I've reported before.

But I already have to apologize for bothering you about this feature because I guess you were right after all when you said in the Github discussion that the real full-screen mode wouldn't change a thing.

Well, I went and asked my friend again to send me some Telegram messages to see if the notifications would still intefere in the real full-screen mode, and they do. As for the speed in which the screen blinks, sometimes I notice it is faster now (which is way better to keep playing), and sometimes it is the same as the borderless mode, so it looks like the issue is unresolved unfortunately. I suppose it should be related to the crappy intel Skylake+ OGL drivers. It's a pity they focus so much on D3D in Windows and forget about OGL users...

 

On 4/5/2022 at 11:36 AM, Tux said:

2ndly as I already told you, I can't reproduce your white screen here on my desktop, it happens only in windows and I had it a long time ago while setting up the 1st versions using sdl2, but I have not seen it since then here. So I believe it's more related to some video driver/video card issue, and anyway since it can be worked around easily and is impossible to reproduce for me for now, there's no point.

Sadly I still could reproduce the blank screen leaving the full-screen even with this new real full-screen mode. But it is interesting that you couldn't reproduce it with a discrete Nvidia card, because it does happen with my Nvidia card too, and their OGL drivers are pretty good on Windows, so I guess there's still something to investigate here. Perhaps my drivers were out of date?

I'll see if I can reach my father's PC again (it is where the card is installed) and try Raine there with updated drivers. If this fix the problem, than that was surprisingly Nvidia's fault in the end. I'll let you know when I do it. 👍

 

On 4/5/2022 at 11:36 AM, Tux said:

Why is everybody thinking this "real fullscreen" is like a super holy solution ? The only reason previously to have this "real" fullscreen was because that was the only way to have double or triple buffered display, it's not the case anymore with sdl2 it works perfectly in a window. So this fullscreen windowed mode gives a few advantage, you can't display a window on top of something using this "real" fullscreen, here you can without any problem which makes things easier for debuging or checking something else. The windowed fullscreen is actually a better solution, especially for lcd screens, the real one tries to change the screen resolution to match the window size, you don't want to do that on a lcd screen, that's why version 0.50 was created, and it was a very long time ago now...

Thank you for your reasoning on this matter. I naively thought it would have the same effect as the "exclusive full-screen mode" from D3D which I showed deals better with those notifications in the Duckstation video, but it looks like things are different for OGL and SDL then?

Anyway, thank you so much again for your time and work creating this test version. 👍

 

PS: are you considering leaving this new full-screen option available in Raine for an official release?

Edited by mer-curious
Link to comment
Share on other sites

Sorry for that, but it was to be expected, by the way, it's not a new fullsreen mode, it's actually the old one, the one using a video mode change. Here you don't see any video mode change because it's the same resolution.

You used the "Yes (real)" setting for fullscreen then ? At least you tested for good this time !
There is a last setting I just tested again right now, we tell sdl2 explicitely to use opengl for its part because if not there are crashes happening. I just tested it again, and yes they are still happening, very easy to trigger ! So no change on this side...

I can keep the setting for the unbelievers yeah, it doesn't harm anything to have it. The desktop fullscreen just hides the window decorations, I don't even know if it's borderless, it could simply hide them out of the screen, it's done behind the scene, it's handled like a normal fullscreen mode.

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...
Posted (edited)
On 4/7/2022 at 2:44 AM, mer-curious said:

I'll see if I can reach my father's PC again (it is where the card is installed) and try Raine there with updated drivers. If this fix the problem, than that was surprisingly Nvidia's fault in the end. I'll let you know when I do it. 👍

Hello Tux! I was finally able to test Raine again with an NVIDIA GPU and with updated drivers and unfortunately I can confirm that the "blank-screen after leaving full-screen mode" issue still persists even with the newer drivers. Previously I was using driver version 456.71 (from October 2020) which was quite old, that's why I thought maybe updating them could resolve the issue. But even after installing latest 512.59 (from April 2022) I can still see the blank-screen in Raine. 😔

I can reproduce this bug 100% of the times I test it, so it should be easy for you to test it if you try it on Windows. I've tried it both in Windows 10 (with intel and nvidia drivers) and in Windows 8.1 (with intel HD 4000 graphics).

Anyway, just a quick update to keep my promise on testing this again with updated drivers.

Thank you so much for your time and attention.

Edited by mer-curious
Link to comment
Share on other sites

Posted (edited)

... which means that something is different in your windows ?

3d desktop effects ? Normally they can't be enabled/disabled in win10, so it's quite surprising, but yeah aero effect was known to create problems previously.
For now I don't have any better idea...

In the 1st post you said maybe it would be a good idea to try to enable this mod... which mode ? direct3d ? Well the shaders in raine are opengl only. Direct3d is not bad, but it's not multiplatform at all, and raine is.

Maybe try to describe your 100% method to reproduce your white screen, but if it's just switch from fullscreen to windowed while ingame using the keyboard shortcut it's no use...

Oops something changed, I can now reproduce it reliably, just start from fullscreen, switch to windowed mode while ingame...
I guess I'll have another look at that then... !

... and I seem to have a workaround : a version incompatible with windows xp ! By default when building using mingw32/mingw64 it builds an incompatible binary if you remember, I had to use some kind of trick to get a compatible binary. Well when I use a binary straight from mingw, the problem is impossible to reproduce apparently... ! what a mess... !

Resulting binary is 8Mb of size, too big for the forum, I'll have to create a new entry in the download page...

Ok, new binary in the download page (latest) windows10 binary... it includes all the dlls, and no dirs and no data files, you are supposed to replace the exe and its dlls in the normal version (well you can leave the dlls if you want, it will eat disk space for nothing if they are not overwritten by this they will just be unused). Good luck then ! By the way it's not exactly 0.93.4, it includes the new "real" fullscreen, and the return of the driver info button in the about dialog, for some reason it never made it in the sdl version until now... ! Ah yes and the new 7z code. Only small changes, so no version number change so far. As I already said, most of these dlls are useless, but it's the price to pay to be able to use precompiled binary packages, they include all the options, even those we don't want... !

Edited by Tux
  • Like 1
Link to comment
Share on other sites

4 hours ago, Tux said:

In the 1st post you said maybe it would be a good idea to try to enable this mod... which mode ? direct3d ? Well the shaders in raine are opengl only. Direct3d is not bad, but it's not multiplatform at all, and raine is.

Hey Tux! Thanks for the super fast reply! I guess this "mode" I was referring to in my first post was the real full-screen mode which you were discussing in Raine's Github. But, as we can see, it didn't fix the blank picture issue.

I'm really glad you could reproduce this problem again there, since it was very easy to trigger it here in different setups and Windows versions. You are right, you just have to leave full-screen mode in-game and the picture should be blank in windowed mode.

So, I went and tried the test version you have made available (for Windows 10 only?) but unfortunately I can still reproduce the problem there. I even tried enabling real full-screen mode to see if it would help but it didn't. Since it didn't happen before the SDL2 migration, my guess is that it should be something related to it? Or the way the window is composed after leaving full-screen?

Anyway, I wish I could help you further on that but my coding knowledge is nonexistent sadly.

 

On 4/5/2022 at 5:41 AM, mer-curious said:

* I've noticed doing this testing that when you leave the borderless full-screen mode through the GUI the blank picture isn't produced, so it seems an issue isolated to the game picture rendering, no? 🤔

Oh, this observation is still valid for this test version. If you leave full-screen mode from the GUI the issue isn't triggered, which is quite interesting. 🤔

Thank you so much again for your continuing support of Raine. 🙂

Link to comment
Share on other sites

Posted (edited)

argh, no luck then ! For the windows 10 only question : probably not, the version required is in a header file but I forgot which one... ! I don't fiddle with windows stuff very often... I'd say win7 would probably work but I am not sure, what is sure is xp wouldn't work with this one.
EDIT : I found the stuff, it's WINVER, defined in many places in the mingw headers, it indicate the minimum version required, and it's actually not that high, it just requires xp sp2, which seems very reasonable (it's defined as 0x502, and you can see the versions there : https://docs.microsoft.com/fr-fr/windows/win32/winprog/using-the-windows-headers?redirectedfrom=MSDN )

Except that, well 100% reliable here, so this time try it if you can on your nvidia computer, and hopefully this should work !

For the way the windows is drawn : it's sdl2 stuff. I know it's related to the opengl context which is sometimes lost when switching from fs to windowed mode, it's supposed to be fixed now, but apparently there are still problems sometimes. Well if I had a windows expert contributing code for the windows version maybe he could find some way around this, but since I don't, and since I don't want to try that, well it won't happen !

The best workaround is simply not to use the keyboard shortcut but always switch by using the gui, I never saw this problem by switching from the gui.

EDIT : I took another look, and it appears the workaround I had used for this very same problem is not required any more if using this version, so I'll update the binary and let you test it... Ok, binary updated in the archive, new date in the archive for raine.exe : 022-05-06 19:09:48

Edited by Tux
  • Like 1
Link to comment
Share on other sites

Posted (edited)

Hey Tux! Thank you so much again for your fast support.

So again, I went and tried this new test version and gladly the problem seems to be gone finally! 🙌 I tried both desktop and real full-screen modes and could no longer see the blank screen when leaving full-screen mode using the keyboard Alt+Enter shortcut.

I also took the opportunity to try it with the intel integrated graphics, both the Skylake+ drivers (buggy OpenGL) and the old HD 4000 (good OpenGL) and the issue is fixed with them too fortunately.

So in the end it was good to update this thread with my driver update testings. But I'm curious on what was causing this issue. Was it really the SDL2 upgrade as I guessed?

Anyway, thank you so much for your work in this little nuisance. 😊👍

PS: the new raine.exe version for testing in the 7z file has a "modified date" of 2022-05-06 14:09, perhaps because of the different time zone? And in the "About..." dialog it shows "May 6 2022 13:48:53", but I suppose it's this the version I had to try, right?

Edited by mer-curious
Link to comment
Share on other sites

There was a fix in the code for this issue from the beginning of the sdl2 version, except that at some point it became useless and actually recreated the problem, the opposite of what it was supposed to do, probably because it was fixed at the sdl2 level. I didn't notice because I almost never use the windows version, so yes the thing which made me notice was your tests, so it's a good thing.

Finally the cross compilation and mingw now target the same version of windows : xp sp2, so this link for win10 will go away, and the dlls package will be updated for next version. Until then, keep this one, next one will be smaller, fewer dlls, but this one works well already.

Glad it's finally fixed for good !

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...