[vlc-commits] [Git][videolan/vlc][master] d3d11: add support for rendering YV12 pictures
Jean-Baptiste Kempf (@jbk)
gitlab at videolan.org
Thu Oct 15 10:39:28 UTC 2026
Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC
Commits:
d921342a by Steve Lhomme at 2026-10-15T12:30:19+02:00
d3d11: add support for rendering YV12 pictures
YV12 is just like I420 with the V and U planes switched.
- - - - -
2 changed files:
- modules/video_chroma/dxgi_fmt.c
- modules/video_output/win32/d3d_dynamic_shader.c
Changes:
=====================================
modules/video_chroma/dxgi_fmt.c
=====================================
@@ -84,6 +84,7 @@ static const d3d_format_t d3d_formats[] = {
{ "NV11", DXGI_FORMAT_NV11, DXGI_FORMAT_UNKNOWN, VLC_CODEC_I411, 8, 4, 1, 0, 1, { DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM} },
#endif
{ "I420", DXGI_FORMAT_UNKNOWN,DXGI_FORMAT_UNKNOWN, VLC_CODEC_I420, 8, 2, 2, 0, 1, { DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM } },
+ { "YV12", DXGI_FORMAT_UNKNOWN,DXGI_FORMAT_UNKNOWN, VLC_CODEC_YV12, 8, 2, 2, 0, 1, { DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM } },
{ "I420_10", DXGI_FORMAT_UNKNOWN,DXGI_FORMAT_UNKNOWN, VLC_CODEC_I420_10L, 10, 2, 2, 0, 1, { DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_UNORM } },
{ "I40A", DXGI_FORMAT_UNKNOWN,DXGI_FORMAT_UNKNOWN, VLC_CODEC_YUV420A, 8, 2, 2, 8, 1, { DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM } },
{ "I422_10", DXGI_FORMAT_UNKNOWN,DXGI_FORMAT_UNKNOWN, VLC_CODEC_I422_10L, 10, 2, 1, 0, 1 << 6, { DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_R16_UNORM } },
=====================================
modules/video_output/win32/d3d_dynamic_shader.c
=====================================
@@ -75,6 +75,7 @@ struct PS_INPUT\n\
#define SAMPLE_AYUV_TO_YUVA 5\n\
#define SAMPLE_RGBA_TO_RGBA 6\n\
#define SAMPLE_TRIPLANAR_TO_YUVA 7\n\
+#define SAMPLE_TRIPLANARVU_TO_YUVA 18\n\
#define SAMPLE_TRIPLANAR10_TO_YUVA 8\n\
#define SAMPLE_PLANAR_YUVA_TO_YUVA 9\n\
#define SAMPLE_BGRX_TO_RGBA 17\n\
@@ -207,6 +208,11 @@ inline float4 sampleTexture(SamplerState samplerState, float2 coords) {\n\
sample.y = shaderTexture[1].Sample(samplerState, coords).x;\n\
sample.z = shaderTexture[2].Sample(samplerState, coords).x;\n\
sample.a = 1;\n\
+#elif (SAMPLE_TEXTURES==SAMPLE_TRIPLANARVU_TO_YUVA)\n\
+ sample.x = shaderTexture[0].Sample(samplerState, coords).x;\n\
+ sample.y = shaderTexture[2].Sample(samplerState, coords).x;\n\
+ sample.z = shaderTexture[1].Sample(samplerState, coords).x;\n\
+ sample.a = 1;\n\
#elif (SAMPLE_TEXTURES==SAMPLE_TRIPLANAR10_TO_YUVA)\n\
sample.x = shaderTexture[0].Sample(samplerState, coords).x;\n\
sample.y = shaderTexture[1].Sample(samplerState, coords).x;\n\
@@ -539,6 +545,10 @@ HRESULT (D3D_CompilePixelShader)(vlc_object_t *o,
psz_sampler[0] = "SAMPLE_TRIPLANAR_TO_YUVA";
psz_shader_resource_views[0] = "3"; shader_views[0] = 3;
break;
+ case VLC_CODEC_YV12:
+ psz_sampler[0] = "SAMPLE_TRIPLANARVU_TO_YUVA";
+ psz_shader_resource_views[0] = "3"; shader_views[0] = 3;
+ break;
case VLC_CODEC_YUVA:
case VLC_CODEC_YUV420A:
psz_sampler[0] = "SAMPLE_PLANAR_YUVA_TO_YUVA";
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/d921342a58297863cd3e5aa84509e42bf046bd8d
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/d921342a58297863cd3e5aa84509e42bf046bd8d
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help
More information about the vlc-commits
mailing list