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>
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev