holoiso-eol / holoiso

SteamOS 3 (Holo) archiso configuration
Other
5.25k stars 262 forks source link

incorrect screen orientation in deck mode #23

Closed sameeris7860 closed 2 years ago

sameeris7860 commented 2 years ago

using 5800u onexplayer mini, it is booting fine (minus issues with wifi attributable to core update problems) the orientation is 180 degrees upside down in steam deck ui mode

sameeris7860 commented 2 years ago

installer is in portrait mode oriented 90 degrees clockwise

sameeris7860 commented 2 years ago

UI still upside down, but the command line prompt from boot selection to the UI rotated 180 (so now upside down), but the actual SD UI is still upside down

hopefullyusernamenk commented 2 years ago

i will

romracer commented 2 years ago

fbcon=rotate:3 should rotate the console the other direction (counter-clockwise instead of clockwise). Probably see #43 for a potential fix about the Deck UI rotation.

hopefullyusernamenk commented 2 years ago

do you have a fix for the screen rotation yet

ruineka commented 2 years ago

Kernel 5.17 has the orientation quirk that rotates the display. The 5.13 kernel does not have this backported it seems. https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/drm_panel_orientation_quirks.c

ruineka commented 2 years ago

Kernel 5.17 has the orientation quirk that rotates the display. The 5.13 kernel does not have this backported it seems. https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/drm_panel_orientation_quirks.c

Since i couldn't find Steam Deck's kernel source, i can't backport that. Well, looks like i'll have to smuggle Arch's 5.17.x into my repositories, since Neptune doesn't have all of those stuff.

I own both the Aya Neo Pro and OneXPlayer and use them daily using Pop OS and am well versed with the sort of issues that can happen. I'll assist as much as possible. Simply downgrading the gamescope package for the OneXPlayer Intel will resolve the deck UI not working and updating the kernel should fix the wifi on the Aya Neo and orientation issues on the OneXPlayer. I think only the non pro Aya Neo is added to the quirk code, manually adding the Pro will probably be necessary for it.

ruineka commented 2 years ago

Kernel 5.17 has the orientation quirk that rotates the display. The 5.13 kernel does not have this backported it seems. https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/drm_panel_orientation_quirks.c

Since i couldn't find Steam Deck's kernel source, i can't backport that. Well, looks like i'll have to smuggle Arch's 5.17.x into my repositories, since Neptune doesn't have all of those stuff.

UPD: I found kernel source for neptune kernel. I will take a look at it later. Seems like an easy fix.

Good deal. You will need to add a udev or xpad module to add gamepad support for the Intel OneXPlayer.

I pulled this from a script I made for Pop OS. Should work for Holos as well

​sudo curl -o /etc/udev/rules.d/99-oxpgamepad.rules https://pastebin.com/raw/WuB44000

hopefullyusernamenk commented 2 years ago

wait so do i run this and it will fixi this . if so you are THE BEST

hopefullyusernamenk commented 2 years ago

have you updated kernel?

ruineka commented 2 years ago

have you updated kernel?

I will wait to see what @theVakhovskeIsTaken does with his repos. Overall the changes needed aren't that drastic thanks to the groundwork having already been done.

I did try upgrading the kernel a few days ago and ended up bricking my install.

ruineka commented 2 years ago
  1. Add this to /etc/pacman.conf [holostaging] Server = https://vakdl.enablers.workers.dev/6:/$repo/os/$arch SigLevel = Never
  2. Run sudo pacman -Rcns linux-neptune and sudo pacman -S linux-neptune-dri
  3. Run sudo grub-mkconfig -o /boot/grub/grub.cfg
  4. Boot and test

@sameeris7860 @ruineka @hopefullyusernamenk can you test screen rotation here please?

Target not found: linux-neptune-dri

I added this holostaging line to pacman.conf

sameeris7860 commented 2 years ago

