Browse Source

direct3d11: only send the HDR metadata when they change

Newer Windows issue this warning if we send metadata with each picture:

DXGI WARNING: IDXGISwapChain4::SetHDRMetaData: Redundant invocation on unchanged
metadata could result in presentation performance inefficiency. [ MISCELLANEOUS WARNING #295: ]
pull/104/head
Steve Lhomme 6 years ago
parent
commit
269540817f
  1. 8
      modules/video_output/win32/d3d11_swapchain.c

8
modules/video_output/win32/d3d11_swapchain.c

@ -80,6 +80,7 @@ struct d3d11_local_swapchain
#endif /* !VLC_WINSTORE_APP */
IDXGISwapChain1 *dxgiswapChain; /* DXGI 1.2 swap chain */
IDXGISwapChain4 *dxgiswapChain4; /* DXGI 1.5 for HDR metadata */
DXGI_HDR_METADATA_HDR10 hdr10;
ID3D11RenderTargetView *swapchainTargetView[D3D11_MAX_RENDER_TARGET];
@ -531,7 +532,12 @@ void LocalSwapchainSetMetadata( void *opaque, libvlc_video_metadata_type_t type,
hdr10.MaxMasteringLuminance = p_hdr10->MaxMasteringLuminance;
hdr10.MaxContentLightLevel = p_hdr10->MaxContentLightLevel;
hdr10.MaxFrameAverageLightLevel = p_hdr10->MaxFrameAverageLightLevel;
IDXGISwapChain4_SetHDRMetaData( display->dxgiswapChain4, DXGI_HDR_METADATA_TYPE_HDR10, sizeof( hdr10 ), &hdr10 );
if (memcmp(&display->hdr10, &hdr10, sizeof(hdr10)))
{
memcpy(&display->hdr10, &hdr10, sizeof(hdr10));
IDXGISwapChain4_SetHDRMetaData( display->dxgiswapChain4, DXGI_HDR_METADATA_TYPE_HDR10,
sizeof( &display->hdr10 ), &display->hdr10 );
}
}
}

Loading…
Cancel
Save