[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