From dd30f0d7ac60ab6e7104374c5dbeb3ed9d526760 Mon Sep 17 00:00:00 2001 From: Silvio Vilerino Date: Sun, 30 Nov 2025 09:31:26 -0500 Subject: [PATCH] d3d12: Add video encode bitstream buffer full frame size check in get_feedback Reviewed-by: Pohsiang (John) Hsu Part-of: --- src/gallium/drivers/d3d12/d3d12_video_enc.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gallium/drivers/d3d12/d3d12_video_enc.cpp b/src/gallium/drivers/d3d12/d3d12_video_enc.cpp index 6582879ea5f..b1dc261c750 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_enc.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_enc.cpp @@ -4829,6 +4829,16 @@ d3d12_video_encoder_get_feedback(struct pipe_video_codec *codec, opt_metadata.codec_unit_metadata[i].size); } + if ((pD3D12Enc->m_spEncodedFrameMetadata[current_metadata_slot].SubregionNotificationMode == D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME) && + (*output_buffer_size >= pD3D12Enc->m_spEncodedFrameMetadata[current_metadata_slot].comp_bit_destinations[0/*first slice*/]->width0)) + { + debug_printf("[d3d12_video_encoder_get_feedback] Warning: Encoded bitstream size %d exceeds the allocated output buffer size %d\n", + *output_buffer_size, + pD3D12Enc->m_spEncodedFrameMetadata[current_metadata_slot].comp_bit_destinations[0/*first slice*/]->width0); + opt_metadata.encode_result |= PIPE_VIDEO_FEEDBACK_METADATA_ENCODE_FLAG_MAX_FRAME_SIZE_OVERFLOW; + assert(false); + } + pD3D12Enc->m_spEncodedFrameMetadata[current_metadata_slot].bRead = true; }