Sorry, bad click.

  1. Add this to /etc/pacman.conf [holostaging] Server = https://vakdl.enablers.workers.dev/6:/$repo/os/$arch SigLevel = Never
  2. Run sudo pacman -Rcns linux-neptune and sudo pacman -S linux-neptune-dri
  3. Run sudo grub-mkconfig -o /boot/grub/grub.cfg
  4. Boot and test

@sameeris7860 @ruineka @hopefullyusernamenk can you test screen rotation here please?

Target not found: linux-neptune-dri

I added this holostaging line to pacman.conf

make sure to separate lines on holostaging in pacman.conf, just to be sure (since i had the same issue) and do as -Sy not -S (like [theVakhovskeIsTaken] suggested)

did all the steps but didn't work. should note though im on an old build, ill get on the newest release and try

ruineka commented 2 years ago

Unfortunately after updating the orientation remains unchanged.

ruineka commented 2 years ago

It looks like the boot CLI text is the correct orientation now, its the gamemode itself that remains upside down. I tested the exact same install on my Aya Neo Pro and the CLI text was sideways and gamemode is landscape.

hopefullyusernamenk commented 2 years ago

ok i checked something and i edited it but i haven't run the commands. all I care about is the deck mode being rigthside up

ruineka commented 2 years ago

It looks like the boot CLI text is the correct orientation now, its the gamemode itself that remains upside down. I tested the exact same install on my Aya Neo Pro and the CLI text was sideways and gamemode is landscape.

Can you run uname -a and check if its indeed "DRI"?

PXL_20220509_183342984.jpg

and the tty is the correct orientation

PXL_20220509_183529061.jpg

sameeris7860 commented 2 years ago

It looks like the boot CLI text is the correct orientation now, its the gamemode itself that remains upside down. I tested the exact same install on my Aya Neo Pro and the CLI text was sideways and gamemode is landscape.

Can you run uname -a and check if its indeed "DRI"?

confirmed, it is DRI

ruineka commented 2 years ago

It's worth noting that when I was helping the ChimeraOS team a while back we had an issue where if the resolution was not 1600x2560 steamOS/big picture mode rendered upsidedown. I launched a few games and it is showing 800p without 1600p being a selectable option. The fix was to add the missing resolutions to xrandr which then allowed SteamOS to find the resolution and render it correctly.

With Gamescope being Wayland I suspect it uses xwayland1 as the virtual display so it probably needs to add supported resolutions to the list.

ruineka commented 2 years ago

Gotcha. I have to go to work unfortunately and my internet keeps going in and out so I'll have to stop for now.

If there is a way to verify the gamescope:0 and xwayland1 available resolutions I suspect it will show only 1600x2560 with deck UI by default attempting to use 800x1280 which is not available.

It's a headscratcher I know, but it's been a reoccurring theme on these devices.

I bet if we can add 800x1280 and/or change steam to use 1600p it will render correctly.

The mini uses a 1200x1920 display I believe by the way.

ruineka commented 2 years ago

If it helps this is the script I made/modified to add resolutions for the steam compositor which as previously stated used X11. https://pastebin.com/xVkPQyCb

Important notes: By default ChimeraOS used the native resolution which was 1600x2560 and rendered correctly. The problem was horrible performance.

Setting the goodmode to 800p resulted in the display being upside down.

Adding the 800p as a custom resolution fixed the orientation issue because steam was able to successfully see it as being a supported resolution.

This was before the kernel level orientation quirk fixes so we used the "left" orientation argument to adjust the display. This shouldn't be necessary now that we have the quirk now.

ruineka commented 2 years ago

using 5800u onexplayer mini, it is booting fine (minus issues with wifi attributable to core update problems) the orientation is 180 degrees upside down in steam deck ui mode

Can I get the output from xrandr -q? Im curious what resolutions your device is listing as supported.

ruineka commented 2 years ago

