From f2bb4e0743907cd1290aa1127acd89eadc4e2b49 Mon Sep 17 00:00:00 2001 From: Sil Vilerino Date: Tue, 3 Sep 2024 11:48:09 -0400 Subject: [PATCH] d3d12: Video Encode H264 - Workaround for D3D12 validation bug requiring pRefPicMarkingOperationsCommands for IDR frames Fixes: 0249f2e6528 ("d3d12: Video Encode H264 - Support direct mmco operations") Part-of: --- .../d3d12/d3d12_video_encoder_references_manager_h264.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_h264.cpp b/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_h264.cpp index 12498c7d757..f1b2ce93b2a 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_h264.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_h264.cpp @@ -391,6 +391,11 @@ d3d12_video_encoder_references_manager_h264::begin_frame(D3D12_VIDEO_ENCODER_PIC // assume that the client is attempting to set the H264 slice header long_term_reference_flag and will do so in // the output bitstream for such EncodeFrame call. m_curFrameState.adaptive_ref_pic_marking_mode_flag = 1; + + // Workaround for D3D12 validation bug requiring pRefPicMarkingOperationsCommands for IDR frames + m_curFrameState.RefPicMarkingOperationsCommandsCount = 1u; + m_CurrentFrameReferencesData.pMemoryOps.resize(m_curFrameState.RefPicMarkingOperationsCommandsCount); + m_curFrameState.pRefPicMarkingOperationsCommands = m_CurrentFrameReferencesData.pMemoryOps.data(); } ///