On Thu, Sep 6, 2018 at 3:40 PM Julien Isorce <julien.iso...@gmail.com> wrote: > > Useful when video decoders only support NV12. Currently > glamor Xv only supports I420 and YV12. > > Note that Intel's sna supports I420, YV12, YUY2, UYVY, NV12. > > Test: xvinfo | grep NV12 > Test: gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12 ! xvimagesink > > Signed-off-by: Julien Isorce <jiso...@oblong.com> > --- > glamor/glamor_xv.c | 180 > +++++++++++++++++++++++++++++++++++++++++++++-------- > 1 file changed, 155 insertions(+), 25 deletions(-) > > diff --git a/glamor/glamor_xv.c b/glamor/glamor_xv.c > index 62fc4ff..5631293 100644 > --- a/glamor/glamor_xv.c > +++ b/glamor/glamor_xv.c > @@ -59,8 +59,40 @@ typedef struct tagREF_TRANSFORM { > #define RTFContrast(a) (1.0 + ((a)*1.0)/1000.0) > #define RTFHue(a) (((a)*3.1416)/1000.0) > > -static const glamor_facet glamor_facet_xv_planar = { > - .name = "xv_planar", > +static const glamor_facet glamor_facet_xv_planar_2 = { > + .name = "xv_planar_2", > + > + .version = 120, > + > + .source_name = "v_texcoord0", > + .vs_vars = ("attribute vec2 position;\n" > + "attribute vec2 v_texcoord0;\n" > + "varying vec2 tcs;\n"), > + .vs_exec = (GLAMOR_POS(gl_Position, position) > + " tcs = v_texcoord0;\n"), > + > + .fs_vars = ("uniform sampler2D y_sampler;\n" > + "uniform sampler2D u_sampler;\n" > + "uniform vec4 offsetyco;\n" > + "uniform vec4 ucogamma;\n" > + "uniform vec4 vco;\n" > + "varying vec2 tcs;\n"), > + .fs_exec = ( > + " float sample;\n" > + " vec4 temp1;\n" > + " sample = texture2D(y_sampler, tcs).w;\n" > + " temp1.xyz = offsetyco.www * vec3(sample) + > offsetyco.xyz;\n" > + " sample = texture2D(u_sampler, tcs).x;\n" > + " temp1.xyz = ucogamma.xyz * vec3(sample) + > temp1.xyz;\n" > + " sample = texture2D(u_sampler, tcs).y;\n"
Might as well combine the two texture2Ds on u_sampler. I expect most GLSL compilers will be able to combine them into one operation, but there's no point in leaving it to chance. _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel