graw-null: New target to ensure we always have a graw implementation available.
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 6 May 2010 13:20:13 +0000 (14:20 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Thu, 6 May 2010 13:20:13 +0000 (14:20 +0100)
src/gallium/targets/SConscript
src/gallium/targets/graw-null/SConscript [new file with mode: 0644]
src/gallium/targets/graw-null/graw_null.c [new file with mode: 0644]
src/gallium/tests/raw/SConscript

index 1292d4f619334037543ae834e76aecc552fde0a8..be5db88e41cef368d38733a4f191df7a391ab2eb 100644 (file)
@@ -10,10 +10,13 @@ if 'gdi' in env['winsys']:
                'libgl-gdi/SConscript',
        ])
 
-if 'graw-xlib' in env['winsys']:
+if env['platform'] == 'linux' and 'xlib' in env['winsys'] and 'graw-xlib' in env['winsys']:
        SConscript([
                'graw-xlib/SConscript',
        ])
+else:
+    SConscript('graw-null/SConscript')
+
 
 if env['dri']:
        SConscript([
diff --git a/src/gallium/targets/graw-null/SConscript b/src/gallium/targets/graw-null/SConscript
new file mode 100644 (file)
index 0000000..99b6f5f
--- /dev/null
@@ -0,0 +1,53 @@
+#######################################################################
+# SConscript for xlib winsys
+
+Import('*')
+
+env = env.Clone()
+
+env.Prepend(LIBS = [
+    ws_null,
+    trace,
+    identity,
+#    gallium,
+])
+
+env.Append(CPPPATH = [
+    '#src/gallium/drivers',
+])
+
+if env['platform'] == 'windows':
+    # For trace
+    env.Append(LIBS = [
+        'ws2_32',
+    ])
+
+sources = [
+    'graw_null.c',
+]
+
+if True:
+    env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
+    env.Prepend(LIBS = [softpipe])
+
+if env['llvm']:
+    env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
+    env.Tool('udis86')
+    env.Prepend(LIBS = [llvmpipe])
+
+# Need this for trace, identity drivers referenced by
+# gallium_wrap_screen().
+#
+env.Prepend(LIBS = [gallium])
+
+# TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions
+graw = env.SharedLibrary(
+    target ='graw',
+    source = sources,
+)
+
+env.InstallSharedLibrary(graw, version=(1, 0))
+
+graw = env.FindIxes(graw, 'SHLIBPREFIX', 'SHLIBSUFFIX')
+
+Export('graw')
diff --git a/src/gallium/targets/graw-null/graw_null.c b/src/gallium/targets/graw-null/graw_null.c
new file mode 100644 (file)
index 0000000..293015b
--- /dev/null
@@ -0,0 +1,83 @@
+#include "pipe/p_compiler.h"
+#include "util/u_debug.h"
+#include "util/u_memory.h"
+#include "target-helpers/wrap_screen.h"
+#include "sw/null/null_sw_winsys.h"
+
+#ifdef GALLIUM_SOFTPIPE
+#include "softpipe/sp_public.h"
+#endif
+
+#ifdef GALLIUM_LLVMPIPE
+#include "llvmpipe/lp_public.h"
+#endif
+
+/* Haven't figured out a decent way to build the helper code yet -
+ * #include it here temporarily.
+ */
+#include "sw/sw_public.h"
+#include "sw/sw.c"
+
+#include "state_tracker/graw.h"
+
+#include <stdio.h>
+
+
+struct pipe_screen *
+graw_init( void )
+{
+   const char *default_driver;
+   const char *driver;
+   struct pipe_screen *screen = NULL;
+   struct sw_winsys *winsys = NULL;
+
+   /* Create the underlying winsys, which performs presents to Xlib
+    * drawables:
+    */
+   winsys = null_sw_create();
+   if (winsys == NULL)
+      return NULL;
+
+#if defined(GALLIUM_LLVMPIPE)
+   default_driver = "llvmpipe";
+#elif defined(GALLIUM_SOFTPIPE)
+   default_driver = "softpipe";
+#else
+   default_driver = "";
+#endif
+
+   driver = debug_get_option("GALLIUM_DRIVER", default_driver);
+
+#if defined(GALLIUM_LLVMPIPE)
+   if (screen == NULL && strcmp(driver, "llvmpipe") == 0)
+      screen = llvmpipe_create_screen( winsys );
+#endif
+
+#if defined(GALLIUM_SOFTPIPE)
+   if (screen == NULL)
+      screen = softpipe_create_screen( winsys );
+#endif
+
+   /* Inject any wrapping layers we want to here:
+    */
+   return gallium_wrap_screen( screen );
+}
+
+
+void *
+graw_create_window( int x,
+                    int y,
+                    unsigned width,
+                    unsigned height,
+                    enum pipe_format format )
+{
+   static int dummy;
+   return &dummy;
+}
+
+
+void
+graw_destroy_window( void *window )
+{
+}
+
index 1b172e070fefe447c36d54e1c7ceb07ccde673e5..8a92ac2c499dba96168da0070dd2f34404d75f71 100644 (file)
@@ -1,12 +1,15 @@
 Import('*')
 
-if 'graw-xlib' not in env['winsys']:
+try:
+    graw
+except NameError:
+    print 'warning: graw library not avaiable: skipping build of graw test'
     Return()
 
 env = env.Clone()
 
 env.Prepend(LIBPATH = [graw.dir])
-env.Prepend(LIBS = [graw.name])
+env.Prepend(LIBS = ['graw'])
 
 progs = [
     'clear'