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

Marek Olšák maraeo at gmail.com
Thu Jun 22 00:15:58 UTC 2017


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.

>
> I'm just thinking, some drivers use lowering passes that internally
> generate kill's.  I *guess* it would only matter if they also had
> ddx/ddy instructions, but not sure.
>
> not really sure if this would actually be a problem or not..

Whether or not this affects you depends on how your hardware
implements kill/discard. Not just ddx/ddy, texture instructions
computing derivatives internally are affected by kill/discard too.

Marek


More information about the mesa-dev mailing list