Sigh. Let me see if I can reproduce the failure with mingw, if we can't I'll revert patch.
Dylan Quoting Roland Scheidegger (2018-09-20 07:13:11) > Looks like this broke the windows build, however. > > Roland > > Am 09.09.2018 um 08:39 schrieb Dylan Baker: > > Currently u_math needs gallium utils for cpu detection. Most of what > > u_math uses out of u_cpu_detection is duplicated in src/mesa/x86 > > (surprise!), so I've just reworked it as much as possible to use the > > x86/common_x86_features macros instead of the gallium ones. There is > > one small function that was copied over, as promoting u_cpu_detection is > > itself a fairly hefty undertaking, as it depends on u_debug, and this > > fixes the bug for now. > > > > bugzilla: > > https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.freedesktop.org%2Fshow_bug.cgi%3Fid%3D107870&data=02%7C01%7Csroland%40vmware.com%7C0c9a5dd4cb8946788a2308d6161f376f%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C1%7C0%7C636720720673702384&sdata=Y0wBuxQgoSiTbf8SPFfGD2qP2jzlbDu26f8QC5ksflg%3D&reserved=0 > > cc: v...@freedesktop.org > > --- > > > > I have no idea if this fixes the build on mac, I had this in a branch where > > I > > started replacing more of imports.{h,c} with utils stuff, and this fixes > > some > > build problems on Linux. I don't have a mac to test on and I wont until > > Monday. > > If this works let me know. > > > > src/util/u_math.c | 43 ++++++++++++++++++++++++++++++++++++++----- > > 1 file changed, 38 insertions(+), 5 deletions(-) > > > > diff --git a/src/util/u_math.c b/src/util/u_math.c > > index c58af911be7..bf0c398eeec 100644 > > --- a/src/util/u_math.c > > +++ b/src/util/u_math.c > > @@ -29,7 +29,7 @@ > > > > #include "pipe/p_config.h" > > #include "util/u_math.h" > > -#include "util/u_cpu_detect.h" > > +#include "x86/common_x86_features.h" > > > > #if defined(PIPE_ARCH_SSE) > > #include <xmmintrin.h> > > @@ -90,7 +90,7 @@ util_fpstate_get(void) > > unsigned mxcsr = 0; > > > > #if defined(PIPE_ARCH_SSE) > > - if (util_cpu_caps.has_sse) { > > + if (cpu_has_xmm) { > > mxcsr = _mm_getcsr(); > > } > > #endif > > @@ -98,6 +98,31 @@ util_fpstate_get(void) > > return mxcsr; > > } > > > > +/* TODO: this was copied from u_cpu_detection. It's another case of > > duplication > > + * between gallium and core mesa, and it would be nice to get rid of that > > + * duplication as well. > > + */ > > +#if defined(PIPE_ARCH_X86) > > +PIPE_ALIGN_STACK static inline bool sse2_has_daz(void) > > +{ > > + struct { > > + uint32_t pad1[7]; > > + uint32_t mxcsr_mask; > > + uint32_t pad2[128-8]; > > + } PIPE_ALIGN_VAR(16) fxarea; > > + > > + fxarea.mxcsr_mask = 0; > > +#if defined(PIPE_CC_GCC) > > + __asm __volatile ("fxsave %0" : "+m" (fxarea)); > > +#elif defined(PIPE_CC_MSVC) || defined(PIPE_CC_ICL) > > + _fxsave(&fxarea); > > +#else > > + fxarea.mxcsr_mask = 0; > > +#endif > > + return !!(fxarea.mxcsr_mask & (1 << 6)); > > +} > > +#endif > > + > > /** > > * Make sure that the fp treats the denormalized floating > > * point numbers as zero. > > @@ -108,13 +133,21 @@ unsigned > > util_fpstate_set_denorms_to_zero(unsigned current_mxcsr) > > { > > #if defined(PIPE_ARCH_SSE) > > - if (util_cpu_caps.has_sse) { > > + if (cpu_has_xmm) { > > /* Enable flush to zero mode */ > > current_mxcsr |= _MM_FLUSH_ZERO_MASK; > > - if (util_cpu_caps.has_daz) { > > + /* x86_64 cpus always have daz, as do cpus with sse3 in fact, there's > > + * basically only a handful of very early pentium 4's that have sse2 > > but > > + * not daz. > > + */ > > +# if !defined(PIPE_ARCH_x86_64) && !defined(PIPE_ARCH_SSSE3) > > + if (sse2_has_daz()) { > > +# endif > > /* Enable denormals are zero mode */ > > current_mxcsr |= _MM_DENORMALS_ZERO_MASK; > > +# if !defined(PIPE_ARCH_x86_64) && !defined(PIPE_ARCH_SSSE3) > > } > > +#endif > > util_fpstate_set(current_mxcsr); > > } > > #endif > > @@ -130,7 +163,7 @@ void > > util_fpstate_set(unsigned mxcsr) > > { > > #if defined(PIPE_ARCH_SSE) > > - if (util_cpu_caps.has_sse) { > > + if (cpu_has_xmm) { > > _mm_setcsr(mxcsr); > > } > > #endif > > >
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev