swrast: fix readpix clamping
authorMarek Olšák <maraeo@gmail.com>
Wed, 20 Apr 2011 10:40:40 +0000 (12:40 +0200)
committerMarek Olšák <maraeo@gmail.com>
Fri, 22 Apr 2011 04:35:36 +0000 (06:35 +0200)
commit1faf079a692bbf4b24c8e83fa2b331c1e3b58e13
tree71192245f8e19e6517cfdc353b0af6bd832c69a5
parent7142a67473b4fc77bdd58baf7cced9bfc54ccb73
swrast: fix readpix clamping

Broken with e5c6a92a12b5cd7db205d72039f58d302b0be9d5. (ARB_color_buffer_float)

Clamping should occur if type != float, otherwise the MSBs of the resulting
pixels are killed off. For example, reading back LUMINANCE = R+G+B can be
greater than 0xff, but the result is naturally masked by 0xff
for UNSIGNED_BYTE, leading to bogus results.

The following bug report seems to want clamping to occur if type == half_float
too. Not sure what's correct.

Bug: [bisected pineview] oglc case pxconv-read failed
https://bugs.freedesktop.org/show_bug.cgi?id=35852

Tested by: Fang Xun <xunx.fang@intel.com>
Reviewed-and-tested-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/swrast/s_readpix.c