On Thu, Jul 6, 2017 at 9:50 PM, Connor Abbott <conn...@valvesoftware.com> wrote:
> From: Connor Abbott <cwabbo...@gmail.com>
>
> Radeonsi doesn't either. As of the last commit, these should be handled
> properly as long as LLVM has scratch support. We also should use
> nir_lower_io_to_temporaries() for inputs instead of generating an
> if-ladder, since that should be more efficient.
> ---
>  src/amd/vulkan/radv_pipeline.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
> index 237e146..0991304 100644
> --- a/src/amd/vulkan/radv_pipeline.c
> +++ b/src/amd/vulkan/radv_pipeline.c
> @@ -272,11 +272,17 @@ radv_shader_compile_to_nir(struct radv_device *device,
>
>         nir_shader_gather_info(nir, entry_point->impl);
>
> -       nir_variable_mode indirect_mask = 0;
> -       indirect_mask |= nir_var_shader_in;
> -       indirect_mask |= nir_var_local;
> +       if (device->llvm_supports_spill) {
> +               nir_lower_io_to_temporaries(nir, entry_point->impl,
> +                                           false /* outputs */,
> +                                           true /* inputs */);

We only need temporaries for VS/FS inputs, the other stages get the
inputs from ringbuffers and I think those have all been wired up for
indirect access. (might make sense to enable output temporaries for FS
and whatever maps to hardware VS?)

Also sounds like the current indirect index handling for inputs is
useless, you might be able to simplify that.

> +       } else {
> +               nir_variable_mode indirect_mask = 0;
> +               indirect_mask |= nir_var_shader_in;
> +               indirect_mask |= nir_var_local;
> +               nir_lower_indirect_derefs(nir, indirect_mask);
> +       }
>
> -       nir_lower_indirect_derefs(nir, indirect_mask);
>
>         static const nir_lower_tex_options tex_options = {
>           .lower_txp = ~0,
> --
> 2.9.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to