From c11c07847dfb2c0cc3febaeeb87d8ca57cff9059 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 Part-of: (cherry picked from commit 4d22427079ed7b358baa7ac36cc2fb8bb01c070f) --- .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 c6f37bad8df..6800b07b064 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2174,7 +2174,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 fcde7b4b692..deaa3a3604d 100644 --- a/src/vulkan/runtime/vk_video.c +++ b/src/vulkan/runtime/vk_video.c @@ -783,23 +783,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");