summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/radeonsi_shader.c
diff options
context:
space:
mode:
authorMichel Dänzer <[email protected]>2012-10-05 16:59:10 +0200
committerMichel Dänzer <[email protected]>2012-10-26 15:51:17 +0200
commit44ef033c25ee0dde97a2339d4439560885d52cad (patch)
treebd4147b322bd0ad4b02aa146639c95aebbcc1542 /src/gallium/drivers/radeonsi/radeonsi_shader.c
parentf3257d80b0e3885607afda642d326e47db48ed62 (diff)
radeonsi: Don't snoop context state while building shaders.
Let's use the shader key describing the state. Ported from r600g commit b6521801070d52bdd5908824e82c1ce2dde16e8e. Signed-off-by: Michel Dänzer <[email protected]> Reviewed-by: Tom Stellard <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/radeonsi_shader.c')
-rw-r--r--src/gallium/drivers/radeonsi/radeonsi_shader.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c
index 8a55e0dfab0..32755127b58 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_shader.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c
@@ -55,6 +55,7 @@ struct si_shader_context
struct tgsi_parse_context parse;
struct tgsi_token * tokens;
struct si_pipe_shader *shader;
+ struct si_shader_key key;
unsigned type; /* TGSI_PROCESSOR_* specifies the type of shader. */
unsigned ninput_emitted;
/* struct list_head inputs; */
@@ -405,7 +406,7 @@ static void si_llvm_init_export_args(struct lp_build_tgsi_context *bld_base,
if (cbuf >= 0 && cbuf < 8) {
struct r600_context *rctx = si_shader_ctx->rctx;
- compressed = (rctx->export_16bpc >> cbuf) & 0x1;
+ compressed = (si_shader_ctx->key.export_16bpc >> cbuf) & 0x1;
}
}
@@ -681,7 +682,8 @@ static const struct lp_build_tgsi_action tex_action = {
int si_pipe_shader_create(
struct pipe_context *ctx,
- struct si_pipe_shader *shader)
+ struct si_pipe_shader *shader,
+ struct si_shader_key key)
{
struct r600_context *rctx = (struct r600_context*)ctx;
struct si_pipe_shader_selector *sel = shader->selector;
@@ -718,6 +720,7 @@ int si_pipe_shader_create(
si_shader_ctx.tokens = sel->tokens;
tgsi_parse_init(&si_shader_ctx.parse, si_shader_ctx.tokens);
si_shader_ctx.shader = shader;
+ si_shader_ctx.key = key;
si_shader_ctx.type = si_shader_ctx.parse.FullHeader.Processor.Processor;
si_shader_ctx.rctx = rctx;