From a4324dcefb749983e45d2ae7b005e1a6de4a3064 Mon Sep 17 00:00:00 2001 From: Andre Heider Date: Sun, 10 Feb 2019 18:31:59 +0100 Subject: [PATCH] iris: add support for tgsi_to_nir MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/gallium/drivers/iris/iris_program.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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 * -- 2.30.2