[Mesa-dev] [PATCH] r600g: Disable LLVM by default at runtime for graphics
Tom Stellard
tom at stellard.net
Wed Apr 16 07:05:14 PDT 2014
On Wed, Apr 16, 2014 at 03:12:47PM +0900, Michel Dänzer wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> 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 at lists.freedesktop.org>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
> ---
> src/gallium/drivers/r600/r600_pipe.c | 6 +++---
> src/gallium/drivers/r600/r600_pipe.h | 2 +-
> src/gallium/drivers/r600/r600_shader.c | 2 +-
> 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 c037662..7d254a9 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" },
>
> @@ -569,8 +569,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 0a3fa42..6787d98 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 b4b357e..81d879a 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;
> --
> 1.9.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list