[Mesa-dev] [PATCH 02/11] i965/blorp: round to nearest when converting float to integer

Matt Turner mattst88 at gmail.com
Tue Feb 10 11:32:32 PST 2015


On Tue, Feb 10, 2015 at 10:52 AM, Matt Turner <mattst88 at gmail.com> wrote:
>> +   /* Round floating point values to nearest integer to avoid "off by one texel"
>> +    * kind of errors when blitting.
>> +    */
>> +   x0 = wm_push_consts.dst_x0 = dst_x0 + 0.5;
>> +   y0 = wm_push_consts.dst_y0 = dst_y0 + 0.5;
>> +   x1 = wm_push_consts.dst_x1 = dst_x1 + 0.5;
>> +   y1 = wm_push_consts.dst_y1 = dst_y1 + 0.5;
>
> Can we use round(dst_??) here instead?
>
> x + 0.5 has the surprising property that nextafter(0.5, 0.0) (i.e.,
> the largest value less than 0.5) + 0.5 is exactly half way between the
> largest value less than 1.0 and 1.0, so it gets rounded to 1.0 instead
> of down to 0.0. It's an uncommon case, but round() should better
> describe what we want to do anyway.

And just to short circuit the process, assuming round() works have a

Reviewed-by: Matt Turner <mattst88 at gmail.com>

and feel free to commit. Shouldn't be necessary to resend.


More information about the mesa-dev mailing list