On Sat, 2014-11-08 at 18:25 +0000, Emil Velikov wrote: > On 08/11/14 08:35, Siavash Eliasi wrote: > > This will remove the need for unnecessary runtime checks for CPU features if > > already supported by target CPU, resulting in smaller and less branchy code. > > > A comment I could not withheld based on your earlier post - "We require > micro-benchmark for this code. It will take me hours to find why mesa is > so slow now :P"
Hehe, you are technically correct, the best kind of correct. > > Ideally mesa should have an infrastructure/farm that handles regressions > - be that performance or otherwise. Pretty sure some companies have such > features but those seem to be hidden behind locked doors :'( I considered trying to work on a solution for this where anyone could volunteer their machine to run such tests and send the results back to a central server. But in the end its a pretty big project to get something like this working correctly, and making it easy to setup thus participate in. I guess you could leverage something like the oibaf ppa to start with rather than pulling down each commit and building. Anyway a much bigger project than what I have time for at the moment. > > But on a more mature note, currently only cpu_has_xmm > (_tnl_generate_sse_emit) and cpu_has_sse4_1(vbo_get_minmax_index) are > actually useful, with the former of questionable amount :P > > Can you confirm that it does not cause issues with "interesting" setups > such as https://bugs.freedesktop.org/show_bug.cgi?id=71547 > I think this patch should be find in this case as the solution there was to wrap the code with #ifdef __SSE4_1__ which is what makes this patch work. > > Thanks > Emil > > > V2: > > - Removed the SSSE3 related part for the not yet merged patch. > > - Avoiding redefinition of macros. > > --- > > src/mesa/x86/common_x86_features.h | 26 ++++++++++++++++++++++++++ > > 1 file changed, 26 insertions(+) > > > > diff --git a/src/mesa/x86/common_x86_features.h > > b/src/mesa/x86/common_x86_features.h > > index 66f2cf6..65634aa 100644 > > --- a/src/mesa/x86/common_x86_features.h > > +++ b/src/mesa/x86/common_x86_features.h > > @@ -59,13 +59,39 @@ > > #define X86_CPUEXT_3DNOW_EXT (1<<30) > > #define X86_CPUEXT_3DNOW (1<<31) > > > > +#ifdef __MMX__ > > +#define cpu_has_mmx 1 > > +#else > > #define cpu_has_mmx (_mesa_x86_cpu_features & > > X86_FEATURE_MMX) > > +#endif > > + > > #define cpu_has_mmxext (_mesa_x86_cpu_features & > > X86_FEATURE_MMXEXT) > > + > > +#ifdef __SSE__ > > +#define cpu_has_xmm 1 > > +#else > > #define cpu_has_xmm (_mesa_x86_cpu_features & > > X86_FEATURE_XMM) > > +#endif > > + > > +#ifdef __SSE2__ > > +#define cpu_has_xmm2 1 > > +#else > > #define cpu_has_xmm2 (_mesa_x86_cpu_features & > > X86_FEATURE_XMM2) > > +#endif > > + > > +#ifdef __3dNOW__ > > +#define cpu_has_3dnow 1 > > +#else > > #define cpu_has_3dnow (_mesa_x86_cpu_features & > > X86_FEATURE_3DNOW) > > +#endif > > + > > #define cpu_has_3dnowext (_mesa_x86_cpu_features & X86_FEATURE_3DNOWEXT) > > + > > +#ifdef __SSE4_1__ > > +#define cpu_has_sse4_1 1 > > +#else > > #define cpu_has_sse4_1 (_mesa_x86_cpu_features & > > X86_FEATURE_SSE4_1) > > +#endif > > > > #endif > > > > > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev