radv: add radv_dispatch() helper
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 14 Sep 2017 12:12:00 +0000 (14:12 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 20 Sep 2017 08:27:32 +0000 (10:27 +0200)
To share common dispatch compute code.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_cmd_buffer.c

index 50a5179e74630e21333689f5a8984c194d01900b..7c34af8f3c6d9baaab350fc7e3123dcb0a532ee1 100644 (file)
@@ -3270,6 +3270,17 @@ radv_emit_dispatch_packets(struct radv_cmd_buffer *cmd_buffer,
        assert(cmd_buffer->cs->cdw <= cdw_max);
 }
 
+static void
+radv_dispatch(struct radv_cmd_buffer *cmd_buffer,
+             const struct radv_dispatch_info *info)
+{
+       radv_flush_compute_state(cmd_buffer);
+
+       radv_emit_dispatch_packets(cmd_buffer, info);
+
+       radv_cmd_buffer_after_draw(cmd_buffer);
+}
+
 void radv_CmdDispatch(
        VkCommandBuffer                             commandBuffer,
        uint32_t                                    x,
@@ -3279,15 +3290,11 @@ void radv_CmdDispatch(
        RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
        struct radv_dispatch_info info = {};
 
-       radv_flush_compute_state(cmd_buffer);
-
        info.blocks[0] = x;
        info.blocks[1] = y;
        info.blocks[2] = z;
 
-       radv_emit_dispatch_packets(cmd_buffer, &info);
-
-       radv_cmd_buffer_after_draw(cmd_buffer);
+       radv_dispatch(cmd_buffer, &info);
 }
 
 void radv_CmdDispatchIndirect(
@@ -3299,14 +3306,10 @@ void radv_CmdDispatchIndirect(
        RADV_FROM_HANDLE(radv_buffer, buffer, _buffer);
        struct radv_dispatch_info info = {};
 
-       radv_flush_compute_state(cmd_buffer);
-
        info.indirect = buffer;
        info.indirect_offset = offset;
 
-       radv_emit_dispatch_packets(cmd_buffer, &info);
-
-       radv_cmd_buffer_after_draw(cmd_buffer);
+       radv_dispatch(cmd_buffer, &info);
 }
 
 void radv_unaligned_dispatch(
@@ -3322,11 +3325,7 @@ void radv_unaligned_dispatch(
        info.blocks[2] = z;
        info.unaligned = 1;
 
-       radv_flush_compute_state(cmd_buffer);
-
-       radv_emit_dispatch_packets(cmd_buffer, &info);
-
-       radv_cmd_buffer_after_draw(cmd_buffer);
+       radv_dispatch(cmd_buffer, &info);
 }
 
 void radv_CmdEndRenderPass(