xserver/hw/xfree86
Ville Syrjälä 1f41320e1c modesetting: Use a more optimal hw cursor size
Try to minimize the used hw cursor size in order to
minimize power consumption. There is no kernel query
for the minimum so we'll just probe around with
setcursor2 (using an invisible cursor image so
there will be no visual artifacts).

To avoid having to deal with absolutely every size stick
to power-of-two numbers. And with a bit of extra effort
we can determine whether non-square dimesions will also
work, which they do to some degree on current Intel GPUs.

On my Alderlake laptop I'm seeing a massive (up to .5W)
difference in power consumption between 64x64 vs. 256x256
cursors. While some of that is undoubtedly something that
needs to be fixed in i915's display data buffer allocation
code, it still makes sense to use as small as possible
cursor to minimize the wastege.

In case the crtc is rotated just punt to the max cursor size
for now since midlayer has already done the coordinate
transformations based on that. To make smaller cursors work
with rotation we'd either need to make the midlayer(s) aware
of the final cursor size, or just handle the whole roation
business in modesetting. I suspect the latter option would
be easier.

v2: Only allow square cursors in most cases for now as eg.
    on modern Intel hardware non-square only works with
    wide+short but not with narrow+tall cursors. Non-square
    size may still be used when maximum limits aren't
    square and the squared+POT'd dimensions would exceed
    one of the max limits.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2023-12-16 08:03:26 +02:00
..
common AutoRepeat: Fix wrong repeat rate being applied 2023-11-02 01:20:41 +00:00
ddc print_edid: Fix a format string error 2022-06-26 09:16:42 +00:00
dixmods Remove autotools support 2021-10-27 13:15:40 +03:00
doc Remove autotools support 2021-10-27 13:15:40 +03:00
dri Remove autotools support 2021-10-27 13:15:40 +03:00
dri2 Remove autotools support 2021-10-27 13:15:40 +03:00
drivers modesetting: Use a more optimal hw cursor size 2023-12-16 08:03:26 +02:00
exa Remove autotools support 2021-10-27 13:15:40 +03:00
fbdevhw Remove autotools support 2021-10-27 13:15:40 +03:00
glamor_egl xorg: initialize glamor provider 2023-11-07 17:59:43 +03:00
i2c Remove autotools support 2021-10-27 13:15:40 +03:00
int10 Remove autotools support 2021-10-27 13:15:40 +03:00
loader Remove autotools support 2021-10-27 13:15:40 +03:00
man xorg.conf.man: document new RenderingAPI option 2023-11-02 08:18:00 +00:00
modes xfree86: make xf86RotateCrtcRedisplay public 2022-12-19 23:56:27 -08:00
os-support Revert "Compile lnx_platform.c on FreeBSD too." 2023-12-02 11:39:24 -08:00
parser Remove autotools support 2021-10-27 13:15:40 +03:00
ramdac Replace "the the" with a single "the" in docs & comments 2022-03-31 13:27:57 -07:00
shadowfb Remove autotools support 2021-10-27 13:15:40 +03:00
utils Remove autotools support 2021-10-27 13:15:40 +03:00
vgahw Remove autotools support 2021-10-27 13:15:40 +03:00
x86emu x86emu: re-align breaks in ins() and outs() 2022-03-31 20:44:06 +00:00
xkb Remove autotools support 2021-10-27 13:15:40 +03:00
.gitignore Xorg: Add Xorg.wrap to hw/xfree86/.gitignore 2014-04-18 11:39:16 +02:00
Xorg.sh.in xfree86: rename Xorg.bin to Xorg 2015-01-05 09:53:58 +10:00
meson.build meson: Support building Xnest and Xorg on darwin 2022-06-26 09:16:42 +00:00
sdksyms.sh Consolidate fourcc.h 2020-09-15 11:43:16 +02:00
xorg-wrapper.c Fix various spelling errors 2019-10-01 17:05:28 +00:00
xorgconf.cpp Fix spelling/wording issues 2020-07-05 13:07:33 -07:00