From 35874945b43eb1b41d527990d9cd802779d33a46 Mon Sep 17 00:00:00 2001 From: "Pohsiang (John) Hsu" Date: Tue, 25 Nov 2025 10:42:02 -0800 Subject: [PATCH] d3d12: Fix lack of flushing when encoding h264 with SVC Reviewed-by: Sil Vilerino Fixes: d9c2ccd5 ("d3d12: Video Encode - Do not flush on direct buffer maps") Part-of: --- src/gallium/drivers/d3d12/d3d12_video_enc.cpp | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/gallium/drivers/d3d12/d3d12_video_enc.cpp b/src/gallium/drivers/d3d12/d3d12_video_enc.cpp index c231247d42b..6582879ea5f 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_enc.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_enc.cpp @@ -4728,21 +4728,18 @@ d3d12_video_encoder_get_feedback(struct pipe_video_codec *codec, // // Flush copies in batch and wait on this CPU thread for GPU work completion // - - if (!d3d12_buffer_maps_directly(pD3D12Enc->m_spEncodedFrameMetadata[current_metadata_slot].comp_bit_destinations[0/*first slice*/])) { // If the buffer maps directly, the buffer_subdata is synchronous on unmap, no need to flush - struct pipe_fence_handle *pUploadGPUCompletionFence = NULL; - pD3D12Enc->base.context->flush(pD3D12Enc->base.context, - &pUploadGPUCompletionFence, - PIPE_FLUSH_ASYNC | PIPE_FLUSH_HINT_FINISH); - assert(pUploadGPUCompletionFence); - pD3D12Enc->m_pD3D12Screen->base.fence_finish(&pD3D12Enc->m_pD3D12Screen->base, - NULL, - pUploadGPUCompletionFence, - OS_TIMEOUT_INFINITE); - pD3D12Enc->m_pD3D12Screen->base.fence_reference(&pD3D12Enc->m_pD3D12Screen->base, - &pUploadGPUCompletionFence, - NULL); - } + struct pipe_fence_handle *pUploadGPUCompletionFence = NULL; + pD3D12Enc->base.context->flush(pD3D12Enc->base.context, + &pUploadGPUCompletionFence, + PIPE_FLUSH_ASYNC | PIPE_FLUSH_HINT_FINISH); + assert(pUploadGPUCompletionFence); + pD3D12Enc->m_pD3D12Screen->base.fence_finish(&pD3D12Enc->m_pD3D12Screen->base, + NULL, + pUploadGPUCompletionFence, + OS_TIMEOUT_INFINITE); + pD3D12Enc->m_pD3D12Screen->base.fence_reference(&pD3D12Enc->m_pD3D12Screen->base, + &pUploadGPUCompletionFence, + NULL); } }