[Mesa-dev] [PATCH] radeonsi: Handle TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS

Tom Stellard tom at stellard.net
Tue Feb 12 10:00:00 PST 2013


On Tue, Feb 12, 2013 at 06:39:09PM +0100, Michel Dänzer wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
> 
> 8 more little piglits.
>

Is this a candidate for the stable branch?
 
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
> ---
>  src/gallium/drivers/radeonsi/radeonsi_shader.c | 29 ++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c
> index 36711be..5b832f9 100644
> --- a/src/gallium/drivers/radeonsi/radeonsi_shader.c
> +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c
> @@ -612,6 +612,12 @@ static void si_llvm_emit_epilogue(struct lp_build_tgsi_context * bld_base)
>  		int i;
>  
>  		tgsi_parse_token(parse);
> +
> +		if (parse->FullToken.Token.Type == TGSI_TOKEN_TYPE_PROPERTY &&
> +		    parse->FullToken.FullProperty.Property.PropertyName ==
> +		    TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS)
> +			shader->fs_write_all = TRUE;
> +
>  		if (parse->FullToken.Token.Type != TGSI_TOKEN_TYPE_DECLARATION)
>  			continue;
>  
> @@ -775,6 +781,29 @@ static void si_llvm_emit_epilogue(struct lp_build_tgsi_context * bld_base)
>  	last_args[1] = lp_build_const_int32(base->gallivm,
>  					    si_shader_ctx->type == TGSI_PROCESSOR_FRAGMENT);
>  
> +	if (shader->fs_write_all && shader->nr_cbufs > 1) {
> +		int i;
> +
> +		/* Specify that this is not yet the last export */
> +		last_args[2] = lp_build_const_int32(base->gallivm, 0);
> +
> +		for (i = 1; i < shader->nr_cbufs; i++) {
> +			/* Specify the target we are exporting */
> +			last_args[3] = lp_build_const_int32(base->gallivm,
> +							    V_008DFC_SQ_EXP_MRT + i);
> +
> +			lp_build_intrinsic(base->gallivm->builder,
> +					   "llvm.SI.export",
> +					   LLVMVoidTypeInContext(base->gallivm->context),
> +					   last_args, 9);
> +
> +			si_shader_ctx->shader->spi_shader_col_format |=
> +				si_shader_ctx->shader->spi_shader_col_format << 4;
> +		}
> +
> +		last_args[3] = lp_build_const_int32(base->gallivm, V_008DFC_SQ_EXP_MRT);
> +	}
> +
>  	/* Specify that this is the last export */
>  	last_args[2] = lp_build_const_int32(base->gallivm, 1);
>  
> -- 
> 1.8.1.3
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list