[Mesa-dev] [PATCH 1/3] i965/nir: Switch on shader stage in nir_lower_outputs().
Kenneth Graunke
kenneth at whitecape.org
Thu Oct 15 15:32:05 PDT 2015
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-stable at lists.freedesktop.org
> Signed-off-by: Kenneth Graunke <kenneth at 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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20151015/38428895/attachment.sig>
More information about the mesa-dev
mailing list