On 11/20/2012 12:46 PM, Eric Anholt wrote:
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);

Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to