From dafde3434ab84dafa74bcbee31d8903a36b07dc4 Mon Sep 17 00:00:00 2001 From: Benjamin Cheng Date: Wed, 29 Oct 2025 14:41:00 -0400 Subject: [PATCH] vulkan/video: NULL check codec-specific chain It seems applications are allowed to do no-op updates by not passing any codec-specific extension structures. Cc: mesa-stable Reviewed-by: David Rosca (cherry picked from commit 4d22427079ed7b358baa7ac36cc2fb8bb01c070f) Part-of: --- .pick_status.json | 2 +- src/vulkan/runtime/vk_video.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 7dc8b9241ba..7d404a479b6 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -984,7 +984,7 @@ "description": "vulkan/video: NULL check codec-specific chain", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/vulkan/runtime/vk_video.c b/src/vulkan/runtime/vk_video.c index 42069745b2b..1942ed532ee 100644 --- a/src/vulkan/runtime/vk_video.c +++ b/src/vulkan/runtime/vk_video.c @@ -796,23 +796,30 @@ vk_video_session_parameters_update(struct vk_video_session_parameters *params, case VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR: { const struct VkVideoDecodeH264SessionParametersAddInfoKHR *h264_add = vk_find_struct_const(update->pNext, VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR); - return update_h264_dec_session_parameters(params, h264_add); + if (h264_add) + return update_h264_dec_session_parameters(params, h264_add); + break; } case VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR: { const struct VkVideoDecodeH265SessionParametersAddInfoKHR *h265_add = vk_find_struct_const(update->pNext, VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR); - - return update_h265_session_parameters(params, h265_add); + if (h265_add) + return update_h265_session_parameters(params, h265_add); + break; } case VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR: { const struct VkVideoEncodeH264SessionParametersAddInfoKHR *h264_add = vk_find_struct_const(update->pNext, VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR); - return update_h264_enc_session_parameters(params, h264_add); + if (h264_add) + return update_h264_enc_session_parameters(params, h264_add); + break; } case VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR: { const struct VkVideoEncodeH265SessionParametersAddInfoKHR *h265_add = vk_find_struct_const(update->pNext, VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR); - return update_h265_enc_session_parameters(params, h265_add); + if (h265_add) + return update_h265_enc_session_parameters(params, h265_add); + break; } default: UNREACHABLE("Unknown codec\n");