Commit 1d8905ec authored by Steve Lhomme's avatar Steve Lhomme Committed by Jean-Baptiste Kempf

direct3d11: implement the pixel format fallback

NV12 is not supported in Windows 7 [1] so we need to fallback to RGBA

1: https://msdn.microsoft.com/en-us/library/windows/desktop/bb173059%28v=vs.85%29.aspx#DXGI_FORMAT_NV12Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent a5217fb8
...@@ -192,10 +192,6 @@ static int Open(vlc_object_t *object) ...@@ -192,10 +192,6 @@ static int Open(vlc_object_t *object)
if (CommonInit(vd)) if (CommonInit(vd))
goto error; goto error;
/* TODO : A fallback system */
vd->sys->d3dFormat = d3d_formats[0].format;
vd->sys->vlcFormat = d3d_formats[0].fourcc;
video_format_t fmt; video_format_t fmt;
if (Direct3D11Open(vd, &fmt)) { if (Direct3D11Open(vd, &fmt)) {
msg_Err(vd, "Direct3D11 could not be opened"); msg_Err(vd, "Direct3D11 could not be opened");
...@@ -586,6 +582,25 @@ static int Direct3D11Open(vout_display_t *vd, video_format_t *fmt) ...@@ -586,6 +582,25 @@ static int Direct3D11Open(vout_display_t *vd, video_format_t *fmt)
# endif # endif
#endif #endif
for (unsigned i = 0; d3d_formats[i].name != 0; i++)
{
UINT i_formatSupport;
if( SUCCEEDED( ID3D11Device_CheckFormatSupport(sys->d3ddevice,
d3d_formats[i].format,
&i_formatSupport)) &&
( i_formatSupport & D3D11_FORMAT_SUPPORT_TEXTURE2D ))
{
msg_Dbg(vd, "Using pixel format %s", d3d_formats[i].name );
sys->d3dFormat = d3d_formats[i].format;
sys->vlcFormat = d3d_formats[i].fourcc;
break;
}
}
if ( !sys->vlcFormat ) {
msg_Err(vd, "Could not get a suitable texture pixel format");
return VLC_EGENERIC;
}
UpdateRects(vd, NULL, NULL, true); UpdateRects(vd, NULL, NULL, true);
if (Direct3D11CreateResources(vd, fmt)) { if (Direct3D11CreateResources(vd, fmt)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment