On Thursday, October 15, 2015 03:17:19 PM Kenneth Graunke wrote: > VS, GS, and FS continue doing the same thing they did before. We can > simplify the FS code a bit because it is always scalar. > > Compute shaders now assert that there are no outputs instead of doing > a loop over 0 outputs. > > Cc: mesa-sta...@lists.freedesktop.org > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/drivers/dri/i965/brw_nir.c | 26 +++++++++++++++++++++----- > 1 file changed, 21 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_nir.c > b/src/mesa/drivers/dri/i965/brw_nir.c > index af9d041..1b4dace 100644 > --- a/src/mesa/drivers/dri/i965/brw_nir.c > +++ b/src/mesa/drivers/dri/i965/brw_nir.c > @@ -112,11 +112,27 @@ brw_nir_lower_inputs(nir_shader *nir, bool is_scalar) > static void > brw_nir_lower_outputs(nir_shader *nir, bool is_scalar) > { > - if (is_scalar) { > - nir_assign_var_locations(&nir->outputs, &nir->num_outputs, > type_size_scalar); > - } else { > - nir_foreach_variable(var, &nir->outputs) > - var->data.driver_location = var->data.location; > + switch (nir->stage) { > + case MESA_SHADER_VERTEX: > + case MESA_SHADER_GEOMETRY: > + if (is_scalar) { > + nir_assign_var_locations(&nir->outputs, &nir->num_outputs, > + type_size_scalar); > + } else { > + nir_foreach_variable(var, &nir->outputs) > + var->data.driver_location = var->data.location; > + } > + break; > + case MESA_SHADER_FRAGMENT: > + nir_assign_var_locations(&nir->outputs, &nir->num_outputs, > + type_size_scalar); > + break; > + case MESA_SHADER_COMPUTE: > + /* Compute shaders have no outputs. */ > + assert(exec_list_is_empty(&nir->outputs)); > + break; > + default: > + unreachable("unsupported shader stage"); > } > } > >
Ilia pointed out that the GLSL IR level varying packing makes it so float/vec2 arrays don't happen - they get packed to vec4 arrays. However, varying packing doesn't happen for tessellation stages. So, I think we should drop the Cc: stable on these. I'd still like to include them in master, however.
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev