summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohnson Lin <[email protected]>2017-05-04 14:37:52 +0800
committerEmil Velikov <[email protected]>2017-05-19 23:23:21 +0100
commit3922a43bf2aa854e55363a9d04f580c065d60497 (patch)
tree6d97b8e7292fe04237a79226f6bc4284127a1532 /src
parent832f6b45433aceb75dda28d2d5b5d26ee9d43e70 (diff)
nir/lower_tex: Fix minor error in YUV color conversion matrix
The matrix used for YCbCr to RGB is listed in: https://en.wikipedia.org/wiki/YCbCr There was an error in converting the offsets from integers to unorm values: 0.0625=16/256 should be 16.0/255,and 0.5=128.0/256 should be 128.0/255. With this fix, the CSC result is bit aligned with wikipedia's conversion result and FFMPeg's result. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100854 Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Kristian H. Kristensen <[email protected]> (cherry picked from commit a6fb943f3eb86ca501a7e7b8d4621ba215f91133)
Diffstat (limited to 'src')
-rw-r--r--src/compiler/nir/nir_lower_tex.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/compiler/nir/nir_lower_tex.c b/src/compiler/nir/nir_lower_tex.c
index 352d1499bc8..4ef81955513 100644
--- a/src/compiler/nir/nir_lower_tex.c
+++ b/src/compiler/nir/nir_lower_tex.c
@@ -244,9 +244,9 @@ convert_yuv_to_rgb(nir_builder *b, nir_tex_instr *tex,
nir_ssa_def *yuv =
nir_vec4(b,
nir_fmul(b, nir_imm_float(b, 1.16438356f),
- nir_fadd(b, y, nir_imm_float(b, -0.0625f))),
- nir_channel(b, nir_fadd(b, u, nir_imm_float(b, -0.5f)), 0),
- nir_channel(b, nir_fadd(b, v, nir_imm_float(b, -0.5f)), 0),
+ nir_fadd(b, y, nir_imm_float(b, -16.0f / 255.0f))),
+ nir_channel(b, nir_fadd(b, u, nir_imm_float(b, -128.0f / 255.0f)), 0),
+ nir_channel(b, nir_fadd(b, v, nir_imm_float(b, -128.0f / 255.0f)), 0),
nir_imm_float(b, 0.0));
nir_ssa_def *red = nir_fdot4(b, yuv, nir_build_imm(b, 4, 32, m[0]));