Bug 91641

Summary: white cursor with planetary annihilation
Product: Mesa Reporter: kdj0c
Component: Drivers/Gallium/radeonsiAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED NOTOURBUG QA Contact: Default DRI bug account <dri-devel>
Severity: minor    
Priority: medium    
Version: 10.6   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: screenshot in the PA menu
cursor fixed
original cursor from PA

Description kdj0c 2015-08-14 21:59:55 UTC
Created attachment 117696 [details]
screenshot in the PA menu

the cursor is a big white square in planetary annihilation. (see screenshot attached).

only the blue arrow should be seen, the white square should be transparent.

HW is radeon HD 7950 with radeonsi driver

OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD TAHITI
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.6.4
OpenGL core profile shading language version string: 3.30

thread on uber forum : 
https://forums.uberent.com/threads/state-of-the-cursor-fix.69376/

tried to add   Option  "SWCursor" "True" to xorg.conf, but doesn't have any visible effect.
Comment 1 Alex Deucher 2015-08-14 22:10:10 UTC
Does the app use the hw cursor or draw it's own?
Comment 2 kdj0c 2015-08-14 22:48:31 UTC
according to the last post of this thread :

https://forums.uberent.com/threads/reproduction-of-cursor-bug.50898/page-2

the post is a bit old, so I'm not sure it's still 100% accurate :

one of the dev said:"For the cursor we use the standard XCursor library with calls like XcursorImageLoadCursor. We could hide the system cursor and compose the cursor image ourselves but that has a couple of downsides, primarily that it adds more lag between when the mouse moves and when the cursor moves."
Comment 3 kdj0c 2015-08-14 22:53:52 UTC
by the way, there was a mod that fixed the cursor issue with mesa drivers. but it's not working with recent build.

also it's working with nvidia binary driver. So I'm still unsure if this bug is in the driver or in the game, or in a lib between them.


on a side note, I tried to record a trace with apitrace, but it doesn't record the cursor.
Comment 4 kdj0c 2015-08-15 13:08:37 UTC
Created attachment 117701 [details]
cursor fixed
Comment 5 kdj0c 2015-08-15 13:10:18 UTC
I found a good workaround. the issue is with cursor.png.
I edited the cursor.png with gimp, and paint the "transparent square" with black and then save with "save color of transparent pixel" checked and now it works !

attached the modified cursor.png

just copy it to SteamApps/common/Planetary Annihilation/media/ui/main/game/live_game/img/cursors/cursor.png and voila

so for some reason mesa/xcursor or radeonsi think transparent pixels with white color are not transparent. (red are partialy transparent, and black are completely transparent).

I attached the two cursor.png file, so it can be tested/reproduced easily.
Comment 6 kdj0c 2015-08-15 13:13:38 UTC
Created attachment 117702 [details]
original cursor from PA

this png has white transparent pixels, which are not transparent with xorg.
Comment 7 Michel Dänzer 2015-08-18 06:45:24 UTC
Sounds like it may be a Planetary Annihilation bug, the cursor data it's feeding to the XCursor library may not use proper pre-multiplied alpha as expected.
Comment 8 kdj0c 2015-08-27 21:51:01 UTC
Fixed in latest Planetary Annihilation update.

release note include :

"Fix some cursors on certain Linux drivers"

http://steamcommunity.com/games/233250/announcements/detail/125327186128569099

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.