vlc/vlc-3.0 | branch: master | Steve Lhomme <[email protected]> | 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 <[email protected]>

> 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();

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to