[Mesa-dev] [PATCH] radeonsi: Fix y/z/w component values of TGSI_SEMANTIC_FOG pixel shader inputs

Michel Dänzer michel at daenzer.net
Wed Aug 21 09:33:06 PDT 2013


From: Michel Dänzer <michel.daenzer at amd.com>

They are defined as constant 0.0/0.0/1.0.

Three more little piglits.

Cc: mesa-stable at lists.freedesktop.org
Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
 src/gallium/drivers/radeonsi/radeonsi_shader.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c
index f1c7c6b..a1dec17 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_shader.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c
@@ -198,6 +198,8 @@ static void declare_input_fs(
 	struct si_shader *shader = &si_shader_ctx->shader->shader;
 	struct lp_build_context * base =
 				&si_shader_ctx->radeon_bld.soa.bld_base.base;
+	struct lp_build_context *uint =
+				&si_shader_ctx->radeon_bld.soa.bld_base.uint_bld;
 	struct gallivm_state * gallivm = base->gallivm;
 	LLVMTypeRef input_type = LLVMFloatTypeInContext(gallivm->context);
 	LLVMValueRef main_fn = si_shader_ctx->radeon_bld.main_fn;
@@ -341,6 +343,22 @@ static void declare_input_fs(
 		}
 
 		shader->ninterp++;
+	} else if (decl->Semantic.Name == TGSI_SEMANTIC_FOG) {
+		LLVMValueRef args[4];
+
+		args[0] = uint->zero;
+		args[1] = attr_number;
+		args[2] = params;
+		args[3] = interp_param;
+		si_shader_ctx->radeon_bld.inputs[radeon_llvm_reg_index_soa(input_index, 0)] =
+			build_intrinsic(base->gallivm->builder, intr_name,
+						input_type, args, args[3] ? 4 : 3,
+						LLVMReadNoneAttribute | LLVMNoUnwindAttribute);
+		si_shader_ctx->radeon_bld.inputs[radeon_llvm_reg_index_soa(input_index, 1)] =
+		si_shader_ctx->radeon_bld.inputs[radeon_llvm_reg_index_soa(input_index, 2)] =
+			lp_build_const_float(gallivm, 0.0f);
+		si_shader_ctx->radeon_bld.inputs[radeon_llvm_reg_index_soa(input_index, 3)] =
+			lp_build_const_float(gallivm, 1.0f);
 	} else {
 		for (chan = 0; chan < TGSI_NUM_CHANNELS; chan++) {
 			LLVMValueRef args[4];
-- 
1.8.4.rc3



More information about the mesa-dev mailing list