On 10/26/2015 05:29 PM, Kenneth Graunke wrote:
> On Monday, October 26, 2015 05:02:07 PM Ian Romanick wrote:
>> On 10/26/2015 11:03 AM, Kenneth Graunke wrote:
>>> Integer varyings need to be flat qualified - all others were already.
>>> I think we just missed this.  Presumably some hardware passes this via
>>> sideband and ignores attribute interpolation, so no one has noticed.
>>>
>>> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
>>> Cc: Chris Forbes <chr...@ijw.co.nz>
>>> ---
>>>  src/glsl/builtin_variables.cpp | 39 ++++++++++++++++++++++++++-------------
>>>  1 file changed, 26 insertions(+), 13 deletions(-)
>>>
>>> diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp
>>> index a6ad105..07aacd4 100644
>>> --- a/src/glsl/builtin_variables.cpp
>>> +++ b/src/glsl/builtin_variables.cpp
>>> @@ -887,16 +887,22 @@ builtin_variable_generator::generate_uniforms()
>>>  void
>>>  builtin_variable_generator::generate_vs_special_vars()
>>>  {
>>> +   ir_variable *var;
>>> +
>>>     if (state->is_version(130, 300))
>>>        add_system_value(SYSTEM_VALUE_VERTEX_ID, int_t, "gl_VertexID");
>>>     if (state->ARB_draw_instanced_enable)
>>>        add_system_value(SYSTEM_VALUE_INSTANCE_ID, int_t, 
>>> "gl_InstanceIDARB");
>>>     if (state->ARB_draw_instanced_enable || state->is_version(140, 300))
>>>        add_system_value(SYSTEM_VALUE_INSTANCE_ID, int_t, "gl_InstanceID");
>>> -   if (state->AMD_vertex_shader_layer_enable)
>>> -      add_output(VARYING_SLOT_LAYER, int_t, "gl_Layer");
>>> -   if (state->AMD_vertex_shader_viewport_index_enable)
>>> -      add_output(VARYING_SLOT_VIEWPORT, int_t, "gl_ViewportIndex");
>>> +   if (state->AMD_vertex_shader_layer_enable) {
>>> +      var = add_output(VARYING_SLOT_LAYER, int_t, "gl_Layer");
>>> +      var->data.interpolation = INTERP_QUALIFIER_FLAT;
>>> +   }
>>> +   if (state->AMD_vertex_shader_viewport_index_enable) {
>>> +      var = add_output(VARYING_SLOT_VIEWPORT, int_t, "gl_ViewportIndex");
>>> +      var->data.interpolation = INTERP_QUALIFIER_FLAT;
>>> +   }
>>>     if (compatibility) {
>>>        add_input(VERT_ATTRIB_POS, vec4_t, "gl_Vertex");
>>>        add_input(VERT_ATTRIB_NORMAL, vec3_t, "gl_Normal");
>>> @@ -954,11 +960,16 @@ 
>>> builtin_variable_generator::generate_tes_special_vars()
>>>  void
>>>  builtin_variable_generator::generate_gs_special_vars()
>>>  {
>>> -   add_output(VARYING_SLOT_LAYER, int_t, "gl_Layer");
>>> -   if (state->is_version(410, 0) || state->ARB_viewport_array_enable)
>>> -      add_output(VARYING_SLOT_VIEWPORT, int_t, "gl_ViewportIndex");
>>> +   ir_variable *var;
>>> +
>>> +   var = add_output(VARYING_SLOT_LAYER, int_t, "gl_Layer");
>>> +   var->data.interpolation = INTERP_QUALIFIER_FLAT;
>>> +   if (state->is_version(410, 0) || state->ARB_viewport_array_enable) {
>>> +      var = add_output(VARYING_SLOT_VIEWPORT, int_t, "gl_ViewportIndex");
>>> +      var->data.interpolation = INTERP_QUALIFIER_FLAT;
>>> +   }
>>>     if (state->is_version(400, 0) || state->ARB_gpu_shader5_enable)
>>> -      add_system_value(SYSTEM_VALUE_INVOCATION_ID, int_t, 
>>> "gl_InvocationID");
>>> +      var = add_system_value(SYSTEM_VALUE_INVOCATION_ID, int_t, 
>>> "gl_InvocationID");
>>
>> Shouldn't this set var->data.interpolation?  It looks like you only made
>> half the change.
> 
> I actually meant to leave that alone, as I don't think it makes sense to
> set interpolation modes on system values (they aren't varyings!).  Good
> catch, though, I got a bit overzealous in my "var" adding :)
> 
> I've dropped that one line of diff locally.  Thanks!

Cool.  With that change, the series is

Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to