vl/compositor: fix weave shader bugs
authorMaarten Lankhorst <maarten.lankhorst@canonical.com>
Tue, 18 Dec 2012 12:13:01 +0000 (13:13 +0100)
committerMaarten Lankhorst <maarten.lankhorst@canonical.com>
Wed, 16 Jan 2013 16:22:45 +0000 (17:22 +0100)
commit892c1fa8d8248bcdb153faf0694073e3b4a91ed3
treedfe195571aa1a1b57551b0a8a7833a0d549e46ea
parentdfcd7658c591d83adbca038669b1be702fac9dcb
vl/compositor: fix weave shader bugs

Writemask was XY instead of YZ (thanks to calim for spotting it).

The pixel calculation resulted in the pixel always being off by one.
If y was .5:

y' = round(y) + 0.5 = 1.5

Fixing this also means the LRP function has to swap the pixels it, since
it's now the other way around for top/bottom.

WIth these fixes only chroma for top and bottom pixel rows are wrongly interpolated
in my test program:

--- nvidia
+++ nouveau
@@ -1,4 +1,4 @@
-YCbCr[0] = 00c080
+YCbCr[0] = 00b070
 YCbCr[1] = 00b070
 YCbCr[2] = 029050
 YCbCr[3] = 207050
@@ -61,4 +61,4 @@
 YCbCr[60] = 0c5070
 YCbCr[61] = c05090
 YCbCr[62] = 0e70b0
-YCbCr[63] = e080c0
+YCbCr[63] = e070b0

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
src/gallium/auxiliary/vl/vl_compositor.c