@theVakhovskeIsTaken There is an interesting GPD device fix within the steam deck customization PKGs. Located at /usr/bin there is gpd-xorg-rotation-config.

https://steamdeck-packages.steamos.cloud/archlinux-mirror/jupiter/os/x86_64/steamos-customizations-jupiter-20220323.1-1-any.pkg.tar.zst

i5shuyi commented 2 years ago

I have encountered many problems that I can't solve

ruineka commented 2 years ago

It's worth noting that when I was helping the ChimeraOS team a while back we had an issue where if the resolution was not 1600x2560 steamOS/big picture mode rendered upsidedown. I launched a few games and it is showing 800p without 1600p being a selectable option. The fix was to add the missing resolutions to xrandr which then allowed SteamOS to find the resolution and render it correctly. With Gamescope being Wayland I suspect it uses xwayland1 as the virtual display so it probably needs to add supported resolutions to the list.

1. ChimeraOS uses steamcompmgr, which is Xorg.

2. Gamescope uses hardcoded (editable in gamescope-session) resolution for anything else than steam

3. Gamescope runs under gamescope:0, meanwhile X apps run under xwayland1

I have done it, i have fixed the issue!

Okay what you will need is to compile and use Gamescope 3.9.5 with the drm.cpp modified. You will want to change the DRM_MODE_ROTATE=270 instances to DRM_MODE_ROTATE_90.

Logically what you will want to do is specifically do this for devices like the OneXPlayer to fix the issue, otherwise we might have some regression on some devices.

Until we have a proper fix in the latest git of Gamescope we will probably want a installation flag specifically for the Intel OneXPlayers, this may also fix the issues on the GDP win 2 etc as well.

The AMD OneXPlayer should work fine with the latest git with these changes.

PXL_20220523_013951814.jpg

TeddyLav commented 2 years ago

HI,Brother, can you tell me which command to execute?

ruineka commented 2 years ago

HI,Brother, can you tell me which command to execute?

It's an involved process that I need to replicate to make a guide with a step by step guide to get this working correctly. Unfortunately I won't have time until this weekend to do such work. The state posted above is a hybrid of ChimeraOS and Holos (I used holos repo/steam deck repos on Chimera with the downgraded/patched gamescope. I tried doing the same thing on a vanilla Holos install and all I got was a black screen on boot. Not sure why this would be the case but I'll look into it.

Here is a sloppy note I made and shared on discord for any tinkers out there who might want to pick up on this in the meantime.

OneXPlayer/Intel Gamescope hackery and fun.

Not sure whats different between ChimeraOS using gamescope/gamepadui and Holos, but there is something different apparently because on Holos I get a black screen using the same configurations. So, for reference on how I got this to work on ChimeraOS this is what I did:

Step 1. Upgrade to Chimera 33 (currently testing channel) Step 2. Unlock the filesystem using sudo frzr-unlock Step 3. Add [holoiso], [holo] and [holostaging] servers to pacman.conf

[holostaging] Server = https://vakdl.enablers.workers.dev/6:/$repo/os/$arch SigLevel = Never

[holoiso] Server = https://vakdl.enablers.workers.dev/6:/$repo/os/$arch SigLevel = Never

[holo] Include = /etc/pacman.d/mirrorlist SigLevel = Never

Step 4. Add the steamdeck repo to the mirrors

Server = https://steamdeck-packages.steamos.cloud/archlinux-mirror/$repo/os/$arch

Step 5. sudo pacman -S holo/gamescope Step 6. You won't be able to boot Chimera using chimera-session gamepadui anymore so you will want to use STEAMCMD to add the -steamos3 -gamepadui - steampal - steamdeck arguments (Probably not necessary? I really don't know, I had these values already set from prior testing) and from any TTY. First stop lightdm with sudo systemctl stop lightdm and then run gamescope-session. This will now launch gamepadui in a working (but upsidedown) state on the OneXPlayer.

