[Mesa-dev] [PATCH] radeonsi/nir: fix explicit component packing for geom/tess doubles

Marek Olšák maraeo at gmail.com
Mon Apr 2 02:43:20 UTC 2018


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek


On Tue, Mar 27, 2018 at 10:22 PM, Timothy Arceri <tarceri at itsqueeze.com>
wrote:

> ---
>  src/gallium/drivers/radeonsi/si_shader.c | 19 +++++++++++--------
>  1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/src/gallium/drivers/radeonsi/si_shader.c
> b/src/gallium/drivers/radeonsi/si_shader.c
> index 8ae742c93f6..d5607a99d32 100644
> --- a/src/gallium/drivers/radeonsi/si_shader.c
> +++ b/src/gallium/drivers/radeonsi/si_shader.c
> @@ -1290,12 +1290,13 @@ static LLVMValueRef si_nir_load_tcs_varyings(struct
> ac_shader_abi *abi,
>                                                       is_patch);
>
>         LLVMValueRef value[4];
> -       for (unsigned i = 0; i < num_components + component; i++) {
> +       for (unsigned i = 0; i < num_components; i++) {
>                 unsigned offset = i;
>                 if (llvm_type_is_64bit(ctx, type))
>                         offset *= 2;
>
> -               value[i] = lds_load(bld_base, type, offset, dw_addr);
> +               offset += component;
> +               value[i + component] = lds_load(bld_base, type, offset,
> dw_addr);
>         }
>
>         return ac_build_varying_gather_values(&ctx->ac, value,
> num_components, component);
> @@ -1377,13 +1378,14 @@ LLVMValueRef si_nir_load_input_tes(struct
> ac_shader_abi *abi,
>          * between the NIR and TGSI backends.
>          */
>         LLVMValueRef value[4];
> -       for (unsigned i = component; i < num_components + component; i++) {
> +       for (unsigned i = 0; i < num_components; i++) {
>                 unsigned offset = i;
>                 if (llvm_type_is_64bit(ctx, type))
>                         offset *= 2;
>
> -               value[i] = buffer_load(&ctx->bld_base, type, offset,
> -                                      ctx->tess_offchip_ring, base, addr,
> true);
> +               offset += component;
> +               value[i + component] = buffer_load(&ctx->bld_base, type,
> offset,
> +                                                  ctx->tess_offchip_ring,
> base, addr, true);
>         }
>
>         return ac_build_varying_gather_values(&ctx->ac, value,
> num_components, component);
> @@ -1693,13 +1695,14 @@ static LLVMValueRef si_nir_load_input_gs(struct
> ac_shader_abi *abi,
>         struct si_shader_context *ctx = si_shader_context_from_abi(abi);
>
>         LLVMValueRef value[4];
> -       for (unsigned i = component; i < num_components + component; i++) {
> +       for (unsigned i = 0; i < num_components; i++) {
>                 unsigned offset = i;
>                 if (llvm_type_is_64bit(ctx, type))
>                         offset *= 2;
>
> -               value[i] = si_llvm_load_input_gs(&ctx->abi,
> driver_location  / 4,
> -                                                vertex_index, type,
> offset);
> +               offset += component;
> +               value[i + component] = si_llvm_load_input_gs(&ctx->abi,
> driver_location  / 4,
> +                                                            vertex_index,
> type, offset);
>         }
>
>         return ac_build_varying_gather_values(&ctx->ac, value,
> num_components, component);
> --
> 2.14.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180401/eb1931b8/attachment.html>


More information about the mesa-dev mailing list