https://bugs.freedesktop.org/show_bug.cgi?id=66806
--- Comment #8 from Roland Scheidegger <srol...@vmware.com> --- Vinson, this looks like a compiler issue to me, what compiler are you using? I suspect something funky might be going on when setting/getting mxcsr value. A disassembly of draw_vbo() where these are set might help (there should be some stmxcsr, doing some ors with the return value followed by a ldmxcsr with that value). Another solution would be to just set the exception mask bits regardless what the value before was. Something like this: diff --git a/src/gallium/auxiliary/util/u_math.c b/src/gallium/auxiliary/util/u_math.c index f3fe392..8c394d9 100644 --- a/src/gallium/auxiliary/util/u_math.c +++ b/src/gallium/auxiliary/util/u_math.c @@ -110,7 +110,7 @@ util_fpstate_set_denorms_to_zero(unsigned current_mxcsr) #if defined(PIPE_ARCH_SSE) if (util_cpu_caps.has_sse) { /* Enable flush to zero mode */ - current_mxcsr |= _MM_FLUSH_ZERO_MASK; + current_mxcsr |= _MM_FLUSH_ZERO_MASK | _MM_MASK_MASK; if (util_cpu_caps.has_sse3) { /* Enable denormals are zero mode */ current_mxcsr |= _MM_DENORMALS_ZERO_MASK; In fact could potentially skip getting the previously set values entirely and just set them to whatever we want (and setting back to some sane values at the end, as it seems all ABIs require the same bits set. But I'm not 100% certain the same bits are really right in all environments, so setting them back to what they were before might be safer (as long as it works...). -- You are receiving this mail because: You are the assignee for the bug.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev