st/mesa: fix bug in emit_adjusted_wpos()
If we bias x,y we still need to pass through z,w in case the shader reads gl_FragCoord.z or .w. Fixes fd.o bug 29183 (piglit glsl-bug-22603). NOTE: This is a candidate for the 7.8 branch.
This commit is contained in:
parent
c65f4fd5ae
commit
e393350904
|
@ -738,9 +738,12 @@ emit_adjusted_wpos( struct st_translate *t,
|
|||
struct ureg_dst wpos_temp = ureg_DECL_temporary(ureg);
|
||||
struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]];
|
||||
|
||||
/* Note that we bias X and Y and pass Z and W through unchanged.
|
||||
* The shader might also use gl_FragCoord.w and .z.
|
||||
*/
|
||||
ureg_ADD(ureg,
|
||||
ureg_writemask(wpos_temp, TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y),
|
||||
wpos_input, ureg_imm1f(ureg, value));
|
||||
ureg_writemask(wpos_temp, TGSI_WRITEMASK_XYZW),
|
||||
wpos_input, ureg_imm4f(ureg, value, value, 0.0f, 0.0f));
|
||||
|
||||
t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]] = ureg_src(wpos_temp);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue