[Mesa-dev] [PATCH] r600g: Disable LLVM by default at runtime for graphics

Alex Deucher alexdeucher at gmail.com
Wed Apr 16 06:13:56 PDT 2014


On Wed, Apr 16, 2014 at 2:12 AM, Michel Dänzer <michel at daenzer.net> 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: Alex Deucher <alexander.deucher 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