Mesa (main): tu/clear_blit: Stop creating a franken-image for staging blits
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Oct 18 16:38:36 UTC 2021
Module: Mesa
Branch: main
Commit: de568c3b2c75778b4bf3513e85588614a5714990
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=de568c3b2c75778b4bf3513e85588614a5714990
Author: Connor Abbott <cwabbott0 at gmail.com>
Date: Thu Oct 14 17:28:41 2021 +0200
tu/clear_blit: Stop creating a franken-image for staging blits
Extricate the last use of tu_image_*.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13359>
---
src/freedreno/vulkan/tu_clear_blit.c | 60 ++++++++++++++++++++----------------
1 file changed, 33 insertions(+), 27 deletions(-)
diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c
index f5690477af5..0d760c87b40 100644
--- a/src/freedreno/vulkan/tu_clear_blit.c
+++ b/src/freedreno/vulkan/tu_clear_blit.c
@@ -1761,48 +1761,45 @@ tu_copy_image_to_image(struct tu_cmd_buffer *cmd,
tu_image_view_copy(&dst, dst_image, dst_format, &info->dstSubresource, dst_offset.z, false);
tu_image_view_copy(&src, src_image, src_format, &info->srcSubresource, src_offset.z, false);
- struct tu_image staging_image = {
- .base.type = VK_OBJECT_TYPE_IMAGE,
- .vk_format = src_format,
- .level_count = 1,
- .layer_count = info->srcSubresource.layerCount,
- .bo_offset = 0,
- };
-
- VkImageSubresourceLayers staging_subresource = {
- .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
- .mipLevel = 0,
- .baseArrayLayer = 0,
- .layerCount = info->srcSubresource.layerCount,
- };
-
+ struct fdl_layout staging_layout = { 0 };
VkOffset3D staging_offset = { 0 };
- staging_image.layout[0].tile_mode = TILE6_LINEAR;
- staging_image.layout[0].ubwc = false;
+ staging_layout.tile_mode = TILE6_LINEAR;
+ staging_layout.ubwc = false;
- fdl6_layout(&staging_image.layout[0],
- vk_format_to_pipe_format(staging_image.vk_format),
+ fdl6_layout(&staging_layout,
+ vk_format_to_pipe_format(src_format),
src_image->layout[0].nr_samples,
extent.width,
extent.height,
extent.depth,
- staging_image.level_count,
- staging_image.layer_count,
+ 1,
+ info->srcSubresource.layerCount,
extent.depth > 1,
NULL);
+ struct tu_bo *staging_bo;
VkResult result = tu_get_scratch_bo(cmd->device,
- staging_image.layout[0].size,
- &staging_image.bo);
+ staging_layout.size,
+ &staging_bo);
if (result != VK_SUCCESS) {
cmd->record_result = result;
return;
}
struct fdl6_view staging;
- tu_image_view_copy(&staging, &staging_image, src_format,
- &staging_subresource, 0, false);
+ const struct fdl_layout *staging_layout_ptr = &staging_layout;
+ fdl6_view_init(&staging, &staging_layout_ptr, &(struct fdl_view_args) {
+ .iova = staging_bo->iova,
+ .base_array_layer = 0,
+ .layer_count = 1,
+ .base_miplevel = 0,
+ .level_count = info->srcSubresource.layerCount,
+ .format = tu_format_for_aspect(vk_format_to_pipe_format(src_format),
+ VK_IMAGE_ASPECT_COLOR_BIT),
+ .swiz = { PIPE_SWIZZLE_X, PIPE_SWIZZLE_Y, PIPE_SWIZZLE_Z, PIPE_SWIZZLE_W },
+ .type = FDL_VIEW_TYPE_2D,
+ }, false);
ops->setup(cmd, cs, src_format, VK_IMAGE_ASPECT_COLOR_BIT, 0, false, false,
dst_image->layout[0].nr_samples);
@@ -1821,8 +1818,17 @@ tu_copy_image_to_image(struct tu_cmd_buffer *cmd,
tu6_emit_event_write(cmd, cs, CACHE_INVALIDATE);
tu_cs_emit_wfi(cs);
- tu_image_view_copy(&staging, &staging_image, dst_format,
- &staging_subresource, 0, false);
+ fdl6_view_init(&staging, &staging_layout_ptr, &(struct fdl_view_args) {
+ .iova = staging_bo->iova,
+ .base_array_layer = 0,
+ .layer_count = 1,
+ .base_miplevel = 0,
+ .level_count = info->srcSubresource.layerCount,
+ .format = tu_format_for_aspect(vk_format_to_pipe_format(dst_format),
+ VK_IMAGE_ASPECT_COLOR_BIT),
+ .swiz = { PIPE_SWIZZLE_X, PIPE_SWIZZLE_Y, PIPE_SWIZZLE_Z, PIPE_SWIZZLE_W },
+ .type = FDL_VIEW_TYPE_2D,
+ }, false);
ops->setup(cmd, cs, dst_format, info->dstSubresource.aspectMask,
0, false, dst_image->layout[0].ubwc,
More information about the mesa-commit
mailing list