i965/fs: Add FS_OPCODE_MOV_DISPATCH_TO_FLAGS to fragment shader backend.
authorPaul Berry <stereotype441@gmail.com>
Mon, 18 Jun 2012 21:50:04 +0000 (14:50 -0700)
committerPaul Berry <stereotype441@gmail.com>
Mon, 2 Jul 2012 20:27:36 +0000 (13:27 -0700)
commit3f929efa2872aa5a4402520ec9fd551392e2413a
treefa71cc399a09981dfac0d16016719a2acb792f71
parent8aa78c104a6fa9497cba558b54c41f6f2292bd74
i965/fs: Add FS_OPCODE_MOV_DISPATCH_TO_FLAGS to fragment shader backend.

In order to compute centroid varyings correctly, the fragment shader
needs to be able to load the current pixel/sample mask into a flag
register.  This patch adds an opcode to the fragment shader back-end
to do this; the opcode gets translated into the instruction

mov(1)  f0<1>UW  g1.14<0,1,0>UW  { align1 WE_all }

Since this instruction clobbers f0, instruction scheduling has to
treat it the same as instructions that have a conditional modifier.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_defines.h
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_emit.cpp
src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp