/* Perform Blit */
- if (cs)
+ if (cs ||
+ (img_bsurf.image->vk_format == VK_FORMAT_R32G32B32_UINT ||
+ img_bsurf.image->vk_format == VK_FORMAT_R32G32B32_SINT ||
+ img_bsurf.image->vk_format == VK_FORMAT_R32G32B32_SFLOAT)) {
radv_meta_buffer_to_image_cs(cmd_buffer, &buf_bsurf, &img_bsurf, 1, &rect);
- else
+ } else {
radv_meta_blit2d(cmd_buffer, NULL, &buf_bsurf, &img_bsurf, 1, &rect);
+ }
/* Once we've done the blit, all of the actual information about
* the image is embedded in the command buffer so we can just
rect.src_y = src_offset_el.y;
/* Perform Blit */
- if (cs)
+ if (cs ||
+ (b_src.format == VK_FORMAT_R32G32B32_UINT ||
+ b_src.format == VK_FORMAT_R32G32B32_SINT ||
+ b_src.format == VK_FORMAT_R32G32B32_SFLOAT)) {
radv_meta_image_to_image_cs(cmd_buffer, &b_src, &b_dst, 1, &rect);
- else
+ } else {
radv_meta_blit2d(cmd_buffer, &b_src, NULL, &b_dst, 1, &rect);
+ }
b_src.layer++;
b_dst.layer++;