summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Heider <a.heider@gmail.com>2019-02-10 18:31:59 +0100
committerKenneth Graunke <kenneth@whitecape.org>2019-03-07 00:38:13 -0800
commita4324dcefb749983e45d2ae7b005e1a6de4a3064 (patch)
tree0f133bd509b3d1eb94a336cda3139bfe6b8858c4
parent8b010f35578205eecbe574e8ef3914b398ba0b55 (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.c11
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 *