[vlc-commits] direct3d11: support RGBA64 playback
Steve Lhomme
git at videolan.org
Fri Aug 3 08:08:16 CEST 2018
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Fri Aug 3 08:03:11 2018 +0200| [35b5b77fd87fc9aa43ecf0d1a083bb7007124434] | committer: Steve Lhomme
direct3d11: support RGBA64 playback
This is the best option to display software RGB sources above 8 bits.
Ref #19563 which wouldn't play on 4.0 otherwise
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=35b5b77fd87fc9aa43ecf0d1a083bb7007124434
---
modules/video_chroma/dxgi_fmt.c | 1 +
modules/video_output/win32/d3d11_quad.c | 1 +
modules/video_output/win32/d3d11_shaders.c | 2 ++
3 files changed, 4 insertions(+)
diff --git a/modules/video_chroma/dxgi_fmt.c b/modules/video_chroma/dxgi_fmt.c
index a6a6e2d485..2138cf6f4e 100644
--- a/modules/video_chroma/dxgi_fmt.c
+++ b/modules/video_chroma/dxgi_fmt.c
@@ -85,6 +85,7 @@ static const d3d_format_t d3d_formats[] = {
{ "R8G8B8A8", DXGI_FORMAT_R8G8B8A8_UNORM, VLC_CODEC_RGBA, 8, 1, 1, { DXGI_FORMAT_R8G8B8A8_UNORM } },
{ "VA_RGBA", DXGI_FORMAT_R8G8B8A8_UNORM, VLC_CODEC_D3D11_OPAQUE_RGBA, 8, 1, 1, { DXGI_FORMAT_R8G8B8A8_UNORM } },
{ "R8G8B8X8", DXGI_FORMAT_B8G8R8X8_UNORM, VLC_CODEC_RGB32, 8, 1, 1, { DXGI_FORMAT_B8G8R8X8_UNORM } },
+ { "RGBA64", DXGI_FORMAT_R16G16B16A16_UNORM, VLC_CODEC_RGBA64, 16, 1, 1, { DXGI_FORMAT_R16G16B16A16_UNORM } },
{ "RGB10A2", DXGI_FORMAT_R10G10B10A2_UNORM, VLC_CODEC_RGBA10, 10, 1, 1, { DXGI_FORMAT_R10G10B10A2_UNORM } },
{ "VA_RGB10", DXGI_FORMAT_R10G10B10A2_UNORM, VLC_CODEC_D3D11_OPAQUE_RGBA, 10, 1, 1, { DXGI_FORMAT_R10G10B10A2_UNORM } },
{ "AYUV", DXGI_FORMAT_AYUV, VLC_CODEC_VUYA, 8, 1, 1, { DXGI_FORMAT_R8G8B8A8_UNORM } },
diff --git a/modules/video_output/win32/d3d11_quad.c b/modules/video_output/win32/d3d11_quad.c
index ca96883127..871dc5c644 100644
--- a/modules/video_output/win32/d3d11_quad.c
+++ b/modules/video_output/win32/d3d11_quad.c
@@ -865,6 +865,7 @@ void D3D11_UpdateViewport(d3d_quad_t *quad, const RECT *rect, const d3d_format_t
case DXGI_FORMAT_B8G8R8X8_UNORM:
case DXGI_FORMAT_B5G6R5_UNORM:
case DXGI_FORMAT_R10G10B10A2_UNORM:
+ case DXGI_FORMAT_R16G16B16A16_UNORM:
if ( display->formatTexture == DXGI_FORMAT_NV12 ||
display->formatTexture == DXGI_FORMAT_P010 )
{
diff --git a/modules/video_output/win32/d3d11_shaders.c b/modules/video_output/win32/d3d11_shaders.c
index aba7bcabec..70ff73c933 100644
--- a/modules/video_output/win32/d3d11_shaders.c
+++ b/modules/video_output/win32/d3d11_shaders.c
@@ -303,6 +303,7 @@ HRESULT D3D11_CompilePixelShader(vlc_object_t *o, d3d11_handle_t *hd3d, bool leg
case DXGI_FORMAT_B8G8R8A8_UNORM:
case DXGI_FORMAT_B8G8R8X8_UNORM:
case DXGI_FORMAT_R10G10B10A2_UNORM:
+ case DXGI_FORMAT_R16G16B16A16_UNORM:
case DXGI_FORMAT_B5G6R5_UNORM:
/* Y */
psz_sampler[0] =
@@ -371,6 +372,7 @@ HRESULT D3D11_CompilePixelShader(vlc_object_t *o, d3d11_handle_t *hd3d, bool leg
case DXGI_FORMAT_B8G8R8A8_UNORM:
case DXGI_FORMAT_B8G8R8X8_UNORM:
case DXGI_FORMAT_R10G10B10A2_UNORM:
+ case DXGI_FORMAT_R16G16B16A16_UNORM:
case DXGI_FORMAT_B5G6R5_UNORM:
psz_sampler[0] =
"sample = shaderTexture[0].Sample(samplerState, coords);";
More information about the vlc-commits
mailing list