To fix the upsidedown issue you need to change gamescope drm.cpp values DRM_MODE_ROTATE=270 to DRM_MODE_ROTATE=90 (A proper fix is coming to gamescope so this isn't recommended unless you are testing) I compiled this custom gamescope using my laptop and ssh over the binary to /usr/bin replacing the existing file. When I used gamescope-session after a reboot it was in the correct orientation.

Here is the link to the source I used https://drive.google.com/file/d/1DXzQj7MrweyiSj2T4fpmxJxP59huvTKr/view?usp=sharing

ruineka commented 2 years ago

I created a repo specifically for testing the changes to rotate the display. Anyone willing to help me test this on the OneXPlayer and other devices that are upsidedown?

https://github.com/ruineka/gamescope-onexplayer

ruineka commented 2 years ago

It's worth noting that when I was helping the ChimeraOS team a while back we had an issue where if the resolution was not 1600x2560 steamOS/big picture mode rendered upsidedown. I launched a few games and it is showing 800p without 1600p being a selectable option. The fix was to add the missing resolutions to xrandr which then allowed SteamOS to find the resolution and render it correctly. With Gamescope being Wayland I suspect it uses xwayland1 as the virtual display so it probably needs to add supported resolutions to the list.

1. ChimeraOS uses steamcompmgr, which is Xorg.

2. Gamescope uses hardcoded (editable in gamescope-session) resolution for anything else than steam

3. Gamescope runs under gamescope:0, meanwhile X apps run under xwayland1

I have done it, i have fixed the issue!

Okay what you will need is to compile and use Gamescope 3.9.5 with the drm.cpp modified. You will want to change the DRM_MODE_ROTATE=270 instances to DRM_MODE_ROTATE_90.

Logically what you will want to do is specifically do this for devices like the OneXPlayer to fix the issue, otherwise we might have some regression on some devices.

Until we have a proper fix in the latest git of Gamescope we will probably want a installation flag specifically for the Intel OneXPlayers, this may also fix the issues on the GDP win 2 etc as well.

The AMD OneXPlayer should work fine with the latest git with these changes.

PXL_20220523_013951814.jpg

Is this all i need? I might clone gamescope later and push this fix for both of 3.9.5 and 3.11+

It definitely will work for the upsidedown issue with the OneXPlayer, but I think devices that used the 270 value might render incorrectly. However, I have been trying to figure out what has changed that causes gamescope sessions to constantly restart indefinitely on ChimeraOS and the black screen on holos.

I made this GitHub for testing the latest master git with the changes https://github.com/ruineka/gamescope-onexplayer There is a gamescope-onexplayer-downgraded branch that has the modified 3.9.5 version as well.

I am not familiar enough with arch to setup an aur for this though. I have been manually installing each individual dependency to build it.

ruineka commented 2 years ago

Getting the readout of of the gamescope log tells me it's the anv assert error we already know about using the master branch. 3.9.5 is the only version I was able to confirm the orientation fix on.

I see that there may be a patched mesa for intel users fixing this assert error on 3.11+ so if that's the case then using the change visible on my github page should work fine.

ruineka commented 2 years ago

PXL_20220530_082346893.jpg

I got it working on holoiso correctly by editing the gamescope-session to use 1600x2160 resolution and removed the --xwaylands 2 parameter because it isn't available on 3.9.5 and downgrading mesa as we've done in the past.

So I have methods to get both ChimeraOS and Holoiso to work on the Intel OneXPlayer.

FayeSpica commented 2 years ago

PXL_20220530_082346893.jpg

I got it working on holoiso correctly by editing the gamescope-session to use 1600x2160 resolution and removed the --xwaylands 2 parameter because it isn't available on 3.9.5 and downgrading mesa as we've done in the past.

So I have methods to get both ChimeraOS and Holoiso to work on the Intel OneXPlayer.

No need to recompile gamescope, just edit gamescope-session start script? I've thought about this before, but haven't tried it.

ruineka commented 2 years ago

PXL_20220530_082346893.jpg

I got it working on holoiso correctly by editing the gamescope-session to use 1600x2160 resolution and removed the --xwaylands 2 parameter because it isn't available on 3.9.5 and downgrading mesa as we've done in the past.

So I have methods to get both ChimeraOS and Holoiso to work on the Intel OneXPlayer.

No need to recompile gamescope, just edit gamescope-session start script? I've thought about this before, but haven't tried it.

Oh I'm sorry I should have went into more detail. On Holoiso I ran into multiple issues and the one I was having with the modified DRM and the version shipped with the OS was the black screen of death.

I ran into this at some point in my testing on ChimeraOS so I started investigating parameters in gamescope-session and fixed it on holoiso. It took a good full day of testing to get this going.

PXL_20220530_000743729.jpg

You have to have the modified gamescope DRM or else the display is upside down.

hopefullyusernamenk commented 2 years ago

How do I install this on onexplayer

ruineka commented 2 years ago

How do I install this on onexplayer

If @theVakhovskeIsTaken merges packages with drm changes for 3.9.5/git for Intel/AMD OneXPlayer's alike I'll do testing to find any issues related to the gamescope-session configuration as well as EDID induced problems.

Unless you are familiar enough with arch linux to compile and install gamescope and work from the tty to set it up it's not going to be straight forward I'm afraid.

ruineka commented 2 years ago

I have my touchscreen and display rotated. I made a custom libdrm/drm_modes.h header in order to compile this.

Feel free to look at what I did and make proper fixes if anyone wishes.

https://github.com/ruineka/gamescope-onexplayer/commit/a673f4f6debc29d8d0c684e4e553812f7a3a3ee8

My testing branch has an automated script I made for Pop OS for those wishes to test this in a tested environment. I have to push and test AMD but Intel is confirmed working.

https://github.com/ruineka/xPlayerOS

ruineka commented 2 years ago

@theVakhovskeIsTaken Here we go. the branches "another-experiment" and "another-experiment-intel" have working left up orientation gamescope builds for any "left up" display devices like the OneXPlayer. If you wish to include this with Holoiso it would help all the 'upsidedown" issues.

P.S. the touchscreen is also flipped, and no nonsense dependencies, so if you can build gamescope-git you can also build this.

https://github.com/ruineka/gamescope-onexplayer/tree/another-experiment https://github.com/ruineka/gamescope-onexplayer/tree/another-experiment-intel (This is newer than 3.9.5 so downgrading mesa may not be necessary)

ruineka commented 2 years ago

I made a video on how people can fix this issue here as well as setting up Holoiso on the OXP. Use the correct options for AMD or Intel depending on your hardware.

https://www.youtube.com/watch?v=ZsZN9CQg0Xk

tiltysola commented 2 years ago

I made a video on how people can fix this issue here as well as setting up Holoiso on the OXP. Use the correct options for AMD or Intel depending on your hardware.

https://www.youtube.com/watch?v=ZsZN9CQg0Xk

I followed this instruction and I still got a upside down in deck mode.

My device is AyaNeo Air, and uses the 5.18(holo kernel)

ruineka commented 2 years ago

I made a video on how people can fix this issue here as well as setting up Holoiso on the OXP. Use the correct options for AMD or Intel depending on your hardware.

https://www.youtube.com/watch?v=ZsZN9CQg0Xk

I followed this instruction and I still got a upside down in deck mode.

My device is AyaNeo Air, and uses the 5.18(holo kernel)

The video is outdated now but I worked together with Samsagax to get gamescope-plus on the AUR repository so you can use --force-orientation left in your gamescope session to rotate the air's display.

ruineka commented 2 years ago

Fixed as of https://t.me/HoloISO/195. Huge thanks to @ruineka @Samsagax

Glad the work paid off for everyone! :)