External monitor, scaled by xrandr, only shows 1/4 of what it’s supposed to show

I’m having some issues configuring my screen setup correctly with xrandr.
My setup consists of a Dell XPS-13 with a 4K (3200×1800) Display and an external 21 inch FullHD (1920×1080) Monitor.
Because of the High DPI, I’ve been using the 200% scaling on the laptop. Since you can’t set scaling on a per monitor basis, I’m stuck either having everything way too big on the external monitor and the correct size on the laptop OR everything normal on the external monitor and way too small on the laptop screen.

I then tried to solve this with xrandr, as explained in here or here. In principle, I want to set the external monitors resolution to 3840×2160, and then scaling everything by 2×2, so that I can use the same DPI-Scaling on both monitors.

My desired setup

This image shows what my setup is supposed to look like.
I applied those settings with

xrandr --output DVI-I-1-1 --scale 2x2 --mode 1920x1080 --fb 7040x3100 --pos 0x0

xrandr --output eDP-1 --scale 1x1 --pos 3840x1300 --mode 3200x1800

DVI-I-1-1 is my external monitor, eDP-1 my laptop’s screen.

This does not have the desired effect, and on my external monitor I can only see the upper left quadrant of the “big 3840×2160” Montior.

What I can see on the screen

So if here the big red rectangle is the whole image I’m supposed to see on my external monitor,
the green rectangle is what I’m able to see. On the Laptop’s screen everything is fine..

Any ideas on what I’m doing wrong here? I couldn’t find good explanations on how xrandr is supposed to work, only people posting the solution to their very specific setup. I would like to understand what is wrong here…
Thanks! 🙂

TLDR: what is wrong with my xrandr commands that I can only see 1 quarter of what I’m supposed to see on my external monitor

EDIT: So from further research I suspect that the scaling command is not working. If it did, I should be able to add --panning 1920x1080+0+0to the command for my external monitor. This however results in the following error:

  X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  29 (RRSetPanning)
  Serial number of failed request:  41
  Current serial number in output stream:  41

This led me to believe that the --scale 2x2 is not working, so I tried to replace it with --transform 2,0,0,0,2,0,0,0,1(which should be the exact same thing since scale is a shortcut to transform)· This did however not change anything…

Answer

Wow , you have the same issue as me in that scale try’s to work but only shows 1/4 of the final result on the screen .

Facts first

I can get it working just working with the nvidia chip by it self ,

It’s when in Hybrid mode ,and try to scale it starts to crumble to a pile of do do

Funny thing as the mouse pointer is able to work fine over the screen in the correct scale ,

It’s only taking a 1920×1200 chuck in my case of a 3840×2400 of the upscale image and just displaying one 960×600 chunk on the 1920×1200 screen .

It’s like it’s selecting only 1920×1200 of the 3840×2400 scaled image. And passing that to the frame buffer to be displayed .

Attribution
Source : Link , Question Author : Tschösi , Answer Author : unknown President

Leave a Comment