pop-os / hidpi-daemon

Daemon to manage HiDPI and LoDPI monitors on X
Other
51 stars 13 forks source link

Doesn't work in Hybrid graphics mode #34

Open jacobgkau opened 3 years ago

jacobgkau commented 3 years ago

Distribution - (run cat /etc/os-release): Pop!_OS 20.10

Related Application and/or Package Version - (run apt policy $PACKAGE NAME): 18.04.6~1594738317~20.10~cfe8850

Issue/Bug Description: In Hybrid graphics mode, the persistent HiDPI notification does not appear. The widget in Settings -> Displays does appear, but it doesn't work (flipping the LoDPI switch on and off shows the notification, but doesn't change the scaling settings.)

The daemon still works normally in Intel and NVIDIA modes.

Steps to reproduce (if you know): Install Pop!_OS on a hybrid graphics, HiDPI machine (such as addw2) and attempt to use the HiDPI daemon.

Expected behavior: The persistent HiDPI notification should show up, and the HiDPI widget in Settings should work.

Other Notes: I'm getting this output in the logs: hidpi-output.txt

When I try to run nvidia-settings -q CurrentMetaMode manually, I get:

system76@pop-os:~$ nvidia-settings -q CurrentMetaMode
ERROR: Error resolving target specification '' (No targets match target specification), specified in query 'CurrentMetaMode'.

I think what's happening is the HiDPI daemon thinks it's in NVIDIA mode because the NVIDIA driver is running, so it tries to use the NVIDIA driver to adjust the display settings, but since it's actually in hybrid mode, the display is being driven by the Intel graphics and the NVIDIA driver can't read or adjust the display settings (there is no CurrentMetaMode because the NVIDIA driver isn't driving the display.)

gorghino commented 3 years ago

I'm facing the same bug ( #38 ). Hidpi-daemon works on NVIDIA mode/Integrated mode only. xrandr and monitors.xml: https://pastebin.com/n1KZ8mHP

hidpi-daemon: 18.04.6-1594738317-20.10~cfe8850 nvidia-settings 460.39-0ubuntu0.20.10.1 NVIDIA-SMI 460.56 Driver Version: 460.56*

gorgo@pop-os:~$ sudo nvidia-settings -q CurrentMetaMode

ERROR: Unable to load info from any available system ERROR: Unable to load info from any available system

gorgo@pop-os:~$ nvidia-settings -q CurrentMetaMode

ERROR: NVIDIA driver is not loaded ERROR: Unable to load info from any available system

ERROR: NVIDIA driver is not loaded ERROR: Unable to load info from any available system

             /////////////                gorgo@pop-os 
         /////////////////////            ------------ 
      ///////*767////////////////         OS: Pop!_OS 20.10 x86_64 
    //////7676767676*//////////////       Host: Blade 15 Advanced Model (Early 2020) - RZ09-033 5.04 
   /////76767//7676767//////////////      Kernel: 5.8.0-7642-generic 
  /////767676///*76767///////////////     Uptime: 1 hour 
 ///////767676///76767.///7676*///////    Packages: 2974 (dpkg), 29 (flatpak) 
/////////767676//76767///767676////////   Shell: bash 5.0.17 
//////////76767676767////76767/////////   Resolution: 4384x2466 
///////////76767676//////7676//////////   DE: GNOME 3.38.3 
////////////,7676,///////767///////////   WM: Mutter 
/////////////*7676///////76////////////   WM Theme: Pop 
///////////////7676////////////////////   Theme: Pop-dark [GTK2/3] 
 ///////////////7676///767////////////    Icons: Pop [GTK2/3] 
  //////////////////////'////////////     Terminal: gnome-terminal 
   //////.7676767676767676767,//////      CPU: Intel i7-10875H (16) @ 2.300GHz 
    /////767676767676767676767/////       GPU: NVIDIA GeForce RTX 2080 SUPER Mobile / Max-Q 
      ///////////////////////////         GPU: Intel UHD Graphics 
         /////////////////////            Memory: 4965MiB / 15867MiB 
             /////////////
jacobgkau commented 3 years ago

Ran into this while testing oryp7 w/ HiDPI display, and discovered that the notification shows up and the daemon works if I boot (in Hybrid mode) with an external display plugged in. It just doesn't work when I boot with only the internal display.

When I boot with an external display plugged in, I see a GNOME Shell process running on the NVIDIA card in addition to an Xorg process. (I only have a single Xorg process on the NVIDIA card when I boot without external displays.)