[Mesa-dev] [PATCH 1/3] i965: Check the INTEL_USE_NIR environment variable once at context creation
Jason Ekstrand
jason at jlekstrand.net
Fri Apr 3 10:04:35 PDT 2015
On Fri, Apr 3, 2015 at 9:46 AM, Matt Turner <mattst88 at gmail.com> wrote:
> On Fri, Apr 3, 2015 at 1:07 AM, Jordan Justen <jordan.l.justen at intel.com> wrote:
>> On 2015-04-02 20:56:15, Jason Ekstrand wrote:
>>> ---
>>> src/mesa/drivers/dri/i965/brw_context.c | 10 +++++++++-
>>> src/mesa/drivers/dri/i965/brw_fs.cpp | 4 ++--
>>> src/mesa/drivers/dri/i965/brw_vec4.cpp | 4 +++-
>>> 3 files changed, 14 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
>>> index 84818f0..f0de711 100644
>>> --- a/src/mesa/drivers/dri/i965/brw_context.c
>>> +++ b/src/mesa/drivers/dri/i965/brw_context.c
>>> @@ -560,6 +560,12 @@ brw_initialize_context_constants(struct brw_context *brw)
>>> .lower_ffma = true,
>>> };
>>>
>>> + bool use_nir_default[MESA_SHADER_STAGES];
>>> + use_nir_default[MESA_SHADER_VERTEX] = false;
>>> + use_nir_default[MESA_SHADER_GEOMETRY] = false;
>>> + use_nir_default[MESA_SHADER_FRAGMENT] = false;
>>> + use_nir_default[MESA_SHADER_COMPUTE] = false;
>>
>> How about memset to 0 for now to make sure all stages are set? We can
>> add use_nir_default[MESA_SHADER_FOO] = true; after the memset to
>> update the default for the shader stage.
Sure, we could do that. I'm not sure if it really saves us anything.
I guess it would make sure that we initialize everything.
> Isn't this sufficient?
>
> bool use_nir_default[MESA_SHADER_STAGES] = {false};
Yes, that would accomplish the memset in less code.
> and use C99 designated initializers when we want to change the default
> per-stage.
No, we can't do this. When we flip the switch, we're going to have
> use_nir_default[MESA_SHADER_VERTEX] = brw->gen >= 8;
and you can only use compile-time constants in initializers.
>> + if (brw_env_var_as_boolean("INTEL_USE_NIR", use_nir_default[i]))
>
> This will read the var more once per shader type, right? Maybe read
> INTEL_USE_NIR once before the loop?
I'd like to have a single read of the INTEL_USE_NIR variable.
However, doing that *and* handling defaults will be annoying. Since
this code isn't going to be around for a real long time, I'm not
terribly concerned about reading it extra times. As is, we read it
once per shader compile anyway.
--Jason
More information about the mesa-dev
mailing list