diff options
author | Marek Olšák <[email protected]> | 2013-07-30 22:29:29 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2013-08-17 01:48:25 +0200 |
commit | 6d4755a4d75436fb117b28d18fa19d2461b6621d (patch) | |
tree | aff559258cfc1ee36108ca1fcf31b88641fdc218 /src/gallium/drivers/radeonsi/radeonsi_shader.c | |
parent | 07955d4f2b969efb59b9c35c1fba5a0cae2cdc55 (diff) |
radeonsi: implement GL_SAMPLE_ALPHA_TO_ONE
Reviewed-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/radeonsi_shader.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/radeonsi_shader.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c index 6bf4b05ec87..cbe10ccaa1f 100644 --- a/src/gallium/drivers/radeonsi/radeonsi_shader.c +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c @@ -561,6 +561,17 @@ static void si_alpha_test(struct lp_build_tgsi_context *bld_base, } } +static void si_alpha_to_one(struct lp_build_tgsi_context *bld_base, + unsigned index) +{ + struct si_shader_context *si_shader_ctx = si_shader_context(bld_base); + + /* set alpha to one */ + LLVMBuildStore(bld_base->base.gallivm->builder, + bld_base->base.one, + si_shader_ctx->radeon_bld.soa.outputs[index][3]); +} + static void si_llvm_emit_clipvertex(struct lp_build_tgsi_context * bld_base, LLVMValueRef (*pos)[9], unsigned index) { @@ -707,6 +718,9 @@ handle_semantic: param_count++; } else { target = V_008DFC_SQ_EXP_MRT + color_count; + if (si_shader_ctx->shader->key.ps.alpha_to_one) { + si_alpha_to_one(bld_base, index); + } if (color_count == 0 && si_shader_ctx->shader->key.ps.alpha_func != PIPE_FUNC_ALWAYS) si_alpha_test(bld_base, index); |