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

Matt Turner mattst88 at gmail.com
Wed Feb 11 09:17:16 PST 2015


On Tue, Feb 10, 2015 at 11:00 PM, Samuel Iglesias Gonsálvez
<siglesias at igalia.com> wrote:
> On Tuesday 10 February 2015 11:32:32 Matt Turner wrote:
>> 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.
>
> Thanks for your review, Matt. I'll do the change and check that it works as
> expected.

Sorry for the late comment -- I should have said round*f* :)


More information about the mesa-dev mailing list