diff options
author | Michel Dänzer <[email protected]> | 2012-10-05 16:59:10 +0200 |
---|---|---|
committer | Michel Dänzer <[email protected]> | 2012-10-26 15:51:17 +0200 |
commit | 44ef033c25ee0dde97a2339d4439560885d52cad (patch) | |
tree | bd4147b322bd0ad4b02aa146639c95aebbcc1542 /src/gallium/drivers/radeonsi/radeonsi_shader.c | |
parent | f3257d80b0e3885607afda642d326e47db48ed62 (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.c | 7 |
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; |