[Mesa-dev] [PATCH] radv: fix emitting descriptor pointers with LLVM < 7

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Wed May 30 09:36:00 UTC 2018


Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

Add a Fixes tag?

On Wed, May 30, 2018 at 11:15 AM, Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
> This was terribly wrong, I forced use of 32-bit pointers when
> emitting shader descriptor pointers. This fixes GPU hangs with
> LLVM 5&6 because 32-bit pointers are only supported with LLVM 7.
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/amd/vulkan/radv_cmd_buffer.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
> index 8f351b52c9d..6ff1f1a6cb8 100644
> --- a/src/amd/vulkan/radv_cmd_buffer.c
> +++ b/src/amd/vulkan/radv_cmd_buffer.c
> @@ -624,12 +624,14 @@ radv_emit_descriptor_pointers(struct radv_cmd_buffer *cmd_buffer,
>                 struct radv_userdata_info *loc = &locs->descriptor_sets[start];
>                 unsigned sh_offset = sh_base + loc->sgpr_idx * 4;
>
> -               radv_emit_shader_pointer_head(cs, sh_offset, count, true);
> +               radv_emit_shader_pointer_head(cs, sh_offset, count,
> +                                             HAVE_32BIT_POINTERS);
>                 for (int i = 0; i < count; i++) {
>                         struct radv_descriptor_set *set =
>                                 descriptors_state->sets[start + i];
>
> -                       radv_emit_shader_pointer_body(device, cs, set->va, true);
> +                       radv_emit_shader_pointer_body(device, cs, set->va,
> +                                                     HAVE_32BIT_POINTERS);
>                 }
>         }
>  }
> --
> 2.17.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list