i965: Add optimization pass to let us use the replicate data message
authorKristian Høgsberg <krh@bitplanet.net>
Mon, 7 Jul 2014 22:27:17 +0000 (15:27 -0700)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 15 Aug 2014 18:25:47 +0000 (11:25 -0700)
commitf9dc7aabb3273d6d8a54c6778a5695a8527f4454
tree5c3cebf3753a1ab35ac8a30edcfb5f59418c2753
parentba4507576c803cdb1aba4e317662a4bde79bf826
i965: Add optimization pass to let us use the replicate data message

The data port has a SIMD16 'replicate data' message, which lets us write
the same color for all 16 pixels by sending the four floats in the
lower half of a register instead of sending 4 times 16 identical
component values in 8 registers.

The message comes with a lot of restrictions and could be made generally
useful by recognizing when those restriction are satisfied.  For now,
this lets us enable the optimization when we know it's safe, but we don't
enable it by default.  The optimization works for simple color clear shaders
only, but does recognized and support multiple render targets.

Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_defines.h
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_generator.cpp