From 046abc998c6951ea8a4aee0a2c1b832f6c877b73 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Fri, 20 Mar 2015 14:16:09 +0200 Subject: i965: Define helper function to copy an arbitrary live component from some register. Reviewed-by: Matt Turner --- src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/mesa/drivers/dri/i965/brw_fs_visitor.cpp') diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 5e453a1..fc05e77 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -335,6 +335,18 @@ fs_visitor::emit_minmax(enum brw_conditional_mod conditionalmod, const fs_reg &d } } +void +fs_visitor::emit_uniformize(const fs_reg &dst, const fs_reg &src) +{ + const fs_reg chan_index = vgrf(glsl_type::uint_type); + + emit(SHADER_OPCODE_FIND_LIVE_CHANNEL, component(chan_index, 0)) + ->force_writemask_all = true; + emit(SHADER_OPCODE_BROADCAST, component(dst, 0), + src, component(chan_index, 0)) + ->force_writemask_all = true; +} + bool fs_visitor::try_emit_saturate(ir_expression *ir) { -- cgit v1.1