radv/uvd: uvd kernel checks for full dpb allocation.
The CTS image allocation sometimes doesn't try to allocate a complete DPB, but the amdgpu kernel module checks for this, so always make the DPB max sized on uvd instances. Fixes part of video decode on Fiji/Polaris Cc: mesa-stable Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27186> (cherry picked from commit df9bc11589bb855629243248b167af663e18a4c0)
This commit is contained in:
parent
4c25e80e6c
commit
c47dbea2a0
2 changed files with 6 additions and 1 deletions
|
|
@ -754,7 +754,7 @@
|
||||||
"description": "radv/uvd: uvd kernel checks for full dpb allocation.",
|
"description": "radv/uvd: uvd kernel checks for full dpb allocation.",
|
||||||
"nominated": true,
|
"nominated": true,
|
||||||
"nomination_type": 0,
|
"nomination_type": 0,
|
||||||
"resolution": 0,
|
"resolution": 1,
|
||||||
"main_sha": null,
|
"main_sha": null,
|
||||||
"because_sha": null,
|
"because_sha": null,
|
||||||
"notes": null
|
"notes": null
|
||||||
|
|
|
||||||
|
|
@ -1075,6 +1075,11 @@ radv_image_create_layout(struct radv_device *device, struct radv_image_create_in
|
||||||
radv_video_get_profile_alignments(device->physical_device, profile_list, &width_align, &height_align);
|
radv_video_get_profile_alignments(device->physical_device, profile_list, &width_align, &height_align);
|
||||||
image_info.width = align(image_info.width, width_align);
|
image_info.width = align(image_info.width, width_align);
|
||||||
image_info.height = align(image_info.height, height_align);
|
image_info.height = align(image_info.height, height_align);
|
||||||
|
|
||||||
|
if (radv_has_uvd(device->physical_device) && image->vk.usage & VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR) {
|
||||||
|
/* UVD and kernel demand a full DPB allocation. */
|
||||||
|
image_info.array_size = MIN2(16, image_info.array_size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned plane_count = radv_get_internal_plane_count(device->physical_device, image->vk.format);
|
unsigned plane_count = radv_get_internal_plane_count(device->physical_device, image->vk.format);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue