diff options
author | Timothy Arceri <t_arceri@yahoo.com.au> | 2014-10-29 23:05:59 +1100 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2014-11-06 11:39:59 -0800 |
commit | 13786172181bf5a753c706a7f5c3eb5d448e244e (patch) | |
tree | ae36df3acf02742f3e8b0e9beb57ca8d82064c71 /src/mesa/Android.libmesa_st_mesa.mk | |
parent | 9557cf7d0d2e5a76a5277c2a4825e265609b2fca (diff) | |
download | external_mesa3d-13786172181bf5a753c706a7f5c3eb5d448e244e.zip external_mesa3d-13786172181bf5a753c706a7f5c3eb5d448e244e.tar.gz external_mesa3d-13786172181bf5a753c706a7f5c3eb5d448e244e.tar.bz2 |
mesa: Add SSE 4.1 optimisation for glDrawElements.
Makes use of SSE 4.1 to speed up compute of min and max elements.
Callgrind cpu usage results from pts benchmarks:
Openarena 0.8.8: 3.67% -> 1.03%
UrbanTerror: 2.36% -> 0.81%
V5:
- actually make use of the optimisation in android (Emil Velikov)
- set a better array size limit for using SSE and added TODO
V4:
- fixed bugs with incrementing pointer and updating counters
V3:
- Removed sse_minmax.c from Makefile.sources
- handle the first few values without SSE until the pointer is aligned
and use _mm_load_si128 rather than _mm_loadu_si128
- guard the call to the SSE code better at build time
V2:
- removed GL* types
- use _mm_store_si128() rather than _mm_store_ps()
- add runtime check for SSE
- use aligned attribute for local mix/max
- bunch of tidyups
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Timothy Arceri <t_arceri@yahoo.com.au>
Diffstat (limited to 'src/mesa/Android.libmesa_st_mesa.mk')
-rw-r--r-- | src/mesa/Android.libmesa_st_mesa.mk | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mesa/Android.libmesa_st_mesa.mk b/src/mesa/Android.libmesa_st_mesa.mk index 8b8d652..618d6bf 100644 --- a/src/mesa/Android.libmesa_st_mesa.mk +++ b/src/mesa/Android.libmesa_st_mesa.mk @@ -48,6 +48,11 @@ ifeq ($(TARGET_ARCH),x86) endif # x86 endif # MESA_ENABLE_ASM +ifeq ($(ARCH_X86_HAVE_SSE4_1),true) +LOCAL_CFLAGS := \ + -DUSE_SSE41 +endif + LOCAL_C_INCLUDES := \ $(call intermediates-dir-for STATIC_LIBRARIES,libmesa_program,,) \ $(MESA_TOP)/src/gallium/auxiliary \ |