diff options
author | Török Edwin <[email protected]> | 2010-05-06 22:19:57 +0100 |
---|---|---|
committer | José Fonseca <[email protected]> | 2010-05-06 22:43:37 +0100 |
commit | 4d52a25326506f8a3e876ded029ff4db7749f8a9 (patch) | |
tree | 3485a586dd77ce3e177550afff6d62b31c3a1314 | |
parent | 1fce9d58cc70deaff284e1d9d0ffcb15b61e7595 (diff) |
gallivm: Require SSE2 for draw_llvm/llvmpipe due to LLVM PR6960.
Note that this also requires X86 for llvm, if llvmpipe/draw_llvm works
on PPC then the condition should be extended to include && x86.
Signed-off-by: Török Edwin <[email protected]>
Signed-off-by: José Fonseca <[email protected]>
-rw-r--r-- | src/gallium/auxiliary/draw/draw_llvm.c | 9 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_screen.c | 11 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index ea9b7c90a51..8295a439b97 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -161,9 +161,16 @@ create_vertex_header(struct draw_llvm *llvm, int data_elems) struct draw_llvm * draw_llvm_create(struct draw_context *draw) { - struct draw_llvm *llvm = CALLOC_STRUCT( draw_llvm ); + struct draw_llvm *llvm; +#ifdef PIPE_ARCH_X86 util_cpu_detect(); + /* require SSE2 due to LLVM PR6960. */ + if (!util_cpu_caps.has_sse2) + return NULL; +#endif + + llvm = CALLOC_STRUCT( draw_llvm ); llvm->draw = draw; llvm->engine = draw->engine; diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 111eedc4f23..586afc8855c 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -266,7 +266,16 @@ llvmpipe_destroy_screen( struct pipe_screen *_screen ) struct pipe_screen * llvmpipe_create_screen(struct sw_winsys *winsys) { - struct llvmpipe_screen *screen = CALLOC_STRUCT(llvmpipe_screen); + struct llvmpipe_screen *screen; + +#ifdef PIPE_ARCH_X86 + /* require SSE2 due to LLVM PR6960. */ + util_cpu_detect(); + if (!util_cpu_caps.has_sse2) + return NULL; +#endif + + screen = CALLOC_STRUCT(llvmpipe_screen); #ifdef DEBUG LP_DEBUG = debug_get_flags_option("LP_DEBUG", lp_debug_flags, 0 ); |