[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