summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2012-01-09 10:27:44 -0800
committerEric Anholt <[email protected]>2012-01-09 10:47:09 -0800
commit83dc891b41c0224f5ba3624b3e3560129e644e28 (patch)
tree2e13d4509632ff648e3813de4a834cd42341192c /src/mesa/drivers/dri
parent108cba21dec82a7e10962cf01f2835e7b950ff74 (diff)
i965/fs: Fix GPU hangs with 16-wide integer div/mod on gen7.
Acked-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_visitor.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 9f8a44a4742..44c9ee878f5 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -306,11 +306,17 @@ fs_visitor::visit(ir_expression *ir)
}
break;
case ir_binop_div:
+ if (intel->gen >= 7 && c->dispatch_width == 16)
+ fail("16-wide INTDIV unsupported\n");
+
/* Floating point should be lowered by DIV_TO_MUL_RCP in the compiler. */
assert(ir->type->is_integer());
emit_math(SHADER_OPCODE_INT_QUOTIENT, this->result, op[0], op[1]);
break;
case ir_binop_mod:
+ if (intel->gen >= 7 && c->dispatch_width == 16)
+ fail("16-wide INTDIV unsupported\n");
+
/* Floating point should be lowered by MOD_TO_FRACT in the compiler. */
assert(ir->type->is_integer());
emit_math(SHADER_OPCODE_INT_REMAINDER, this->result, op[0], op[1]);