[vlc-commits] direct3d11: support VLC_CODEC_I420_10L direct rendering
Steve Lhomme
git at videolan.org
Thu Feb 15 16:40:05 CET 2018
vlc/vlc-3.0 | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Thu Feb 15 16:04:09 2018 +0100| [23685a9870bc7a9e041470cd2dad75536221221c] | committer: Thomas Guillem
direct3d11: support VLC_CODEC_I420_10L direct rendering
(cherry picked from commit f4f3394f3b8fc0e5006ca4b4cc39042bb89a0cc7)
Signed-off-by: Thomas Guillem <thomas at gllm.fr>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=23685a9870bc7a9e041470cd2dad75536221221c
---
modules/video_chroma/dxgi_fmt.c | 1 +
modules/video_output/win32/direct3d11.c | 17 ++++++++++++-----
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/modules/video_chroma/dxgi_fmt.c b/modules/video_chroma/dxgi_fmt.c
index e15664245f..cca20680b3 100644
--- a/modules/video_chroma/dxgi_fmt.c
+++ b/modules/video_chroma/dxgi_fmt.c
@@ -79,6 +79,7 @@ static const d3d_format_t d3d_formats[] = {
{ "NV11", DXGI_FORMAT_NV11, VLC_CODEC_I411, 8, 4, 1, { DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM} },
#endif
{ "I420", DXGI_FORMAT_UNKNOWN, VLC_CODEC_I420, 8, 2, 2, { DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM } },
+ { "I420_10", DXGI_FORMAT_UNKNOWN, VLC_CODEC_I420_10L, 10, 2, 2, { DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_UNORM } },
{ "B8G8R8A8", DXGI_FORMAT_B8G8R8A8_UNORM, VLC_CODEC_BGRA, 8, 1, 1, { DXGI_FORMAT_B8G8R8A8_UNORM } },
{ "VA_BGRA", DXGI_FORMAT_B8G8R8A8_UNORM, VLC_CODEC_D3D11_OPAQUE, 8, 1, 1, { DXGI_FORMAT_B8G8R8A8_UNORM } },
{ "R8G8B8A8", DXGI_FORMAT_R8G8B8A8_UNORM, VLC_CODEC_RGBA, 8, 1, 1, { DXGI_FORMAT_R8G8B8A8_UNORM } },
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 264cd12427..c8d1092507 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -1778,11 +1778,18 @@ static HRESULT CompilePixelShader(vout_display_t *vd, const d3d_format_t *format
"sample = shaderTexture[0].Sample(samplerState, coords);";
break;
case DXGI_FORMAT_UNKNOWN:
- psz_sampler =
- "sample.x = shaderTexture[0].Sample(samplerState, coords).x;\
- sample.y = shaderTexture[1].Sample(samplerState, coords).x;\
- sample.z = shaderTexture[2].Sample(samplerState, coords).x;\
- sample.a = 1;";
+ if (format->fourcc == VLC_CODEC_I420_10L)
+ psz_sampler =
+ "sample.x = shaderTexture[0].Sample(samplerState, coords).x * 64;\
+ sample.y = shaderTexture[1].Sample(samplerState, coords).x * 64;\
+ sample.z = shaderTexture[2].Sample(samplerState, coords).x * 64;\
+ sample.a = 1;";
+ else
+ psz_sampler =
+ "sample.x = shaderTexture[0].Sample(samplerState, coords).x;\
+ sample.y = shaderTexture[1].Sample(samplerState, coords).x;\
+ sample.z = shaderTexture[2].Sample(samplerState, coords).x;\
+ sample.a = 1;";
break;
default:
vlc_assert_unreachable();
More information about the vlc-commits
mailing list