<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Thu, Nov 8, 2018 at 7:22 AM Alejandro Piñeiro <<a href="mailto:apinheiro@igalia.com">apinheiro@igalia.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The offset compute was working fine for the case of attrib_slots=1,<br>
and updating the offset for the following varying.<br>
<br>
But in the case of attrib_slots=2 (so dvec3/4), we are basically<br>
splitting the comp_slots needed in two outputs. In that case we can't<br>
add to the offset the full size of the type.<br>
---<br>
 src/compiler/nir/nir_gather_xfb_info.c | 6 +++++-<br>
 1 file changed, 5 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/compiler/nir/nir_gather_xfb_info.c b/src/compiler/nir/nir_gather_xfb_info.c<br>
index f5d831c6567..01fc2b26624 100644<br>
--- a/src/compiler/nir/nir_gather_xfb_info.c<br>
+++ b/src/compiler/nir/nir_gather_xfb_info.c<br>
@@ -81,7 +81,11 @@ add_var_xfb_outputs(nir_xfb_info *xfb,<br>
          output->component_mask = (comp_mask >> (s * 4)) & 0xf;<br>
<br>
          (*location)++;<br>
-         *offset += comp_slots * 4;<br>
+         /* attrib_slots would be only > 1 for doubles. On that case<br>
+          * comp_slots will be a multiple of 2, so the following doesn't need<br>
+          * to use DIV_ROUND_UP or similar<br>
+          */<br>
+         *offset += comp_slots / attrib_slots * 4;<br></blockquote><div><br></div><div>Mind adding an assert(comp_slots % attrib_slots == 0)?  Also, can we make that "(comp_slots / attrib_slots) * 4"?  I don't like thinking about precedence at that detail.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
       }<br>
    }<br>
 }<br>
-- <br>
2.14.1<br>
<br>
</blockquote></div></div>