We can't support IF statements in 16-wide on these. To get back to 16-wide for these shaders, we need to support predicate on discard instructions in the backend IR, which is something we've sort of got on the list to do anyway.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55828 --- src/mesa/drivers/dri/i965/brw_fs_fp.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp index c0a8810..636199e 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp @@ -260,6 +260,8 @@ fs_visitor::emit_fragment_program_code() regoffset(src[0], i), 0.0f); inst->conditional_mod = BRW_CONDITIONAL_L; + if (intel->gen < 6 && c->dispatch_width == 16) + fail("Can't support (non-uniform) control flow on 16-wide"); inst = emit(BRW_OPCODE_IF); inst->predicate = BRW_PREDICATE_NORMAL; emit(FS_OPCODE_DISCARD); -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev