[vlc-devel] [PATCH 01/22] direct3d11: only change the pixel shader if the first output texture is DXGI_FORMAT_R8_UNORM
Steve Lhomme
robux4 at gmail.com
Fri Jul 31 16:54:45 CEST 2015
---
modules/video_output/msw/direct3d11.c | 44 ++++++++++++++++++-----------------
1 file changed, 23 insertions(+), 21 deletions(-)
diff --git a/modules/video_output/msw/direct3d11.c b/modules/video_output/msw/direct3d11.c
index 3acc4b6..f618d96 100644
--- a/modules/video_output/msw/direct3d11.c
+++ b/modules/video_output/msw/direct3d11.c
@@ -1092,29 +1092,31 @@ static int Direct3D11Open(vout_display_t *vd, video_format_t *fmt)
sys->d3dregion_format = DXGI_FORMAT_UNKNOWN;
}
- switch (fmt->i_chroma)
+ sys->d3dPxShader = globPixelShaderDefault;
+ if (sys->picQuadConfig.resourceFormatYRGB == DXGI_FORMAT_R8_UNORM)
{
- case VLC_CODEC_NV12:
- case VLC_CODEC_D3D11_OPAQUE:
- if( fmt->i_height > 576 )
- sys->d3dPxShader = globPixelShaderBiplanarYUV_BT709_2RGB;
- else
- sys->d3dPxShader = globPixelShaderBiplanarYUV_BT601_2RGB;
- break;
- case VLC_CODEC_YV12:
- case VLC_CODEC_I420:
- if( fmt->i_height > 576 )
- sys->d3dPxShader = globPixelShaderBiplanarI420_BT709_2RGB;
- else
- sys->d3dPxShader = globPixelShaderBiplanarI420_BT601_2RGB;
- break;
- case VLC_CODEC_RGB32:
- case VLC_CODEC_BGRA:
- case VLC_CODEC_RGB16:
- default:
- sys->d3dPxShader = globPixelShaderDefault;
- break;
+ switch (fmt->i_chroma)
+ {
+ case VLC_CODEC_NV12:
+ case VLC_CODEC_D3D11_OPAQUE:
+ if( fmt->i_height > 576 )
+ sys->d3dPxShader = globPixelShaderBiplanarYUV_BT709_2RGB;
+ else
+ sys->d3dPxShader = globPixelShaderBiplanarYUV_BT601_2RGB;
+ break;
+ case VLC_CODEC_YV12:
+ case VLC_CODEC_I420:
+ if( fmt->i_height > 576 )
+ sys->d3dPxShader = globPixelShaderBiplanarI420_BT709_2RGB;
+ else
+ sys->d3dPxShader = globPixelShaderBiplanarI420_BT601_2RGB;
+ break;
+ default:
+ vlc_assert_unreachable();
+ break;
+ }
}
+
if (sys->d3dregion_format != DXGI_FORMAT_UNKNOWN)
sys->psz_rgbaPxShader = globPixelShaderDefault;
else
--
2.4.2
More information about the vlc-devel
mailing list