mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
i965: fix pixel w interpolation on sandybridge
(cherry picked from commit 15a8e7ec90)
This commit is contained in:
parent
e00bb8732c
commit
3dd52d51ce
1 changed files with 16 additions and 4 deletions
|
|
@ -269,6 +269,13 @@ void emit_pixel_w(struct brw_wm_compile *c,
|
|||
{
|
||||
struct brw_compile *p = &c->func;
|
||||
struct intel_context *intel = &p->brw->intel;
|
||||
struct brw_reg src;
|
||||
struct brw_reg temp_dst;
|
||||
|
||||
if (intel->gen >= 6)
|
||||
temp_dst = dst[3];
|
||||
else
|
||||
temp_dst = brw_message_reg(2);
|
||||
|
||||
assert(intel->gen < 6);
|
||||
|
||||
|
|
@ -282,24 +289,29 @@ void emit_pixel_w(struct brw_wm_compile *c,
|
|||
* result straight into a message reg.
|
||||
*/
|
||||
if (can_do_pln(intel, deltas)) {
|
||||
brw_PLN(p, brw_message_reg(2), interp3, deltas[0]);
|
||||
brw_PLN(p, temp_dst, interp3, deltas[0]);
|
||||
} else {
|
||||
brw_LINE(p, brw_null_reg(), interp3, deltas[0]);
|
||||
brw_MAC(p, brw_message_reg(2), suboffset(interp3, 1), deltas[1]);
|
||||
brw_MAC(p, temp_dst, suboffset(interp3, 1), deltas[1]);
|
||||
}
|
||||
|
||||
/* Calc w */
|
||||
if (intel->gen >= 6)
|
||||
src = temp_dst;
|
||||
else
|
||||
src = brw_null_reg();
|
||||
|
||||
if (c->dispatch_width == 16) {
|
||||
brw_math_16(p, dst[3],
|
||||
BRW_MATH_FUNCTION_INV,
|
||||
BRW_MATH_SATURATE_NONE,
|
||||
2, brw_null_reg(),
|
||||
2, src,
|
||||
BRW_MATH_PRECISION_FULL);
|
||||
} else {
|
||||
brw_math(p, dst[3],
|
||||
BRW_MATH_FUNCTION_INV,
|
||||
BRW_MATH_SATURATE_NONE,
|
||||
2, brw_null_reg(),
|
||||
2, src,
|
||||
BRW_MATH_DATA_VECTOR,
|
||||
BRW_MATH_PRECISION_FULL);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue