<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Feb 26, 2018 at 3:10 PM, Jason Ekstrand <span dir="ltr"><<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">This patch would be much easier to review if the commit message had an example of the change.<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 21, 2018 at 1:45 PM, Rafael Antognolli <span dir="ltr"><<a href="mailto:rafael.antognolli@intel.com" target="_blank">rafael.antognolli@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Some instructions contain fields that are either an address or a value<br>
of some type based on the content of other fields, such as clear color<br>
values vs address. That works fine if these fields are in the less<br>
significant dword, the lower 32 bits of the address, because they get<br>
OR'ed with the address. But if they are in the higher 32 bits, they get<br>
discarded.<br>
<br>
On Gen10 we have fields that share space with the higher 16 bits of the<br>
address too. This commit makes sure those fields don't get discarded.<br>
<br>
Signed-off-by: Rafael Antognolli <<a href="mailto:rafael.antognolli@intel.com" target="_blank">rafael.antognolli@intel.com</a>><br>
---<br>
 src/intel/genxml/gen_pack_hea<wbr>der.py | 9 +++++++--<br>
 1 file changed, 7 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/intel/genxml/gen_pack_he<wbr>ader.py b/src/intel/genxml/gen_pack_he<wbr>ader.py<br>
index e6cea8646ff..e81695e2aea 100644<br>
--- a/src/intel/genxml/gen_pack_he<wbr>ader.py<br>
+++ b/src/intel/genxml/gen_pack_he<wbr>ader.py<br>
@@ -486,11 +486,16 @@ class Group(object):<br>
                 v_address = "v%d_address" % index<br>
                 print("   const uint64_t %s =\n      __gen_combine_address(data, &dw[%d], values->%s, %s);" %<br>
                       (v_address, index, <a href="http://dw.address.name" rel="noreferrer" target="_blank">dw.address.name</a> + field.dim, v))<br>
-                v = v_address<br>
-<br>
+                if len(dw.fields) > address_count:<br>
+                    print("   dw[%d] = %s;" % (index, v_address))<br>
+                    print("   dw[%d] = (%s >> 32) | (%s >> 32);" % (index + 1, v_address, v))<br>
+                    continue<br>
+                else:<br>
+                    v = v_address<br></blockquote></div></div></div></div></blockquote><div><br></div><div>This code is gross but that's not your fault.  I've been playing with it for an hour or so and haven't come up with anything better.<br><br></div><div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
             print("   dw[%d] = %s;" % (index, v))<br>
             print("   dw[%d] = %s >> 32;" % (index + 1, v))<br>
<br>
+<br>
 class Value(object):<br>
     def __init__(self, attrs):<br>
         <a href="http://self.name" rel="noreferrer" target="_blank">self.name</a> = safe_name(attrs["name"])<br>
<span class="m_-5409202709003455700HOEnZb"><font color="#888888">--<br>
2.14.3<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>