[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