radeonsi: Fix w component of TGSI_SEMANTIC_POSITION fragment shader inputs.

It's the reciprocal of the register value.

Fixes piglit fragcoord_w and glsl-fs-fragcoord-zw-perspective.

NOTE: This is a candidate for the 9.1 branch.
This commit is contained in:
Michel Dänzer 2013-02-13 15:57:23 +01:00 committed by Michel Dänzer
parent 18272c9b1b
commit 954bc4ac34
1 changed files with 8 additions and 0 deletions

View File

@ -263,6 +263,14 @@ static void declare_input_fs(
build_intrinsic(base->gallivm->builder,
"llvm.SI.fs.read.pos", input_type,
args, 1, LLVMReadNoneAttribute);
if (chan == 3)
/* RCP for fragcoord.w */
si_shader_ctx->radeon_bld.inputs[soa_index] =
LLVMBuildFDiv(gallivm->builder,
lp_build_const_float(gallivm, 1.0f),
si_shader_ctx->radeon_bld.inputs[soa_index],
"");
}
return;
}