draw: Make it possible to create a llvm free context
authorJakob Bornecrantz <wallbraker@gmail.com>
Sun, 8 Jan 2012 23:00:34 +0000 (00:00 +0100)
committerJakob Bornecrantz <wallbraker@gmail.com>
Mon, 9 Jan 2012 20:38:52 +0000 (21:38 +0100)
Signed-off-by: Jakob Bornecrantz <wallbraker@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/draw/draw_context.c
src/gallium/auxiliary/draw/draw_context.h

index 9c00687a9eaeb455430ba77c6973ad65decfd195..f4b1f8c973c83bf4e5b60b9c1a1c328d3cffba10 100644 (file)
@@ -65,30 +65,19 @@ draw_get_option_use_llvm(void)
 #endif
 
 
-
-/**
- * Create new draw module context.
- */
-struct draw_context *
-draw_create(struct pipe_context *pipe)
-{
-   return draw_create_gallivm(pipe, NULL);
-}
-
-
-
 /**
  * Create new draw module context with gallivm state for LLVM JIT.
  */
-struct draw_context *
-draw_create_gallivm(struct pipe_context *pipe, struct gallivm_state *gallivm)
+static struct draw_context *
+draw_create_context(struct pipe_context *pipe, boolean try_llvm,
+                    struct gallivm_state *gallivm)
 {
    struct draw_context *draw = CALLOC_STRUCT( draw_context );
    if (draw == NULL)
       goto fail;
 
 #if HAVE_LLVM
-   if (draw_get_option_use_llvm()) {
+   if (try_llvm && draw_get_option_use_llvm()) {
       if (!gallivm) {
          gallivm = gallivm_create();
          draw->own_gallivm = gallivm;
@@ -112,6 +101,35 @@ fail:
 }
 
 
+/**
+ * Create new draw module context, with LLVM JIT.
+ */
+struct draw_context *
+draw_create(struct pipe_context *pipe)
+{
+   return draw_create_context(pipe, TRUE, NULL);
+}
+
+
+/**
+ * Create a new draw context, without LLVM JIT.
+ */
+struct draw_context *
+draw_create_no_llvm(struct pipe_context *pipe)
+{
+   return draw_create_context(pipe, FALSE, NULL);
+}
+
+
+/**
+ * Create new draw module context with gallivm state for LLVM JIT.
+ */
+struct draw_context *
+draw_create_gallivm(struct pipe_context *pipe, struct gallivm_state *gallivm)
+{
+   return draw_create_context(pipe, TRUE, gallivm);
+}
+
 
 boolean draw_init(struct draw_context *draw)
 {
index 93577d0b8fc8d1babb4f8e918d4f34d0349c7372..7655ad0a90d5a6fea95a34672b5727d4940d93cc 100644 (file)
@@ -54,6 +54,8 @@ struct gallivm_state;
 
 struct draw_context *draw_create( struct pipe_context *pipe );
 
+struct draw_context *draw_create_no_llvm(struct pipe_context *pipe);
+
 struct draw_context *
 draw_create_gallivm(struct pipe_context *pipe, struct gallivm_state *gallivm);