Summary: | [regression][bisected] Moving mouse in some games under wine causes mouse flicker and low performance | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | DRI | Reporter: | Igor Kotrasiński <ikk_pl> | ||||||||
Component: | DRM/Intel | Assignee: | Ville Syrjala <ville.syrjala> | ||||||||
Status: | CLOSED NOTOURBUG | QA Contact: | Intel GFX Bugs mailing list <intel-gfx-bugs> | ||||||||
Severity: | major | ||||||||||
Priority: | high | CC: | intel-gfx-bugs | ||||||||
Version: | XOrg git | Keywords: | bisected, regression | ||||||||
Hardware: | x86-64 (AMD64) | ||||||||||
OS: | Linux (All) | ||||||||||
Whiteboard: | ReadyForDev | ||||||||||
i915 platform: | BDW | i915 features: | display/watermark | ||||||||
Attachments: |
|
Description
Igor Kotrasiński
2018-01-02 17:21:01 UTC
Created attachment 136501 [details]
kernel config used for bisecting
Hello Igor, could you try this branch https://cgit.freedesktop.org/drm-tip and attach dmesg with debug info, drm.debug=0x1e on grub? Thank you. Ville, could you give a quick look at this? Thank you. I tried the drm-tip kernel, the issue is still there although less pronounced (still heavy cursor flicker, but freezing turned into stuttering). Created attachment 136534 [details]
dmesg with drm.debug=0x1e and drm-tip kernel
Looks like a bug/feature of the game (or maybe wine) that it actually keeps turning the cursor off and on all the time. That causes us to drop off the unthrottled cursor fastpath. No idea why the game/wine does that. Can't imagine anyone wants to look at a randomly flickering cursor for length of time. The following hack in wine will eliminate the problem, but it would also leave a stale cursor on screen if the game actually wants to turn the cursor off: diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c index 186899fb16..9aaa9a18f9 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -223,6 +223,8 @@ void set_window_cursor( Window window, HCURSOR handle ) XUnlockDisplay( gdi_display ); } + if (!handle) + return; XDefineCursor( gdi_display, window, cursor ); /* make the change take effect immediately */ XFlush( gdi_display ); While making all cursor updates unthrottled would be possible from the hardware point of view, it'd be a lot of work to shoehorn that into the current driver architecture. So I'm going declare this as "not our bug" and move on ;) |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.