[Mesa-dev] [PATCH 08/13] pipe-loader: introduce pipe_loader_sw_probe_xlib helper

Francisco Jerez currojerez at riseup.net
Thu Feb 13 04:56:34 PST 2014


Emil Velikov <emil.l.velikov at gmail.com> writes:

> Will be used in the upcoming patches.
>
> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
> ---
>  src/gallium/auxiliary/pipe-loader/Makefile.am      |  4 ++++
>  src/gallium/auxiliary/pipe-loader/pipe_loader.h    | 19 +++++++++++++++++++
>  src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c | 22 +++++++++++++++++++---
>  3 files changed, 42 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/auxiliary/pipe-loader/Makefile.am b/src/gallium/auxiliary/pipe-loader/Makefile.am
> index 8e4d034..bcee58e 100644
> --- a/src/gallium/auxiliary/pipe-loader/Makefile.am
> +++ b/src/gallium/auxiliary/pipe-loader/Makefile.am
> @@ -8,6 +8,10 @@ AM_CPPFLAGS = $(DEFINES) \
>  	-I$(top_srcdir)/src/gallium/auxiliary \
>  	-I$(top_srcdir)/src/gallium/winsys
>  
> +if NEED_WINSYS_XLIB
> +AM_CPPFLAGS += -DHAVE_WINSYS_XLIB
> +endif
> +
>  noinst_LTLIBRARIES =
>  
>  if HAVE_LOADER_GALLIUM
> diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader.h b/src/gallium/auxiliary/pipe-loader/pipe_loader.h
> index cc6b183..1073dc4 100644
> --- a/src/gallium/auxiliary/pipe-loader/pipe_loader.h
> +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader.h
> @@ -34,6 +34,11 @@
>  #define PIPE_LOADER_H
>  
>  #include "pipe/p_compiler.h"
> +#include <stdbool.h>
> +

I think this is already pulled in by the "p_compiler.h" include?

> +#ifdef HAVE_WINSYS_XLIB
> +#include <X11/Xlib.h>
> +#endif
>  
>  #ifdef __cplusplus
>  extern "C" {
> @@ -100,6 +105,20 @@ pipe_loader_create_screen(struct pipe_loader_device *dev,
>  void
>  pipe_loader_release(struct pipe_loader_device **devs, int ndev);
>  
> +#ifdef HAVE_WINSYS_XLIB
> +
> +/**
> + * Initialize Xlib for an associated display.
> + *
> + * This function is platform-specific.
> + *
> + * \sa pipe_loader_probe
> + */
> +bool
> +pipe_loader_sw_probe_xlib(struct pipe_loader_device **devs, Display *display);
> +
> +#endif
> +
>  /**
>   * Get a list of known software devices.
>   *
> diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
> index 90d2975..8cf8980 100644
> --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
> +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c
> @@ -44,12 +44,28 @@ struct pipe_loader_sw_device {
>  static struct pipe_loader_ops pipe_loader_sw_ops;
>  
>  static struct sw_winsys *(*backends[])() = {
> -#ifdef HAVE_WINSYS_XLIB
> -   x11_sw_create,
> -#endif
>     null_sw_create
>  };
>  
> +#ifdef HAVE_WINSYS_XLIB
> +bool
> +pipe_loader_sw_probe_xlib(struct pipe_loader_device **devs, Display *display)
> +{
> +   struct pipe_loader_sw_device *sdev = CALLOC_STRUCT(pipe_loader_sw_device);
> +
> +   if (!sdev)
> +      return false;
> +
> +   sdev->base.type = PIPE_LOADER_DEVICE_SOFTWARE;
> +   sdev->base.driver_name = "swrast";
> +   sdev->base.ops = &pipe_loader_sw_ops;
> +   sdev->ws = xlib_create_sw_winsys(display);

Shouldn't we handle failure here too?

> +   *devs = &sdev->base;
> +
> +   return true;
> +}
> +#endif
> +
>  int
>  pipe_loader_sw_probe(struct pipe_loader_device **devs, int ndev)
>  {
> -- 
> 1.8.5.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 229 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140213/c5147a67/attachment.pgp>


More information about the mesa-dev mailing list