radv: add get_image_stride_for_r32g32b32() helper
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 24 Oct 2018 06:50:24 +0000 (08:50 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 26 Oct 2018 08:50:03 +0000 (10:50 +0200)
For the special R32G32B32 paths.

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

index 6a5058693f420e90304dc53c777261deba25edb1..de7e0b1e3e3afbb645b87114c2a2b02285293bf8 100644 (file)
@@ -1420,6 +1420,21 @@ create_bview_for_r32g32b32(struct radv_cmd_buffer *cmd_buffer,
                              });
 }
 
+static unsigned
+get_image_stride_for_r32g32b32(struct radv_cmd_buffer *cmd_buffer,
+                              struct radv_meta_blit2d_surf *surf)
+{
+       unsigned stride;
+
+       if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX9) {
+               stride = surf->image->surface.u.gfx9.surf_pitch;
+       } else {
+               stride = surf->image->surface.u.legacy.level[0].nblk_x * 3;
+       }
+
+       return stride;
+}
+
 static void
 itob_bind_descriptors(struct radv_cmd_buffer *cmd_buffer,
                      struct radv_image_view *src,
@@ -1560,11 +1575,7 @@ radv_meta_buffer_to_image_cs_r32g32b32(struct radv_cmd_buffer *cmd_buffer,
        radv_CmdBindPipeline(radv_cmd_buffer_to_handle(cmd_buffer),
                             VK_PIPELINE_BIND_POINT_COMPUTE, pipeline);
 
-       if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX9) {
-               stride = dst->image->surface.u.gfx9.surf_pitch;
-       } else {
-               stride = dst->image->surface.u.legacy.level[0].nblk_x * 3;
-       }
+       stride = get_image_stride_for_r32g32b32(cmd_buffer, dst);
 
        for (unsigned r = 0; r < num_rects; ++r) {
                unsigned push_constants[4] = {
@@ -1802,11 +1813,7 @@ radv_meta_clear_image_cs_r32g32b32(struct radv_cmd_buffer *cmd_buffer,
        radv_CmdBindPipeline(radv_cmd_buffer_to_handle(cmd_buffer),
                             VK_PIPELINE_BIND_POINT_COMPUTE, pipeline);
 
-       if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX9) {
-               stride = dst->image->surface.u.gfx9.surf_pitch;
-       } else {
-               stride = dst->image->surface.u.legacy.level[0].nblk_x * 3;
-       }
+       stride = get_image_stride_for_r32g32b32(cmd_buffer, dst);
 
        unsigned push_constants[4] = {
                clear_color->uint32[0],