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

Ilia Mirkin imirkin at alum.mit.edu
Fri Apr 15 18:26:24 UTC 2016


I tested this out, and noticed that I still had to have
--with-gallium-drivers=swrast, or else swrast_dri.so didn't get
built/installed. With swrast,swr it seems to work (at least glxinfo
and glxgears produce expected results).

Might be nice if just the swr bit of flipped on everything that was
necessary, but not the end of the world.

Tested-by: Ilia Mirkin <imirkin at alum.mit.edu>


On Fri, Apr 15, 2016 at 1:53 PM, 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
> +
>  pipe_swrast_la_LIBADD += \
>         $(GALLIUM_PIPE_LOADER_WINSYS_LIBS)
>
> --
> 2.5.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list