turnip: Store the computed iova in the tu_image.

Less of a big deal than for buffers, but let's be consistent in how we
handle our bindings.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14816>
This commit is contained in:
Emma Anholt 2022-01-31 21:32:30 -08:00 committed by Marge Bot
parent f460fb3f91
commit bf289e3123
5 changed files with 8 additions and 9 deletions

View File

@ -1224,7 +1224,7 @@ tu6_clear_lrz(struct tu_cmd_buffer *cmd,
VK_SAMPLE_COUNT_1_BIT);
ops->clear_value(cs, PIPE_FORMAT_Z16_UNORM, value);
ops->dst_buffer(cs, PIPE_FORMAT_Z16_UNORM,
image->bo->iova + image->bo_offset + image->lrz_offset,
image->iova + image->lrz_offset,
image->lrz_pitch * 2);
ops->coords(cs, &(VkOffset2D) {}, NULL, &(VkExtent2D) {image->lrz_pitch, image->lrz_height});
ops->run(cmd, cs);
@ -1252,7 +1252,7 @@ tu_image_view_copy_blit(struct fdl6_view *iview,
&image->layout[tu6_plane_index(image->vk_format, aspect_mask)];
fdl6_view_init(iview, &layout, &(struct fdl_view_args) {
.iova = image->bo->iova + image->bo_offset,
.iova = image->iova,
.base_array_layer = subres->baseArrayLayer + layer,
.layer_count = 1,
.base_miplevel = subres->mipLevel,

View File

@ -242,8 +242,7 @@ tu6_emit_zs(struct tu_cmd_buffer *cmd,
tu_cs_emit_pkt4(cs, REG_A6XX_RB_DEPTH_FLAG_BUFFER_BASE, 3);
tu_cs_image_flag_ref(cs, &iview->view, 0);
tu_cs_emit_regs(cs, A6XX_GRAS_LRZ_BUFFER_BASE(.bo = iview->image->bo,
.bo_offset = iview->image->bo_offset + iview->image->lrz_offset),
tu_cs_emit_regs(cs, A6XX_GRAS_LRZ_BUFFER_BASE(.qword = iview->image->iova + iview->image->lrz_offset),
A6XX_GRAS_LRZ_BUFFER_PITCH(.pitch = iview->image->lrz_pitch),
A6XX_GRAS_LRZ_FAST_CLEAR_BUFFER_BASE());

View File

@ -2287,10 +2287,10 @@ tu_BindImageMemory2(VkDevice device,
if (mem) {
image->bo = &mem->bo;
image->bo_offset = pBindInfos[i].memoryOffset;
image->iova = mem->bo.iova + pBindInfos[i].memoryOffset;
} else {
image->bo = NULL;
image->bo_offset = 0;
image->iova = 0;
}
}

View File

@ -184,7 +184,7 @@ tu_image_view_init(struct tu_image_view *iview,
}
struct fdl_view_args args = {};
args.iova = image->bo->iova + image->bo_offset;
args.iova = image->iova;
args.base_array_layer = range->baseArrayLayer;
args.base_miplevel = range->baseMipLevel;
args.layer_count = tu_get_layerCount(image, range);
@ -230,7 +230,7 @@ tu_image_view_init(struct tu_image_view *iview,
if (image->vk_format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
struct fdl_layout *layout = &image->layout[1];
iview->stencil_base_addr = image->bo->iova + image->bo_offset +
iview->stencil_base_addr = image->iova +
fdl_surface_offset(layout, range->baseMipLevel, range->baseArrayLayer);
iview->stencil_layer_size = fdl_layer_stride(layout, range->baseMipLevel);
iview->stencil_PITCH = A6XX_RB_STENCIL_BUFFER_PITCH(fdl_pitch(layout, range->baseMipLevel)).value;

View File

@ -1483,7 +1483,7 @@ struct tu_image
/* Set when bound */
struct tu_bo *bo;
VkDeviceSize bo_offset;
uint64_t iova;
uint32_t lrz_height;
uint32_t lrz_pitch;