[Mesa-dev] [PATCH 1/3] i965/nir: Switch on shader stage in nir_lower_outputs().

Jason Ekstrand jason at jlekstrand.net
Thu Oct 15 23:07:06 PDT 2015


Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>
On Oct 15, 2015 15:17, "Kenneth Graunke" <kenneth at whitecape.org> 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");
>     }
>  }
>
> --
> 2.6.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20151015/c0e9699a/attachment.html>


More information about the mesa-dev mailing list