intel/compiler: fix ddx and ddy for 16-bit float
authorIago Toral Quiroga <itoral@igalia.com>
Mon, 28 May 2018 10:32:08 +0000 (12:32 +0200)
committerJuan A. Suarez Romero <jasuarez@igalia.com>
Thu, 18 Apr 2019 09:05:18 +0000 (11:05 +0200)
commit60c7c6d3ba4ab41eec7f48d6266321e10e2e50df
tree34d99eb401656da43747b9d5094ad3ccf830d2e8
parent8f40d392b9f67235064b0fb4d894097e361f1d7c
intel/compiler: fix ddx and ddy for 16-bit float

We were assuming 32-bit elements. Also, In SIMD8 we pack 2 vector components
in a single SIMD register, so for example, component Y of a 16-bit vec2
starts is at byte offset 16B. This means that when we compute the offset of
the elements to be differentiated we should not stomp whatever base offset we
have, but instead add to it.

v2
 - Use byte_offset() helper (Jason)
 - Merge the fix for SIMD8: using byte_offset() fixes that too.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (v1)
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/intel/compiler/brw_fs_generator.cpp