[Mesa-dev] [PATCH V2] mesa: add SSE optimisation for glDrawElements

Matt Turner mattst88 at gmail.com
Fri Oct 24 09:11:36 PDT 2014


On Fri, Oct 24, 2014 at 5:47 AM, Timothy Arceri <t_arceri at yahoo.com.au> wrote:
> Makes use of SSE 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%
>
> Signed-off-by: Timothy Arceri <t_arceri at yahoo.com.au>
> ---
>  src/mesa/Android.libmesa_dricore.mk |  3 +-
>  src/mesa/Makefile.am                |  3 +-
>  src/mesa/Makefile.sources           |  1 +
>  src/mesa/main/sse_minmax.c          | 81 +++++++++++++++++++++++++++++++++++++
>  src/mesa/main/sse_minmax.h          | 30 ++++++++++++++
>  src/mesa/vbo/vbo_exec_array.c       | 13 ++++--
>  6 files changed, 126 insertions(+), 5 deletions(-)
>  create mode 100644 src/mesa/main/sse_minmax.c
>  create mode 100644 src/mesa/main/sse_minmax.h
>
> This version includes all the suggestions from Brian and Matt, thanks for
> the review guys.
>
> I haven't been able to do Matt's suggestion and compare this to what OpenMP
> would generate as I only have one machine that supports SSE4.1 with Fedora 20 and
> I dont want to have to upgrade to Fedora 21 alpha (gcc 4.9) just to test this
> (although I did consider it). If people are happy with this code I will revisit
> OpenMP for Mesa 10.5 and will look at using OpenMP for the short and byte support too.
>
> diff --git a/src/mesa/Android.libmesa_dricore.mk b/src/mesa/Android.libmesa_dricore.mk
> index 1e6d948..52d626f 100644
> --- a/src/mesa/Android.libmesa_dricore.mk
> +++ b/src/mesa/Android.libmesa_dricore.mk
> @@ -51,7 +51,8 @@ endif # MESA_ENABLE_ASM
>
>  ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
>  LOCAL_SRC_FILES += \
> -       $(SRCDIR)main/streaming-load-memcpy.c
> +       $(SRCDIR)main/streaming-load-memcpy.c \
> +       $(SRCDIR)main/sse_minmax.c
>  LOCAL_CFLAGS := -msse4.1
>  endif
>
> diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am
> index e71bccb..932db4f 100644
> --- a/src/mesa/Makefile.am
> +++ b/src/mesa/Makefile.am
> @@ -151,7 +151,8 @@ libmesagallium_la_LIBADD = \
>         $(ARCH_LIBS)
>
>  libmesa_sse41_la_SOURCES = \
> -       main/streaming-load-memcpy.c
> +       main/streaming-load-memcpy.c \
> +       main/sse_minmax.c
>  libmesa_sse41_la_CFLAGS = $(AM_CFLAGS) -msse4.1
>
>  pkgconfigdir = $(libdir)/pkgconfig
> diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources
> index 4755018..dd10574 100644
> --- a/src/mesa/Makefile.sources
> +++ b/src/mesa/Makefile.sources
> @@ -93,6 +93,7 @@ MAIN_FILES = \
>         $(SRCDIR)main/shaderobj.c \
>         $(SRCDIR)main/shader_query.cpp \
>         $(SRCDIR)main/shared.c \
> +       $(SRCDIR)main/sse_minmax.c \

We can't add this here. You've already added it to libmesa_sse41.la above.


More information about the mesa-dev mailing list