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(); } ///