From b550d78635c72c06749fbc076377fd70fbf196cd Mon Sep 17 00:00:00 2001 From: David Rosca Date: Fri, 18 Jul 2025 10:06:56 +0200 Subject: [PATCH] radv/video: Fix encode when using layered source image Found by inspection. Cc: mesa-stable Reviewed-by: Samuel Pitoiset Part-of: (cherry picked from commit 211dc09e0f54ae282611925b754cfc9d77f2c86c) --- .pick_status.json | 2 +- src/amd/vulkan/radv_video_enc.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 08d71c9402f..1868d422659 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1764,7 +1764,7 @@ "description": "radv/video: Fix encode when using layered source image", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_video_enc.c b/src/amd/vulkan/radv_video_enc.c index d7c6bf12b05..9b5b27cdbcb 100644 --- a/src/amd/vulkan/radv_video_enc.c +++ b/src/amd/vulkan/radv_video_enc.c @@ -1743,9 +1743,12 @@ radv_enc_params(struct radv_cmd_buffer *cmd_buffer, const VkVideoEncodeInfoKHR * struct radv_device *device = radv_cmd_buffer_device(cmd_buffer); const struct radv_physical_device *pdev = radv_device_physical(device); struct radeon_cmdbuf *cs = cmd_buffer->cs; + uint32_t array_idx = enc_info->srcPictureResource.baseArrayLayer + src_iv->vk.base_array_layer; uint64_t va = src_img->bindings[0].addr; - uint64_t luma_va = va + src_img->planes[0].surface.u.gfx9.surf_offset; - uint64_t chroma_va = va + src_img->planes[1].surface.u.gfx9.surf_offset; + uint64_t luma_va = va + src_img->planes[0].surface.u.gfx9.surf_offset + + array_idx * src_img->planes[0].surface.u.gfx9.surf_slice_size; + uint64_t chroma_va = va + src_img->planes[1].surface.u.gfx9.surf_offset + + array_idx * src_img->planes[1].surface.u.gfx9.surf_slice_size; uint32_t pic_type; unsigned int slot_idx = 0xffffffff; unsigned int max_layers = cmd_buffer->video.vid->rc_layer_control.max_num_temporal_layers;