summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2014-04-16 15:00:09 +0900
committerMichel Dänzer <michel@daenzer.net>2014-04-17 10:15:59 +0900
commit7286739b9beea4683a29fe91850688a07ce23e1a (patch)
tree8ea984e2adea8550deebc474385f54553075325b
parentf23d1160c24e16ced319d838ed3102b731c2ff03 (diff)
r600g: Disable LLVM by default at runtime for graphics
For graphics, the LLVM compiler backend currently has many shortcomings compared to the non-LLVM one. E.g. it can't handle geometry shaders yet, but that's just the tip of the iceberg. So building Mesa with --enable-r600-llvm-compiler is currently not recommended for anyone who doesn't want to work on fixing those issues. However, for protection of users who end up enabling it anyway for some reason, let's disable the LLVM backend at runtime by default. It can be enabled with the environment variable R600_DEBUG=llvm. Cc: "10.1" <mesa-stable@lists.freedesktop.org> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
-rw-r--r--src/gallium/drivers/r600/r600_pipe.c6
-rw-r--r--src/gallium/drivers/r600/r600_pipe.h2
-rw-r--r--src/gallium/drivers/r600/r600_shader.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index 3797b56b2f8..68d739d8937 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -45,7 +45,7 @@
static const struct debug_named_value r600_debug_options[] = {
/* features */
#if defined(R600_USE_LLVM)
- { "nollvm", DBG_NO_LLVM, "Disable the LLVM shader compiler" },
+ { "llvm", DBG_LLVM, "Enable the LLVM shader compiler" },
#endif
{ "nocpdma", DBG_NO_CP_DMA, "Disable CP DMA" },
@@ -505,8 +505,8 @@ struct pipe_screen *r600_screen_create(struct radeon_winsys *ws)
rscreen->b.debug_flags |= DBG_FS | DBG_VS | DBG_GS | DBG_PS | DBG_CS;
if (debug_get_bool_option("R600_HYPERZ", FALSE))
rscreen->b.debug_flags |= DBG_HYPERZ;
- if (!debug_get_bool_option("R600_LLVM", TRUE))
- rscreen->b.debug_flags |= DBG_NO_LLVM;
+ if (debug_get_bool_option("R600_LLVM", FALSE))
+ rscreen->b.debug_flags |= DBG_LLVM;
if (rscreen->b.family == CHIP_UNKNOWN) {
fprintf(stderr, "r600: Unknown chipset 0x%04X\n", rscreen->b.info.pci_id);
diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h
index a29bb3b3022..f31fa45acb0 100644
--- a/src/gallium/drivers/r600/r600_pipe.h
+++ b/src/gallium/drivers/r600/r600_pipe.h
@@ -195,7 +195,7 @@ struct r600_gs_rings_state {
/* This must start from 16. */
/* features */
-#define DBG_NO_LLVM (1 << 17)
+#define DBG_LLVM (1 << 17)
#define DBG_NO_CP_DMA (1 << 18)
/* shader backend */
#define DBG_NO_SB (1 << 21)
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index b4b357ef1d9..81d879ac7ad 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1538,7 +1538,7 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
bool pos_emitted = false;
#ifdef R600_USE_LLVM
- use_llvm = !(rscreen->b.debug_flags & DBG_NO_LLVM);
+ use_llvm = rscreen->b.debug_flags & DBG_LLVM;
#endif
ctx.bc = &shader->bc;
ctx.shader = shader;