[Mesa-dev] [PATCH 04/11] i965/vec4/nir: vec4 also need to remap vs attributes

Matt Turner mattst88 at gmail.com
Wed Jan 11 04:52:56 UTC 2017


On 01/09, Juan A. Suarez Romero wrote:
>From: Alejandro Piñeiro <apinheiro at igalia.com>
>
>Doubles need extra space, so we would need to do a remapping for vec4
>too in order to take that into account. We reuse the already
>existing remap_vs_attrs, but passing is_scalar, so they could
>remap accordingly.
>
>Signed-off-by: Alejandro Piñeiro <apinheiro at igalia.com>
>Signed-off-by: Juan A. Suarez Romero <jasuarez at igalia.com>
>---
> src/mesa/drivers/dri/i965/brw_nir.c | 30 ++++++++++++++++++++----------
> 1 file changed, 20 insertions(+), 10 deletions(-)
>
>diff --git a/src/mesa/drivers/dri/i965/brw_nir.c b/src/mesa/drivers/dri/i965/brw_nir.c
>index 2d2fce2..b491cdb 100644
>--- a/src/mesa/drivers/dri/i965/brw_nir.c
>+++ b/src/mesa/drivers/dri/i965/brw_nir.c
>@@ -95,9 +95,19 @@ add_const_offset_to_base(nir_shader *nir, nir_variable_mode mode)
>    }
> }
>
>+struct remap_vs_attrs_params {
>+   shader_info *nir_info;
>+   bool is_scalar;
>+};
>+
> static bool
>-remap_vs_attrs(nir_block *block, shader_info *nir_info)
>+remap_vs_attrs(nir_block *block, void *closure)
> {
>+   struct remap_vs_attrs_params *params =
>+      (struct remap_vs_attrs_params *) closure;
>+   shader_info *nir_info = params->nir_info;
>+   bool is_scalar = params->is_scalar;
>+
>    nir_foreach_instr(instr, block) {
>       if (instr->type != nir_instr_type_intrinsic)
>          continue;
>@@ -113,7 +123,7 @@ remap_vs_attrs(nir_block *block, shader_info *nir_info)
>          int attr = intrin->const_index[0];
>          int slot = _mesa_bitcount_64(nir_info->inputs_read &
>                                       BITFIELD64_MASK(attr));
>-         intrin->const_index[0] = 4 * slot;
>+         intrin->const_index[0] = is_scalar ? 4 * slot : slot;
>       }
>    }
>    return true;
>@@ -257,6 +267,9 @@ brw_nir_lower_vs_inputs(nir_shader *nir,
>                         bool use_legacy_snorm_formula,
>                         const uint8_t *vs_attrib_wa_flags)
> {
>+   struct remap_vs_attrs_params params = { .nir_info = nir->info,
>+                                           .is_scalar = is_scalar };

Please write this as

	
   struct remap_vs_attrs_params params = {
      .nir_info = nir->info,
      .is_scalar = is_scalar
   };
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170110/635bbbbc/attachment.sig>


More information about the mesa-dev mailing list