On Mon, Dec 12, 2011 at 1:24 PM, Jose Fonseca <jfons...@vmware.com> wrote: > I saw this email yesterday, but did not have time to reply. > > ----- Original Message ----- >> On Mon, Nov 21, 2011 at 6:52 PM, Eric Anholt <e...@anholt.net> wrote: >> > On Sun, 20 Nov 2011 15:08:55 +0100, Marek Olšák <mar...@gmail.com> >> > wrote: >> >> unpack_float_z_Z24_X8 fails with -O2 in: >> >> - fbo-blit-d24s8 >> >> - fbo-depth-sample-compare >> >> - fbo-readpixels-depth-formats >> >> - glean/depthStencil >> >> >> >> With -O0, it works fine. >> >> >> >> I am removing all the assertions. There's not much point in having >> >> them, >> >> is there? >> > >> > Is -ffast-math involved at all? >> >> Yes, -fno-fast-math makes the problem go away. >> >> > >> > At a guess, replacing "* scale" with "/ (float)0xffffff" makes the >> > failure happen either way? >> >> Yes. Only using GLdouble fixes it. >> >> It makes sense. The mantissa without the sign has 23 bits, but 24 >> bits >> are required to exactly represent 0xffffff if I am not mistaken. > > I'm afraid this is wrong: single precision floating point can describe 24bits > uints (and therefore unorms) without any loss, because although the mantissa > has 23bits, the mantissa is only used to represent all but the most > significant bit, ie., there's an implicit 24th bit always set to one. > > The fact that -fno-fast-math makes the problem go away is yet another clear > proof that the issue is _not_ lack of precision of single-precision floating > point -- as -fno-fast-math will still use single-precision floating point > numbers. Actually, fno-fast-math, it will ensure that all intermediate steps > are done in single precision instead of higher intel x87 80bit floating > points, on the 32bit x86 architecture. And I suspect the problem here is > that the rounding w/ x80 yields wrong results. > > > I also disagree that using double precision is a good solution. Either > fast-math serves our purposes, or it doesn't. Using double precision to > work-around issues with single-precision fast-math is the *worst* thing we > could do. > > > Does the assertion failure even happen on 64bits? I doubt, as x64 ABI > establishes the use of sse for all floating point, and x87 80bit floating > point will never be used. So effectively this is making all archs slower. > > > Honestly, I think the patch should be recalled. And we should consider > disabling fast-math. And maybe enabling -mfpmath=sse on 32bits x86 (i.e., > require sse).
You're probably right. Feel free to revert & fix the issue in some other way. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev