From: Andre Heider Date: Sun, 10 Feb 2019 17:31:59 +0000 (+0100) Subject: iris: add support for tgsi_to_nir X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a4324dcefb749983e45d2ae7b005e1a6de4a3064;p=mesa.git iris: add support for tgsi_to_nir The Gallium Nine state tracker now works on iris. Also tested with GALLIUM_HUD and Star Wars: Knights of the Old Republic on WINE (GL_ATI_fragment_shader). Signed-off-by: Andre Heider Reviewed-by: Timur Kristóf Reviewed-by: Kenneth Graunke --- diff --git a/src/gallium/drivers/iris/iris_program.c b/src/gallium/drivers/iris/iris_program.c index 2feb43a367f..0ceaeb22d27 100644 --- a/src/gallium/drivers/iris/iris_program.c +++ b/src/gallium/drivers/iris/iris_program.c @@ -41,6 +41,7 @@ #include "intel/compiler/brw_compiler.h" #include "intel/compiler/brw_nir.h" #include "iris_context.h" +#include "nir/tgsi_to_nir.h" #define KEY_INIT_NO_ID(gen) \ .tex.swizzles[0 ... MAX_SAMPLERS - 1] = 0x688, \ @@ -1410,10 +1411,14 @@ static struct iris_uncompiled_shader * iris_create_shader_state(struct pipe_context *ctx, const struct pipe_shader_state *state) { - assert(state->type == PIPE_SHADER_IR_NIR); + struct nir_shader *nir; - return iris_create_uncompiled_shader(ctx, state->ir.nir, - &state->stream_output); + if (state->type == PIPE_SHADER_IR_TGSI) + nir = tgsi_to_nir(state->tokens, ctx->screen); + else + nir = state->ir.nir; + + return iris_create_uncompiled_shader(ctx, nir, &state->stream_output); } static void *