summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2015-03-20 14:16:09 +0200
committerFrancisco Jerez <currojerez@riseup.net>2015-05-04 17:44:17 +0300
commit046abc998c6951ea8a4aee0a2c1b832f6c877b73 (patch)
tree2ac6d41c8c3f788c9180e117170e7bdd9b4da342 /src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
parent3da9f708d4f1375d674fae4d6c6eb06e4c8d9613 (diff)
downloadexternal_mesa3d-046abc998c6951ea8a4aee0a2c1b832f6c877b73.zip
external_mesa3d-046abc998c6951ea8a4aee0a2c1b832f6c877b73.tar.gz
external_mesa3d-046abc998c6951ea8a4aee0a2c1b832f6c877b73.tar.bz2
i965: Define helper function to copy an arbitrary live component from some register.
Reviewed-by: Matt Turner <mattst88@gmail.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs_visitor.cpp')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_visitor.cpp12
1 files changed, 12 insertions, 0 deletions
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)
{