i965/blorp_clear: Use memcpy instead of assignment to copy clear value
authorNeil Roberts <neil@linux.intel.com>
Thu, 14 Aug 2014 14:01:39 +0000 (15:01 +0100)
committerNeil Roberts <neil@linux.intel.com>
Fri, 15 Aug 2014 11:35:40 +0000 (12:35 +0100)
commitaa9d4f9d1a01fbb829571dac1cf896a8288c7286
treed10c8d628a473b9e2d1bcb0fcf5d09090cf46e69
parentafa7df9b78c0e7b14d2069faa8bc83aa2548b8e5
i965/blorp_clear: Use memcpy instead of assignment to copy clear value

Similar to the problem described in 2c50212b14da27de4e3, if we copy the clear
value through a regular assignment via a floating point value, then if an
integer clear value is being used that happens to contain a signalling NaN
value then it would get converted to a quiet NaN when stored via the x87
floating-point registers. This would corrupt the integer value. Instead we
should use a memcpy to ensure the exact bit representation is preserved.

This bug can be triggered on 32-bit builds with optimisations by using an
integer clear color with a value like 0x7f817f81.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_blorp_clear.cpp