mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
i915: Calculate partial result to temp register first
Previously the SNE and SEQ instructions would calculate the partial
result to the destination register. This would cause problems if the
destination register was also one of the source registers.
Fixes piglit tests glsl-fs-any, glsl-fs-struct-equal,
glsl-fs-struct-notequal, glsl-fs-vec4-operator-equal,
glsl-fs-vec4-operator-notequal.
NOTE: This is a candidate for the 7.9 and 7.10 branches.
(cherry picked from commit 53b8b68843)
This commit is contained in:
parent
38c93ba921
commit
24a9d95ec7
1 changed files with 8 additions and 8 deletions
|
|
@ -809,18 +809,18 @@ upload_program(struct i915_fragment_program *p)
|
|||
flags = get_result_flags(inst);
|
||||
dst = get_result_vector(p, inst);
|
||||
|
||||
/* dst = src1 >= src2 */
|
||||
/* tmp = src1 >= src2 */
|
||||
i915_emit_arith(p,
|
||||
A0_SGE,
|
||||
dst,
|
||||
tmp,
|
||||
flags, 0,
|
||||
src_vector(p, &inst->SrcReg[0], program),
|
||||
src_vector(p, &inst->SrcReg[1], program),
|
||||
0);
|
||||
/* tmp = src1 <= src2 */
|
||||
/* dst = src1 <= src2 */
|
||||
i915_emit_arith(p,
|
||||
A0_SGE,
|
||||
tmp,
|
||||
dst,
|
||||
flags, 0,
|
||||
negate(src_vector(p, &inst->SrcReg[0], program),
|
||||
1, 1, 1, 1),
|
||||
|
|
@ -958,18 +958,18 @@ upload_program(struct i915_fragment_program *p)
|
|||
flags = get_result_flags(inst);
|
||||
dst = get_result_vector(p, inst);
|
||||
|
||||
/* dst = src1 < src2 */
|
||||
/* tmp = src1 < src2 */
|
||||
i915_emit_arith(p,
|
||||
A0_SLT,
|
||||
dst,
|
||||
tmp,
|
||||
flags, 0,
|
||||
src_vector(p, &inst->SrcReg[0], program),
|
||||
src_vector(p, &inst->SrcReg[1], program),
|
||||
0);
|
||||
/* tmp = src1 > src2 */
|
||||
/* dst = src1 > src2 */
|
||||
i915_emit_arith(p,
|
||||
A0_SLT,
|
||||
tmp,
|
||||
dst,
|
||||
flags, 0,
|
||||
negate(src_vector(p, &inst->SrcReg[0], program),
|
||||
1, 1, 1, 1),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue