[Mesa-dev] "glsl: Vectorize multiple scalar assignments" (mesa 4bd6e0d) breaks League of Legends on wine

Matt Turner mattst88 at gmail.com
Mon Feb 10 13:09:44 PST 2014


On Mon, Feb 10, 2014 at 11:08 AM, Andrew Guertin <lists at dolphinling.net> wrote:
> On 02/10/2014 12:11 AM, Matt Turner wrote:
>>
>> On Sat, Feb 8, 2014 at 5:29 AM, Andrew Guertin <lists at dolphinling.net>
>> wrote:
>>>
>>> On 02/08/2014 02:41 AM, Matt Turner wrote:
>>>>
>>>>
>>>> On Fri, Feb 7, 2014 at 10:22 PM, Andrew Guertin <lists at dolphinling.net>
>>>> wrote:
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> I updated mesa and started getting some bad behavior in League of
>>>>> Legends
>>>>> (played through wine). After starting a game, upon hovering any of the
>>>>> skill
>>>>> buttons, instead of an info tooltip appearing, the whole screen is
>>>>> covered
>>>>> in grey. Some other problems are visible too, like the options menu
>>>>> missing
>>>>> most of its text.
>>>>>
>>>>> I bisected down to
>>>>>
>>>>> 4bd6e0d7c69b304be88996a6c2b96ce7d996e627 is the first bad commit
>>>>> commit 4bd6e0d7c69b304be88996a6c2b96ce7d996e627
>>>>> Author: Matt Turner <mattst88 at gmail.com>
>>>>> Date:   Sat Dec 21 11:28:05 2013 -0800
>>>>>
>>>>>       glsl: Vectorize multiple scalar assignments
>>>>>
>>>>>       Reduces vertex shader instruction counts in DOTA2 by 6.42%, L4D2
>>>>> by
>>>>>       4.61%, and CS:GO by 5.71%.
>>>>>
>>>>>       total instructions in shared programs: 1500153 -> 1498191
>>>>> (-0.13%)
>>>>>       instructions in affected programs:     59919 -> 57957 (-3.27%)
>>>>>
>>>>>       Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
>>>>>
>>>>>
>>>>> System info:
>>>>> CPU: i7-3770
>>>>> GPU: HD 4000
>>>>> Kernel: 3.12
>>>>>
>>>>> I am not subscribed to this mailing list, so please keep me cc'd.
>>>>>
>>>>> Thanks,
>>>>> --Andrew
>>>>
>>>>
>>>>
>>>> Presumably you have the following commits on top of that, and none of
>>>> them affect it?
>>>>
>>>> 8e2b8bd0
>>>> 37f1903e
>>>> 60654421
>>>
>>>
>>>
>>> Yes, I was up to date with master when I first noticed this, probably
>>> 882e98e5, so all of those were included.
>>>
>>>
>>>> Could you send me (privately) or file a bug report with the output of
>>>> the game running with MESA_GLSL=dump ?
>>>
>>>
>>>
>>> I've just spent about an hour trying to do this and failing. I get none
>>> of
>>> the output when running League of Legends. I get output when running
>>> glxgears, and when running FurMark through wine, but none with LoL. I
>>> also
>>> tried MESA_GLSL=log, which again worked with FurMark but had no result
>>> with
>>> LoL.
>>>
>>> --Andrew
>>
>>
>> Okay. Maybe you can capture an apitrace that shows the problem? I'd be
>> able to extract the shaders from it.
>>
>> Thanks,
>> Matt
>
>
> I got this working, and I've uploaded the trace at
> http://www.uvm.edu/~aguertin/personal/wine-preloader.trace.tar.xz . This is
> with mesa a21552a96b (HEAD as of this morning), and wine 1.7.12.

Thanks, that helped a lot. The problem was that the vectorization pass
would combine multiple array dereference (which must have scalar
indicies) into something with an illegal vector index. Running your
trace against Mesa built with assertions caught the problem.

I've sent a patch that fixes it and Cc'd you. If it works for you,
feel free to give a Tested-by tag that I'll add to the commit message.

Thanks again!
Matt


More information about the mesa-dev mailing list