The VIA graphics driver supports two kinds of scaling when using XRandR extension (XRandR 1.3 and above). One is 3D scaling and another is IGA scaling. Both methods can process resizing a digital image, while the usage differentiates from each other.
3D scaling
You may use this command to do 3D scaling.
xrandr --output <output> --scale <x>x<y>
When parameter x/y is smaller than 1, it will do up scaling , otherwise do down scaling.
Before enabling 3D scaling using the command above, it's needed to set a proper virtual size in xorg.conf. You may refer to Part V. Chapter 6. Maximum Screen Size Settings about he maximum virtual size setting. For example, CRT is the enabled output device and the virtual size is set to 3000x3000.
Section "Monitor" Identifier "CRT" Option "Enable" "True" Option "PreferredMode" "1024x768" EndSection Section "Screen" ...... Virtual 3000 3000 ...... EndSection
You will get the output information as below when input xrandr command in GNOME console.
root@linux-dev-desktop:~# xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 3000 x 3000
CRT connected 1024x768+0+0 (normal left inverted right x axis y axis) 310mm x 230mm
1024x768 85.0*+ 75.0 70.1 60.0 43.5
1280x1024 60.0
An example of 3D up scaling,
root@linux-dev-desktop:~# xrandr --output CRT --scale 0.8x0.6
root@linux-dev-desktop:~# xrandr
Screen 0: minimum 320 x 200, current 820 x 461, maximum 3000 x 3000
CRT connected 820x461+0+0 (normal left inverted right x axis y axis) 310mm x 230mm
1024x768 85.0*+ 75.0 70.1 60.0 43.5
1280x1024 60.0
And an example of 3D down scaling,
root@linux-dev-desktop:~# xrandr --output CRT --scale 1.5x1.8
root@linux-dev-desktop:~# xrandr
Screen 0: minimum 320 x 200, current 1536 x 1383, maximum 3000 x 3000
CRT connected 1536x1383+0+0 (normal left inverted right x axis y axis) 310mm x 230mm
1024x768 85.0*+ 75.0 70.1 60.0 43.5
1280x1024 60.0
The scaling parameter multiplied by the primary based mode value couldn’t be bigger than the maximum virtual size setting, or error will be reported as below,
root@linux-dev-desktop:~# xrandr --output CRT --scale 5x5
xrandr: screen cannot be larger than 3000x3000 (desired size 5120x3840)
IGA scaling
The IGA scaling support is limited in current VIA graphic driver.
1. It's only supported on IGA2.
2. Only LCD device is supported.
3. IGA up scaling is supported on VX900/VX855/VX800, and IGA down scaling is only supported on VX900.
4. The maximum parameter of down scaling is 1.33. For example, if the LCD panel whose native mode is 1024x768, the PreferredMode setting could not be larger than 1361x1021.
5. Only support the same scaling type both horizontally and vertically. For example, do up scaling vertically but down scaling horizontally is not supported.
When enable IGA scaling of LCD panel, the option “PanelSize” and “PreferredMode” will determine whether do IGA scaling or not, and whether do up scaling or down scaling. If the mode LCD lighted is the same as its panel size, it will not do IGA scaling. And if the mode LCD lighted is smaller than its panel size, it will do up scaling automatically, otherwise do down scaling.
For example, for the LCD panel whose native mode is 1024x768, it will do down scaling when PrefferredMode is set to 1360x768.
Section "Monitor" Identifier "LCD" Option "Enable" " True " Option "PanelSize" "1024x768" Option "PreferredMode" "1360x768" EndSection