[Libva] [libva-intel-driver][PATCH] CSC: Remove average logic when saving NV12 surface on IVB+
Emil Velikov
emil.l.velikov at gmail.com
Sun Apr 10 22:42:22 UTC 2016
Hi Haihao,
On 7 April 2016 at 17:28, Xiang, Haihao <haihao.xiang at intel.com> wrote:
> This fixes the issue mentioned in https://bugs.freedesktop.org/show_bug.cgi?id=94845 on
> IVB+(except KBL)
>
>From a quick diff it seems that the post processing shaders/assembly
is identical between gen7 and gen8, correct ?
Obviously there are a few missing <1> (afaict they do not made any
difference) and a few missing files for gen8 but everything else is
just white space.
As such shouldn't one consolidate things ? Earlier gen do share a fair
bit, and if I have to wild guess I'd say things don't differ that much
between them and gen7+.
> diff --git a/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a b/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a
> index d302ed5..e4eb8e6 100644
> --- a/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a
> +++ b/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a
> @@ -460,30 +460,14 @@
> add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
>
> // U Averaging and Rounding, 8x2 top part
> - shr (8) uwBUFFER_5(0,0)<2> r[a0.2,0]<16;8,2>:uw 1:w
> - shr (8) uwBUFFER_5(1,0)<2> r[a0.2,32]<16;8,2>:uw 1:w
> - shr (8) uwBUFFER_5(2,0)<2> r[a0.2,64]<16;8,2>:uw 1:w
> - shr (8) uwBUFFER_5(3,0)<2> r[a0.2,96]<16;8,2>:uw 1:w
> -
> - add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2>
> - add.sat (8) r[a0.2,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw
> -
> - add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2>
> - add.sat (8) r[a0.2,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw
> -
> + add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
> + add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
> +
> // V Averaging and Rounding, 8x2 top part
> - shr (8) uwBUFFER_5(4,0)<2> r[a0.0,0]<16;8,2>:uw 1:w
> - shr (8) uwBUFFER_5(5,0)<2> r[a0.0,32]<16;8,2>:uw 1:w
> - shr (8) uwBUFFER_5(6,0)<2> r[a0.0,64]<16;8,2>:uw 1:w
> - shr (8) uwBUFFER_5(7,0)<2> r[a0.0,96]<16;8,2>:uw 1:w
> -
> - add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2>
> - add.sat (8) r[a0.0,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw
> -
> - add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2>
> - add.sat (8) r[a0.0,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw
> -
> - add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
> + add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
> + add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
> +
> + add (4) a0.0<1>:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
>
The addition of <1> in the above is unrelated to the rest of the
patch, isn't it ? Comparing against the gen8 we have a few more
missing. If refactoring things isn't an option (at least at the
moment), shouldn't one at least get those sorted as a separate
preparatory patch ?
-Emil
More information about the Libva
mailing list