[Mesa-dev] [PATCH] gallium/swr: allow swr use as a swrast dri driver

Emil Velikov emil.l.velikov at gmail.com
Fri Apr 15 18:25:36 UTC 2016


On 15 April 2016 at 18:53, Tim Rowley <timothy.o.rowley at intel.com> wrote:
> ---
>  configure.ac                                     |  3 +++
>  src/gallium/auxiliary/target-helpers/sw_helper.h | 15 +++++++++++++--
>  src/gallium/drivers/swr/Automake.inc             |  7 +++++++
>  src/gallium/targets/dri/Makefile.am              |  1 +
>  src/gallium/targets/pipe-loader/Makefile.am      | 19 ++++++++++++++-----
>  5 files changed, 38 insertions(+), 7 deletions(-)
>  create mode 100644 src/gallium/drivers/swr/Automake.inc
>
> diff --git a/configure.ac b/configure.ac
> index 8c82c43..09ec8c6 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -2378,6 +2378,9 @@ AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
>  AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
>  AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
>  AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
> +AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
> +                                         "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
> +                                         "x$HAVE_GALLIUM_SWR" = xyes)
>  AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
>  AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
>
> diff --git a/src/gallium/auxiliary/target-helpers/sw_helper.h b/src/gallium/auxiliary/target-helpers/sw_helper.h
> index ae5f3de..5e4e9f7 100644
> --- a/src/gallium/auxiliary/target-helpers/sw_helper.h
> +++ b/src/gallium/auxiliary/target-helpers/sw_helper.h
> @@ -9,7 +9,7 @@
>
>
>  /* Helper function to choose and instantiate one of the software rasterizers:
> - * llvmpipe, softpipe.
> + * llvmpipe, softpipe, swr.
>   */
>
>  #ifdef GALLIUM_SOFTPIPE
> @@ -20,6 +20,10 @@
>  #include "llvmpipe/lp_public.h"
>  #endif
>
> +#ifdef GALLIUM_SWR
> +#include "swr/swr_public.h"
> +#endif
> +
>  #ifdef GALLIUM_VIRGL
>  #include "virgl/virgl_public.h"
>  #include "virgl/vtest/virgl_vtest_public.h"
> @@ -44,10 +48,15 @@ sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
>  #endif
>
>  #if defined(GALLIUM_SOFTPIPE)
> -   if (screen == NULL)
> +   if (screen == NULL && strcmp(driver, "softpipe") == 0)
>        screen = softpipe_create_screen(winsys);
>  #endif
>
> +#if defined(GALLIUM_SWR)
> +   if (screen == NULL && strcmp(driver, "swr") == 0)
> +      screen = swr_create_screen(winsys);
> +#endif
> +
>     return screen;
>  }
>
> @@ -62,6 +71,8 @@ sw_screen_create(struct sw_winsys *winsys)
>     default_driver = "llvmpipe";
>  #elif defined(GALLIUM_SOFTPIPE)
>     default_driver = "softpipe";
> +#elif defined(GALLIUM_SWR)
> +   default_driver = "swr";
>  #else
>     default_driver = "";
>  #endif
> diff --git a/src/gallium/drivers/swr/Automake.inc b/src/gallium/drivers/swr/Automake.inc
> new file mode 100644
> index 0000000..d078e7e
> --- /dev/null
> +++ b/src/gallium/drivers/swr/Automake.inc
> @@ -0,0 +1,7 @@
> +if HAVE_GALLIUM_SWR
> +
> +TARGET_CPPFLAGS += -DGALLIUM_SWR
> +TARGET_LIB_DEPS += \
> +       $(top_builddir)/src/gallium/drivers/swr/libmesaswr.la
> +
> +endif
> diff --git a/src/gallium/targets/dri/Makefile.am b/src/gallium/targets/dri/Makefile.am
> index 2666524..f42dd25 100644
> --- a/src/gallium/targets/dri/Makefile.am
> +++ b/src/gallium/targets/dri/Makefile.am
> @@ -86,6 +86,7 @@ include $(top_srcdir)/src/gallium/drivers/virgl/Automake.inc
>
>  include $(top_srcdir)/src/gallium/drivers/softpipe/Automake.inc
>  include $(top_srcdir)/src/gallium/drivers/llvmpipe/Automake.inc
> +include $(top_srcdir)/src/gallium/drivers/swr/Automake.inc
>
>  if HAVE_GALLIUM_STATIC_TARGETS
>
> diff --git a/src/gallium/targets/pipe-loader/Makefile.am b/src/gallium/targets/pipe-loader/Makefile.am
> index 0b516de..18b403f 100644
> --- a/src/gallium/targets/pipe-loader/Makefile.am
> +++ b/src/gallium/targets/pipe-loader/Makefile.am
> @@ -192,16 +192,18 @@ pipe_vmwgfx_la_LIBADD = \
>
>  endif
>
> -if HAVE_GALLIUM_SOFTPIPE
> -AM_CPPFLAGS += -DGALLIUM_SOFTPIPE
> -
> +if HAVE_GALLIUM_SWRAST
>  pipe_LTLIBRARIES += pipe_swrast.la
>  pipe_swrast_la_SOURCES = pipe_swrast.c
>  nodist_EXTRA_pipe_swrast_la_SOURCES = dummy.cpp
> +pipe_swrast_la_LIBADD = $(PIPE_LIBS)
>
> -pipe_swrast_la_LIBADD = \
> -       $(PIPE_LIBS) \
> +if HAVE_GALLIUM_SOFTPIPE
> +AM_CPPFLAGS += -DGALLIUM_SOFTPIPE
> +
> +pipe_swrast_la_LIBADD += \
>         $(top_builddir)/src/gallium/drivers/softpipe/libsoftpipe.la
> +endif
>
>  if HAVE_GALLIUM_LLVMPIPE
>  AM_CPPFLAGS += -DGALLIUM_LLVMPIPE
> @@ -210,6 +212,13 @@ pipe_swrast_la_LIBADD += \
>         $(top_builddir)/src/gallium/drivers/llvmpipe/libllvmpipe.la
>  endif
>
> +if HAVE_GALLIUM_SWR
> +AM_CPPFLAGS += -DGALLIUM_SWR
> +
> +pipe_swrast_la_LIBADD += \
> +       $(top_builddir)/src/gallium/drivers/swr/libmesaswr.la
> +endif
> +
Nice one Tim. It looks pretty good - just a small question:

We don't have extra unresolved symbols in the swrast_dri.so do we ?

$ ldd -r swrast_dri.so  | grep "^undefined symbol:"  | grep -v _glapi_ | wc -l
0

Do skim through the output even without all the grepping though :-)

If the number is 0
Reviewed-by: Emil Velikov <emil.velikov at collabora.com>

Thanks
Emil


More information about the mesa-dev mailing list