diff options
author | Andre Heider <a.heider@gmail.com> | 2019-02-10 18:31:59 +0100 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2019-03-07 00:38:13 -0800 |
commit | a4324dcefb749983e45d2ae7b005e1a6de4a3064 (patch) | |
tree | 0f133bd509b3d1eb94a336cda3139bfe6b8858c4 | |
parent | 8b010f35578205eecbe574e8ef3914b398ba0b55 (diff) |
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 <a.heider@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r-- | src/gallium/drivers/iris/iris_program.c | 11 |
1 files 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 * |