[Mesa-dev] [PATCH 0/5] Gallium: Passing drirc options to create_screen() and fixing Rocket League

Michel Dänzer michel at daenzer.net
Thu Jun 22 08:14:31 UTC 2017


On 22/06/17 04:34 PM, Nicolai Hähnle wrote:
> On 22.06.2017 03:38, Rob Clark wrote:
>> On Wed, Jun 21, 2017 at 8:15 PM, Marek Olšák <maraeo at gmail.com> wrote:
>>> On Wed, Jun 21, 2017 at 10:37 PM, Rob Clark <robdclark at gmail.com> wrote:
>>>> On Tue, Jun 20, 2017 at 6:54 PM, Marek Olšák <maraeo at gmail.com> wrote:
>>>>> Hi,
>>>>>
>>>>> This series updates pipe loaders so that flags such as drirc options
>>>>> can be passed to create_screen(). I have compile-tested everything
>>>>> except clover.
>>>>>
>>>>> The first pipe_screen flag is a drirc option to fix incorrect grass
>>>>> rendering in Rocket League for radeonsi. Rocket League expects DirectX
>>>>> behavior for partial derivative computations after discard/kill, but
>>>>> radeonsi implements the more efficient but stricter OpenGL behavior
>>>>> and that will remain our default behavior. The new screen flag forces
>>>>> radeonsi to use the DX behavior for that game.
>>>>>
>>>>
>>>> do we really want this to be a *global* option for the screen?
>>>
>>> Yes. Shaders are pipe_screen (global) objects in radeonsi, so a
>>> compiler option also has to be global. We can't look at the context
>>> during the TGSI->LLVM translation.
>>
>> well, I didn't really mean per-screen vs per-context, as much as
>> per-screen vs per-shader (or maybe more per-screen vs
>> per-instruction?)
> 
> I honestly don't think it's worth the trouble. Applications that are
> properly coded against GLSL can benefit from the relaxed semantics, and
> applications that get it wrong in one shader are rather likely to get it
> wrong everywhere.
> 
> Since GLSL simply says derivatives are undefined after non-uniform
> discard, and this option makes it defined instead, setting this flag can
> never break the behavior of a correctly written shader.

BTW, how expensive is the radeonsi workaround when it isn't needed?

I'm starting to wonder if we shouldn't just make it always safe and call
it a day, saving the trouble of identifying broken apps and plumbing the
info through the API layers...


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the mesa-dev mailing list