Handling cursor updates with VRR
With VRR we have a conflict between smooth cursor updates and smooth application content - only one can be made smooth, and which to prefer depends heavily on the user preference and the application in question.
Currently, we're solving that problem by having cursor updates always force a repaint, but for some games that is not a good idea. In some other situations, like a video or animation playing at 60Hz, it would also be preferable to have the cursor update with LFC at 120Hz, if the hardware can do that. Sadly, we currently have neither the option of LFC cursor updates nor any knowledge about the content we show.
Options to improve the situation are
-
make a dumb setting for which to prefer. This is pretty horrible, as it requires the user to switch back and forth manually. As generally there's only very few games where cursor refreshes are actually annoying, maybe it's acceptable as a first step though -
make a setting for a minimal cursor refresh rate. Could cause the cursor to be rather jumpy though without page flip scheduling in the kernel -
make a window rule. Better than a dumb switch but not exactly discoverable -
improve the situation on upstream protocols like content-type first, then use those to make better / more granular settings