[Mesa-dev] [PATCH 1/2] radeon/llvm: Export prepare_cube_coords helper to driver.

Tom Stellard tom at stellard.net
Tue Dec 4 18:11:28 PST 2012


On Tue, Dec 04, 2012 at 07:03:48PM +0100, Michel Dänzer wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
> 
> To be used by radeonsi.
> 

For both patches:
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>

> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
> ---
>  src/gallium/drivers/radeon/radeon_llvm.h            |    3 +++
>  src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c |   18 ++++++++++--------
>  2 files changed, 13 insertions(+), 8 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeon/radeon_llvm.h b/src/gallium/drivers/radeon/radeon_llvm.h
> index 61975c4..61f3772 100644
> --- a/src/gallium/drivers/radeon/radeon_llvm.h
> +++ b/src/gallium/drivers/radeon/radeon_llvm.h
> @@ -152,6 +152,9 @@ static inline LLVMValueRef bitcast(
>  }
>  
>  
> +void radeon_llvm_emit_prepare_cube_coords(struct lp_build_tgsi_context * bld_base,
> +                                          LLVMValueRef *arg, unsigned target);
> +
>  void radeon_llvm_context_init(struct radeon_llvm_context * ctx);
>  
>  void radeon_llvm_dispose(struct radeon_llvm_context * ctx);
> diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
> index 5e3d6c2..46abb2b 100644
> --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
> +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
> @@ -514,11 +514,12 @@ static void kil_emit(
>  }
>  
>  
> -static void emit_prepare_cube_coords(
> +void radeon_llvm_emit_prepare_cube_coords(
>  		struct lp_build_tgsi_context * bld_base,
> -		struct lp_build_emit_data * emit_data)
> +		LLVMValueRef *arg,
> +                unsigned target)
>  {
> -	boolean shadowcube = (emit_data->inst->Texture.Texture == TGSI_TEXTURE_SHADOWCUBE);
> +	boolean shadowcube = (target == TGSI_TEXTURE_SHADOWCUBE);
>  	struct gallivm_state * gallivm = bld_base->base.gallivm;
>  	LLVMBuilderRef builder = gallivm->builder;
>  	LLVMTypeRef type = bld_base->base.elem_type;
> @@ -528,7 +529,7 @@ static void emit_prepare_cube_coords(
>  
>  	LLVMValueRef v = build_intrinsic(builder, "llvm.AMDGPU.cube",
>  			LLVMVectorType(type, 4),
> -			&emit_data->args[0],1, LLVMReadNoneAttribute);
> +			arg, 1, LLVMReadNoneAttribute);
>  
>  	/* save src.w for shadow cube */
>  	cnt = shadowcube ? 3 : 4;
> @@ -560,8 +561,7 @@ static void emit_prepare_cube_coords(
>  	coords[1] = coords[0];
>  	coords[0] = coords[3];
>  
> -	emit_data->args[0] = lp_build_gather_values(bld_base->base.gallivm,
> -						coords, 4);
> +	*arg = lp_build_gather_values(bld_base->base.gallivm, coords, 4);
>  }
>  
>  static void txd_fetch_args(
> @@ -610,7 +610,8 @@ static void txp_fetch_args(
>  	if ((inst->Texture.Texture == TGSI_TEXTURE_CUBE ||
>  	     inst->Texture.Texture == TGSI_TEXTURE_SHADOWCUBE) &&
>  	    inst->Instruction.Opcode != TGSI_OPCODE_TXQ) {
> -		emit_prepare_cube_coords(bld_base, emit_data);
> +		radeon_llvm_emit_prepare_cube_coords(bld_base, &emit_data->args[0],
> +                                                     inst->Texture.Texture);
>  	}
>  }
>  
> @@ -642,7 +643,8 @@ static void tex_fetch_args(
>  	if ((inst->Texture.Texture == TGSI_TEXTURE_CUBE ||
>  	     inst->Texture.Texture == TGSI_TEXTURE_SHADOWCUBE) &&
>  	    inst->Instruction.Opcode != TGSI_OPCODE_TXQ) {
> -		emit_prepare_cube_coords(bld_base, emit_data);
> +		radeon_llvm_emit_prepare_cube_coords(bld_base, &emit_data->args[0],
> +                                                     inst->Texture.Texture);
>  	}
>  }
>  
> -- 
> 1.7.10.4
> 
> _______________________________________________
> 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