mirror of
https://github.com/mpv-player/mpv
synced 2024-12-29 02:22:19 +00:00
4b177bd5c2
Semi-important, because --hwdec=dxva2 outputs NV12, and we really don't want people to end up with the "old" StretchRect method. Unfortunately, I couldn't actually get it to work. It seems most D3D drivers (including the wine D3D implementation) reject D3DFMT_A8L8, and I could not find any other 2-channel 8 bit Direct3D 9 format. It seems newer D3D APIs have DXGI_FORMAT_R8G8_UNORM, but there's no way to get it in D3D9. Still pushing this; maybe it actually works on some drivers.
124 lines
3.5 KiB
C
124 lines
3.5 KiB
C
#if 0
|
|
//
|
|
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
|
|
//
|
|
// fxc /Tps_2_0 -DUSE_NV12=1 /Fhd3d_shader_nv12.h d3d_shader_yuv.hlsl
|
|
// /Vnd3d_shader_nv12
|
|
//
|
|
//
|
|
// Parameters:
|
|
//
|
|
// float4x4 colormatrix;
|
|
// sampler2D tex0;
|
|
// sampler2D tex1;
|
|
//
|
|
//
|
|
// Registers:
|
|
//
|
|
// Name Reg Size
|
|
// ------------ ----- ----
|
|
// colormatrix c0 4
|
|
// tex0 s0 1
|
|
// tex1 s1 1
|
|
//
|
|
|
|
ps_2_0
|
|
def c4, 1, 0, 0, 0
|
|
dcl t0.xy
|
|
dcl t1.xy
|
|
dcl_2d s0
|
|
dcl_2d s1
|
|
texld r0, t0, s0
|
|
texld r1, t1, s1
|
|
mov r0.y, r1.x
|
|
mov r0.z, r1.z
|
|
mov r0.w, c4.x
|
|
dp4 r1.x, r0, c0
|
|
dp4 r1.y, r0, c1
|
|
dp4 r1.z, r0, c2
|
|
dp4 r1.w, r0, c3
|
|
mov oC0, r1
|
|
|
|
// approximately 10 instruction slots used (2 texture, 8 arithmetic)
|
|
#endif
|
|
|
|
const BYTE d3d_shader_nv12[] =
|
|
{
|
|
0, 2, 255, 255, 254, 255,
|
|
56, 0, 67, 84, 65, 66,
|
|
28, 0, 0, 0, 171, 0,
|
|
0, 0, 0, 2, 255, 255,
|
|
3, 0, 0, 0, 28, 0,
|
|
0, 0, 0, 1, 0, 0,
|
|
164, 0, 0, 0, 88, 0,
|
|
0, 0, 2, 0, 0, 0,
|
|
4, 0, 2, 0, 100, 0,
|
|
0, 0, 0, 0, 0, 0,
|
|
116, 0, 0, 0, 3, 0,
|
|
0, 0, 1, 0, 2, 0,
|
|
124, 0, 0, 0, 0, 0,
|
|
0, 0, 140, 0, 0, 0,
|
|
3, 0, 1, 0, 1, 0,
|
|
6, 0, 148, 0, 0, 0,
|
|
0, 0, 0, 0, 99, 111,
|
|
108, 111, 114, 109, 97, 116,
|
|
114, 105, 120, 0, 3, 0,
|
|
3, 0, 4, 0, 4, 0,
|
|
1, 0, 0, 0, 0, 0,
|
|
0, 0, 116, 101, 120, 48,
|
|
0, 171, 171, 171, 4, 0,
|
|
12, 0, 1, 0, 1, 0,
|
|
1, 0, 0, 0, 0, 0,
|
|
0, 0, 116, 101, 120, 49,
|
|
0, 171, 171, 171, 4, 0,
|
|
12, 0, 1, 0, 1, 0,
|
|
1, 0, 0, 0, 0, 0,
|
|
0, 0, 112, 115, 95, 50,
|
|
95, 48, 0, 77, 105, 99,
|
|
114, 111, 115, 111, 102, 116,
|
|
32, 40, 82, 41, 32, 72,
|
|
76, 83, 76, 32, 83, 104,
|
|
97, 100, 101, 114, 32, 67,
|
|
111, 109, 112, 105, 108, 101,
|
|
114, 32, 57, 46, 50, 57,
|
|
46, 57, 53, 50, 46, 51,
|
|
49, 49, 49, 0, 81, 0,
|
|
0, 5, 4, 0, 15, 160,
|
|
0, 0, 128, 63, 0, 0,
|
|
0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 31, 0,
|
|
0, 2, 0, 0, 0, 128,
|
|
0, 0, 3, 176, 31, 0,
|
|
0, 2, 0, 0, 0, 128,
|
|
1, 0, 3, 176, 31, 0,
|
|
0, 2, 0, 0, 0, 144,
|
|
0, 8, 15, 160, 31, 0,
|
|
0, 2, 0, 0, 0, 144,
|
|
1, 8, 15, 160, 66, 0,
|
|
0, 3, 0, 0, 15, 128,
|
|
0, 0, 228, 176, 0, 8,
|
|
228, 160, 66, 0, 0, 3,
|
|
1, 0, 15, 128, 1, 0,
|
|
228, 176, 1, 8, 228, 160,
|
|
1, 0, 0, 2, 0, 0,
|
|
2, 128, 1, 0, 0, 128,
|
|
1, 0, 0, 2, 0, 0,
|
|
4, 128, 1, 0, 170, 128,
|
|
1, 0, 0, 2, 0, 0,
|
|
8, 128, 4, 0, 0, 160,
|
|
9, 0, 0, 3, 1, 0,
|
|
1, 128, 0, 0, 228, 128,
|
|
0, 0, 228, 160, 9, 0,
|
|
0, 3, 1, 0, 2, 128,
|
|
0, 0, 228, 128, 1, 0,
|
|
228, 160, 9, 0, 0, 3,
|
|
1, 0, 4, 128, 0, 0,
|
|
228, 128, 2, 0, 228, 160,
|
|
9, 0, 0, 3, 1, 0,
|
|
8, 128, 0, 0, 228, 128,
|
|
3, 0, 228, 160, 1, 0,
|
|
0, 2, 0, 8, 15, 128,
|
|
1, 0, 228, 128, 255, 255,
|
|
0, 0
|
|
};
|