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> |
||
---|---|---|
.gitlab-ci | ||
Xext | ||
Xi | ||
composite | ||
config | ||
damageext | ||
dbe | ||
dix | ||
doc | ||
dri3 | ||
exa | ||
fb | ||
glamor | ||
glx | ||
hw | ||
include | ||
m4 | ||
man | ||
mi | ||
miext | ||
os | ||
present | ||
pseudoramiX | ||
randr | ||
record | ||
render | ||
test | ||
xfixes | ||
xkb | ||
.appveyor.yml | ||
.dir-locals.el | ||
.gitignore | ||
.gitlab-ci.yml | ||
.mailmap | ||
.travis.yml | ||
COPYING | ||
README.md | ||
meson.build | ||
meson_options.txt | ||
xorg-server.m4 | ||
xorg-server.pc.in | ||
xserver.ent.in |
X Server
The X server accepts requests from client applications to create windows, which are (normally rectangular) "virtual screens" that the client program can draw into.
Windows are then composed on the actual screen by the X server (or by a separate composite manager) as directed by the window manager, which usually communicates with the user via graphical controls such as buttons and draggable titlebars and borders.
For a comprehensive overview of X Server and X Window System, consult the following article: https://en.wikipedia.org/wiki/X_server
All questions regarding this software should be directed at the Xorg mailing list:
https://lists.freedesktop.org/mailman/listinfo/xorg
The primary development code repository can be found at:
https://gitlab.freedesktop.org/xorg/xserver
For patch submission instructions, see:
https://www.x.org/wiki/Development/Documentation/SubmittingPatches
As with other projects hosted on freedesktop.org, X.Org follows its Code of Conduct, based on the Contributor Covenant. Please conduct yourself in a respectful and civilized manner when using the above mailing lists, bug trackers, etc: