diff options
| author | Keith Whitwell <keithw@vmware.com> | 2010-03-10 11:49:11 +0000 | 
|---|---|---|
| committer | Keith Whitwell <keithw@vmware.com> | 2010-03-10 11:52:04 +0000 | 
| commit | 0731d14a43191233e91fbebe5b47b13faa655f9f (patch) | |
| tree | 8efbaacf3304fb8ac53055d3cd7da862820853a9 | |
| parent | e47a619ea262ba1c49f86525b2855a64a5e36a42 (diff) | |
target-helpers: remove swrast_xlib.c helper
This was a good idea, but ended up tying the build systems in knots.
We can revisit this later, in particular if we can put in place dummy
implementations of cell_create_screen(), llvmpipe_create_screen()
which just return NULL if the driver isn't available.
In the meantime, just duplicate this smallish function in the two
places it was being called.
| -rw-r--r-- | src/gallium/auxiliary/Makefile | 1 | ||||
| -rw-r--r-- | src/gallium/auxiliary/target-helpers/swrast_xlib.c | 97 | ||||
| -rw-r--r-- | src/gallium/auxiliary/target-helpers/swrast_xlib.h | 15 | ||||
| -rw-r--r-- | src/gallium/state_trackers/egl/x11/native_ximage.c | 60 | ||||
| -rw-r--r-- | src/gallium/targets/libgl-xlib/xlib.c | 63 | 
5 files changed, 121 insertions, 115 deletions
| diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile index 89b15d41b7..0ac18426d9 100644 --- a/src/gallium/auxiliary/Makefile +++ b/src/gallium/auxiliary/Makefile @@ -132,7 +132,6 @@ C_SOURCES = \  	vl/vl_compositor.c \  	vl/vl_csc.c \  	vl/vl_shader_build.c \ -	target-helpers/swrast_xlib.c  	target-helpers/wrap_screen.c  GALLIVM_SOURCES = \ diff --git a/src/gallium/auxiliary/target-helpers/swrast_xlib.c b/src/gallium/auxiliary/target-helpers/swrast_xlib.c deleted file mode 100644 index 3cab901272..0000000000 --- a/src/gallium/auxiliary/target-helpers/swrast_xlib.c +++ /dev/null @@ -1,97 +0,0 @@ -/************************************************************************** - *  - * Copyright 2007 Tungsten Graphics, Inc., Bismarck, ND., USA - * All Rights Reserved. - *  - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - *  - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR  - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE  - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - *  - *  - **************************************************************************/ - -/* - * Authors: - *   Keith Whitwell - */ - -#include "swrast_xlib.h" - -#include "state_tracker/xlib_sw_winsys.h" -#include "util/u_debug.h" -#include "softpipe/sp_public.h" -#include "llvmpipe/lp_public.h" -#include "cell/ppu/cell_public.h" -#include "wrap_screen.h" - - -/* Helper function to build a subset of a driver stack consisting of - * one of the software rasterizers (cell, llvmpipe, softpipe) and the - * xlib winsys. - * - * This can be called by any target that builds on top of this - * combination. - */ -struct pipe_screen * -swrast_xlib_create_screen( Display *display ) -{ -   struct sw_winsys *winsys; -   struct pipe_screen *screen = NULL; - -   /* Create the underlying winsys, which performs presents to Xlib -    * drawables: -    */ -   winsys = xlib_create_sw_winsys( display ); -   if (winsys == NULL) -      return NULL; - -   /* Create a software rasterizer on top of that winsys: -    */ -#if defined(GALLIUM_CELL) -   if (screen == NULL && -       !debug_get_bool_option("GALLIUM_NO_CELL", FALSE)) -      screen = cell_create_screen( winsys ); -#endif - -#if defined(GALLIUM_LLVMPIPE) -   if (screen == NULL && -       !debug_get_bool_option("GALLIUM_NO_LLVM", FALSE)) -      screen = llvmpipe_create_screen( winsys ); -#endif - -   if (screen == NULL) -      screen = softpipe_create_screen( winsys ); - -   if (screen == NULL) -      goto fail; - -   /* Inject any wrapping layers we want to here: -    */ -   return gallium_wrap_screen( screen ); - -fail: -   if (winsys) -      winsys->destroy( winsys ); - -   return NULL; -} - - - - diff --git a/src/gallium/auxiliary/target-helpers/swrast_xlib.h b/src/gallium/auxiliary/target-helpers/swrast_xlib.h deleted file mode 100644 index 3a0f713d54..0000000000 --- a/src/gallium/auxiliary/target-helpers/swrast_xlib.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef SWRAST_XLIB_HELPER_H -#define SWRAST_XLIB_HELPER_H - -#include <X11/Xlib.h> -#include "pipe/p_compiler.h" - -/* Helper to build the xlib winsys, choose between the software - * rasterizers and construct the lower part of a driver stack. - * - * Just add a state tracker. - */ -struct pipe_screen *swrast_xlib_create_screen( Display *display ); - - -#endif diff --git a/src/gallium/state_trackers/egl/x11/native_ximage.c b/src/gallium/state_trackers/egl/x11/native_ximage.c index 544b3b4276..e0d12acabe 100644 --- a/src/gallium/state_trackers/egl/x11/native_ximage.c +++ b/src/gallium/state_trackers/egl/x11/native_ximage.c @@ -34,7 +34,11 @@  #include "pipe/p_compiler.h"  #include "util/u_inlines.h"  #include "state_tracker/xlib_sw_winsys.h" -#include "target-helpers/swrast_xlib.h" +#include "target-helpers/wrap_screen.h" +#include "util/u_debug.h" +#include "softpipe/sp_public.h" +#include "llvmpipe/lp_public.h" +#include "cell/ppu/cell_public.h"  #include "egllog.h"  #include "native_x11.h" @@ -614,6 +618,60 @@ ximage_display_destroy(struct native_display *ndpy)     free(xdpy);  } + +/* Helper function to build a subset of a driver stack consisting of + * one of the software rasterizers (cell, llvmpipe, softpipe) and the + * xlib winsys. + * + * This function could be shared, but currently causes headaches for + * the build systems, particularly scons if we try. + * + * Long term, want to avoid having global #defines for things like + * GALLIUM_LLVMPIPE, GALLIUM_CELL, etc.  Scons already eliminates + * those #defines, so things that are painful for it now are likely to + * be painful for other build systems in the future. + */ +static struct pipe_screen * +swrast_xlib_create_screen( Display *display ) +{ +   struct sw_winsys *winsys; +   struct pipe_screen *screen = NULL; + +   /* Create the underlying winsys, which performs presents to Xlib +    * drawables: +    */ +   winsys = xlib_create_sw_winsys( display ); +   if (winsys == NULL) +      return NULL; + +   /* Create a software rasterizer on top of that winsys.  Use +    * llvmpipe if it is available. +    */ +#if defined(GALLIUM_LLVMPIPE) +   if (screen == NULL && +       !debug_get_bool_option("GALLIUM_NO_LLVM", FALSE)) +      screen = llvmpipe_create_screen( winsys ); +#endif + +   if (screen == NULL) +      screen = softpipe_create_screen( winsys ); + +   if (screen == NULL) +      goto fail; + +   /* Inject any wrapping layers we want to here: +    */ +   return gallium_wrap_screen( screen ); + +fail: +   if (winsys) +      winsys->destroy( winsys ); + +   return NULL; +} + + +  struct native_display *  x11_create_ximage_display(EGLNativeDisplayType dpy,                            struct native_event_handler *event_handler) diff --git a/src/gallium/targets/libgl-xlib/xlib.c b/src/gallium/targets/libgl-xlib/xlib.c index 54764440e7..05dc8db57d 100644 --- a/src/gallium/targets/libgl-xlib/xlib.c +++ b/src/gallium/targets/libgl-xlib/xlib.c @@ -31,12 +31,73 @@   *   Keith Whitwell   */  #include "pipe/p_compiler.h" -#include "target-helpers/swrast_xlib.h" +#include "state_tracker/xlib_sw_winsys.h" +#include "util/u_debug.h" +#include "softpipe/sp_public.h" +#include "llvmpipe/lp_public.h" +#include "cell/ppu/cell_public.h" +#include "target-helpers/wrap_screen.h"  #include "xm_public.h"  /* advertise OpenGL support */  PUBLIC const int st_api_OpenGL = 1; + +/* Helper function to build a subset of a driver stack consisting of + * one of the software rasterizers (cell, llvmpipe, softpipe) and the + * xlib winsys. + * + * This function could be shared, but currently causes headaches for + * the build systems, particularly scons if we try.  Long term, want + * to avoid having global #defines for things like GALLIUM_LLVMPIPE, + * GALLIUM_CELL, etc.  Scons already eliminates those #defines, so + * things that are painful for it now are likely to be painful for + * other build systems in the future. + */ +static struct pipe_screen * +swrast_xlib_create_screen( Display *display ) +{ +   struct sw_winsys *winsys; +   struct pipe_screen *screen = NULL; + +   /* Create the underlying winsys, which performs presents to Xlib +    * drawables: +    */ +   winsys = xlib_create_sw_winsys( display ); +   if (winsys == NULL) +      return NULL; + +   /* Create a software rasterizer on top of that winsys: +    */ +#if defined(GALLIUM_CELL) +   if (screen == NULL && +       !debug_get_bool_option("GALLIUM_NO_CELL", FALSE)) +      screen = cell_create_screen( winsys ); +#endif + +#if defined(GALLIUM_LLVMPIPE) +   if (screen == NULL && +       !debug_get_bool_option("GALLIUM_NO_LLVM", FALSE)) +      screen = llvmpipe_create_screen( winsys ); +#endif + +   if (screen == NULL) +      screen = softpipe_create_screen( winsys ); + +   if (screen == NULL) +      goto fail; + +   /* Inject any wrapping layers we want to here: +    */ +   return gallium_wrap_screen( screen ); + +fail: +   if (winsys) +      winsys->destroy( winsys ); + +   return NULL; +} +  struct xm_driver xlib_driver =   {     .create_pipe_screen = swrast_xlib_create_screen, | 
