<div dir="ltr">On 20 January 2014 19:36, Paul Berry <span dir="ltr"><<a href="mailto:stereotype441@gmail.com" target="_blank">stereotype441@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="im">On 20 December 2013 06:38, Topi Pohjolainen <span dir="ltr"><<a href="mailto:topi.pohjolainen@intel.com" target="_blank">topi.pohjolainen@intel.com</a>></span> wrote:<br>
</div><div class="gmail_extra"><div class="gmail_quote"><div class="im">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp<br>


index b189aa2..dcfd82b 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp<br>
+++ b/src/mesa/drivers/dri/i965/brw_blorp_blit_eu.cpp<br>
@@ -148,3 +148,15 @@ brw_blorp_eu_emitter::emit_render_target_write(const struct brw_reg &src0,<br>
                 true /* eot */,<br>
                 use_header);<br>
 }<br>
+<br>
+void<br>
+brw_blorp_eu_emitter::emit_combine(unsigned texture_data_type,<br>
+                                   const struct brw_reg &dst,<br>
+                                   const struct brw_reg &src_1,<br>
+                                   const struct brw_reg &src_2)<br>
+{<br>
+   if (texture_data_type == BRW_REGISTER_TYPE_F)<br>
+      brw_ADD(&func, dst, src_1, src_2);<br>
+   else<br>
+      brw_AVG(&func, dst, src_1, src_2);<br>
+}<br></blockquote><div><br></div></div><div>It's a bit of an awkward split to have most of the algorithm for combining samples in brw_blorp_blit_program::manual_blend_average(), but the choice of whether to use ADD or AVG is here in brw_blorp_eu_emitter::emit_combine().  How about if we replace texture_data_type with a bool called "combine_using_add"?  That way someone reading manual_blend_average() won't have to refer to emit_combine() to understand what the algorithm does; and similarly someone reading emt_combine() won't have to look at manual_blend_average() to understand why we use ADD for floats and AVG for ints.<br>
</div></div></div></div></blockquote><div><br></div><div>On further reflection, I think it would be even better to replace the texture_data_type argument with an opcode argument--that way the caller can pass in BRW_OPCODE_ADD or BRW_OPCODE_AVG.  Once we get to patch 42/42, this function can be changed to just plumb the opcode straight through into the fs_inst constructor.<br>
</div></div></div></div>