radv: split radv_emit_shader_pointer()
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 25 May 2018 12:59:19 +0000 (14:59 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 29 May 2018 08:07:13 +0000 (10:07 +0200)
This will allow to emit consecutive shader pointers for
reducing the number of emitted SET_SH_REG packets, which
is recommended.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_private.h

index e2fa58d8d1e72599b416972f3f0be16001683df5..e554fc7acca7fc58f1d7246fc1f86716c6953e2d 100644 (file)
@@ -1131,13 +1131,17 @@ bool radv_get_memory_fd(struct radv_device *device,
                        int *pFD);
 
 static inline void
-radv_emit_shader_pointer(struct radv_device *device,
-                        struct radeon_winsys_cs *cs,
-                        uint32_t sh_offset, uint64_t va, bool global)
+radv_emit_shader_pointer_head(struct radeon_winsys_cs *cs,
+                             unsigned sh_offset, bool use_32bit_pointers)
 {
-       bool use_32bit_pointers = HAVE_32BIT_POINTERS && !global;
-
        radeon_set_sh_reg_seq(cs, sh_offset, use_32bit_pointers ? 1 : 2);
+}
+
+static inline void
+radv_emit_shader_pointer_body(struct radv_device *device,
+                             struct radeon_winsys_cs *cs,
+                             uint64_t va, bool use_32bit_pointers)
+{
        radeon_emit(cs, va);
 
        if (use_32bit_pointers) {
@@ -1148,6 +1152,17 @@ radv_emit_shader_pointer(struct radv_device *device,
        }
 }
 
+static inline void
+radv_emit_shader_pointer(struct radv_device *device,
+                        struct radeon_winsys_cs *cs,
+                        uint32_t sh_offset, uint64_t va, bool global)
+{
+       bool use_32bit_pointers = HAVE_32BIT_POINTERS && !global;
+
+       radv_emit_shader_pointer_head(cs, sh_offset, use_32bit_pointers);
+       radv_emit_shader_pointer_body(device, cs, va, use_32bit_pointers);
+}
+
 static inline struct radv_descriptor_state *
 radv_get_descriptors_state(struct radv_cmd_buffer *cmd_buffer,
                           VkPipelineBindPoint bind_point)