On Wed, Apr 16, 2014 at 03:12:47PM +0900, Michel Dänzer wrote:
> From: Michel Dänzer <[email protected]>
> 
> 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" <[email protected]>
> Signed-off-by: Michel Dänzer <[email protected]>
Reviewed-by: Tom Stellard <[email protected]>

> ---
>  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
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to