From: Dave Airlie <[email protected]> This is needed to fixup some ordering issues with when memory is bound to images.
Signed-off-by: Dave Airlie <[email protected]> --- src/amd/vulkan/radv_cmd_buffer.c | 4 ++-- src/amd/vulkan/radv_descriptor_set.c | 2 +- src/amd/vulkan/radv_device.c | 12 ++++++------ src/amd/vulkan/radv_image.c | 1 - src/amd/vulkan/radv_private.h | 1 - 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 1783ddf..b37323b 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -800,7 +800,7 @@ radv_emit_framebuffer_state(struct radv_cmd_buffer *cmd_buffer) radv_set_optimal_micro_tile_mode(cmd_buffer->device, att, dst_resolve_micro_tile_mode); } - cmd_buffer->device->ws->cs_add_buffer(cmd_buffer->cs, att->attachment->bo, 8); + cmd_buffer->device->ws->cs_add_buffer(cmd_buffer->cs, att->attachment->image->bo, 8); assert(att->attachment->aspect_mask & VK_IMAGE_ASPECT_COLOR_BIT); radv_emit_fb_color_state(cmd_buffer, i, &att->cb); @@ -817,7 +817,7 @@ radv_emit_framebuffer_state(struct radv_cmd_buffer *cmd_buffer) VkImageLayout layout = subpass->depth_stencil_attachment.layout; struct radv_attachment_info *att = &framebuffer->attachments[idx]; struct radv_image *image = att->attachment->image; - cmd_buffer->device->ws->cs_add_buffer(cmd_buffer->cs, att->attachment->bo, 8); + cmd_buffer->device->ws->cs_add_buffer(cmd_buffer->cs, att->attachment->image->bo, 8); radv_emit_fb_ds_state(cmd_buffer, &att->ds, image, layout); diff --git a/src/amd/vulkan/radv_descriptor_set.c b/src/amd/vulkan/radv_descriptor_set.c index eb8b5d6..a4a12bf 100644 --- a/src/amd/vulkan/radv_descriptor_set.c +++ b/src/amd/vulkan/radv_descriptor_set.c @@ -618,7 +618,7 @@ write_image_descriptor(struct radv_device *device, RADV_FROM_HANDLE(radv_image_view, iview, image_info->imageView); memcpy(dst, iview->descriptor, 8 * 4); memcpy(dst + 8, iview->fmask_descriptor, 8 * 4); - *buffer_list = iview->bo; + *buffer_list = iview->image->bo; } static void diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 0a9373c..4c5e9c5 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -1376,17 +1376,17 @@ radv_initialise_color_surface(struct radv_device *device, memset(cb, 0, sizeof(*cb)); - va = device->ws->buffer_get_va(iview->bo) + iview->image->offset; + va = device->ws->buffer_get_va(iview->image->bo) + iview->image->offset; va += level_info->offset; cb->cb_color_base = va >> 8; /* CMASK variables */ - va = device->ws->buffer_get_va(iview->bo) + iview->image->offset; + va = device->ws->buffer_get_va(iview->image->bo) + iview->image->offset; va += iview->image->cmask.offset; cb->cb_color_cmask = va >> 8; cb->cb_color_cmask_slice = iview->image->cmask.slice_tile_max; - va = device->ws->buffer_get_va(iview->bo) + iview->image->offset; + va = device->ws->buffer_get_va(iview->image->bo) + iview->image->offset; va += iview->image->dcc_offset; cb->cb_dcc_base = va >> 8; @@ -1413,7 +1413,7 @@ radv_initialise_color_surface(struct radv_device *device, } if (iview->image->fmask.size) { - va = device->ws->buffer_get_va(iview->bo) + iview->image->offset + iview->image->fmask.offset; + va = device->ws->buffer_get_va(iview->image->bo) + iview->image->offset + iview->image->fmask.offset; if (device->instance->physicalDevice.rad_info.chip_class >= CIK) cb->cb_color_pitch |= S_028C64_FMASK_TILE_MAX(iview->image->fmask.pitch_in_pixels / 8 - 1); cb->cb_color_attrib |= S_028C74_FMASK_TILE_MODE_INDEX(iview->image->fmask.tile_mode_index); @@ -1537,7 +1537,7 @@ radv_initialise_ds_surface(struct radv_device *device, fprintf(stderr, "Invalid DB format: %d, disabling DB.\n", iview->vk_format); } - va = device->ws->buffer_get_va(iview->bo) + iview->image->offset; + va = device->ws->buffer_get_va(iview->image->bo) + iview->image->offset; s_offs = z_offs = va; z_offs += iview->image->surface.level[level].offset; s_offs += iview->image->surface.stencil_level[level].offset; @@ -1602,7 +1602,7 @@ radv_initialise_ds_surface(struct radv_device *device, /* Use all of the htile_buffer for depth if there's no stencil. */ ds->db_stencil_info |= S_028044_TILE_STENCIL_DISABLE(1); - va = device->ws->buffer_get_va(iview->bo) + iview->image->offset + + va = device->ws->buffer_get_va(iview->image->bo) + iview->image->offset + iview->image->htile.offset; ds->db_htile_data_base = va >> 8; ds->db_htile_surface = S_028ABC_FULL_CACHE(1); diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index b63792d..7e8b837 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -766,7 +766,6 @@ radv_image_view_init(struct radv_image_view *iview, unreachable("bad VkImageType"); } iview->image = image; - iview->bo = image->bo; iview->type = pCreateInfo->viewType; iview->vk_format = pCreateInfo->format; iview->aspect_mask = pCreateInfo->subresourceRange.aspectMask; diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 7f84bf9..cfb913f 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1019,7 +1019,6 @@ radv_init_metadata(struct radv_device *device, struct radv_image_view { struct radv_image *image; /**< VkImageViewCreateInfo::image */ - struct radeon_winsys_bo *bo; VkImageViewType type; VkImageAspectFlags aspect_mask; -- 2.7.4 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
