radv: fix emitting descriptor pointers with LLVM < 7
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 30 May 2018 09:15:12 +0000 (11:15 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 30 May 2018 09:38:54 +0000 (11:38 +0200)
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.

Fixes: 88d1ed0f81 ("radv: emit shader descriptor pointers consecutively")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_cmd_buffer.c

index 8f351b52c9d8137ad14c48141b02b8c268078fb3..6ff1f1a6cb885af358273a64ece3358a92a7fbab 100644 (file)
@@ -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);
                }
        }
 }