summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorJakob Bornecrantz <[email protected]>2012-01-09 00:00:34 +0100
committerJakob Bornecrantz <[email protected]>2012-01-09 21:38:52 +0100
commit3e22c7a25321554a32fa6254485912fd53deff3a (patch)
tree4fad4a88e9dd4762f897401b0c733d25b39324ae /src/gallium
parenta53cb348baa8b6f3142ac0bda2c339ee1ba1ea86 (diff)
draw: Make it possible to create a llvm free context
Signed-off-by: Jakob Bornecrantz <[email protected]> Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/auxiliary/draw/draw_context.c48
-rw-r--r--src/gallium/auxiliary/draw/draw_context.h2
2 files changed, 35 insertions, 15 deletions
diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c
index 9c00687a9ea..f4b1f8c973c 100644
--- a/src/gallium/auxiliary/draw/draw_context.c
+++ b/src/gallium/auxiliary/draw/draw_context.c
@@ -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)
{
diff --git a/src/gallium/auxiliary/draw/draw_context.h b/src/gallium/auxiliary/draw/draw_context.h
index 93577d0b8fc..7655ad0a90d 100644
--- a/src/gallium/auxiliary/draw/draw_context.h
+++ b/src/gallium/auxiliary/draw/draw_context.h
@@ -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);