[Bug 80868] New: Support screen scaling modes for external monitors

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Jul 3 11:59:37 PDT 2014


https://bugs.freedesktop.org/show_bug.cgi?id=80868

          Priority: medium
            Bug ID: 80868
          Assignee: dri-devel at lists.freedesktop.org
           Summary: Support screen scaling modes for external monitors
          Severity: enhancement
    Classification: Unclassified
                OS: All
          Reporter: kamil.paral at gmail.com
          Hardware: Other
            Status: NEW
           Version: XOrg CVS
         Component: DRM/Radeon
           Product: DRI

As we steadily progress into the year of Linux gaming, there will be many
requests regarding games. This is one of them :)

Currently, it is possible to set scaling mode for a monitor only if the monitor
is internal (LVDS, eDP). This is done through xrandr:

$ xrandr --prop
Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 8192 x 8192
LVDS1 connected primary 1680x1050+0+0 (normal left inverted right x axis y
axis) 331mm x 207mm
<snip>
    scaling mode: Full aspect 
        supported: None, Full, Center, Full aspect
<snip>

$ xrandr --output LVDS1 --set "scaling mode" "Center"

However, it is not possible to do this for external panels (VGA, DVI, HDMI,
DP). The "scaling mode" property is not exported for these panels (this was
confirmed to me by ckoenig and agd5f on the #radeon irc channel, many thanks).

Please allow users to set scaling mode even for external panels. There are many
use cases for it, mainly related to gaming.

Note: Many panels provide options to do the scaling on their own, however, only
the very expensive ones provide good options. For example, the majority of
"mainstream" panels don't provide the "center" scaling mode - however, that is
very useful when playing older lower-resolution games when you prefer smaller
and sharp image instead of larger and blurry. Second example are certain panels 
which support "full aspect" mode only for a small selection or resolutions,
otherwise they simply scale to "full" ignoring image aspect ratio. For these
panels, GPU scaling is essential if the user doesn't want to see distorted
aspect ratio image.

My personal use case is buying BenQ BL2411PT 1920x1200 panel, which *can not*
display 1920x1080 resolution with correct aspect ratio - it always stretches it
vertically. Yes, it's very dumb, yet that's how modern panels commonly work
(and not just the cheap ones). This hasn't been a large issue in the past,
because we had no games and opensource drivers were hardly able to run them
anyway. Both things are changing rapidly.

The proprietary AMD and NVIDIA drivers have been offering GPU scaling
functionality for a long time, both on Linux and Windows. Here's an example of
their GUI configuration:
https://www.codeweavers.com/support/wiki/linux/faq/43_game_stretch

Please allow us to use GPU scaling even with radeon driver. Thank you.

There has been some technical details on the IRC, it is linked here:
http://paste.fedoraproject.org/115407/

It seems to me that this functionality could be implemented in a simple and
straightforward way:
a) provide a single configuration option - "scaling mode"
b) on internal panels default to "Full aspect" (which you already do) - that is
reasonable default, because these panels have no control buttons
c) on external panels default to "None" - that allows the user to easily
configure scaling through the panel. Only if the user is dissatisfied, he/she
can enable GPU scaling through xrandr.

And here's one more user seconding my thoughts on the IRC:
AbortRetryFail: 1:1 unscaled output for LCDs would be awesome.
AbortRetryFail: 1280x720 looks horrible scaled up to fit a 1366x768 LCD

Thanks.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140703/4fa4714f/attachment.html>


More information about the dri-devel mailing list