On Mon, Feb 26, 2018 at 3:10 PM, Jason Ekstrand <ja...@jlekstrand.net>
wrote:

> This patch would be much easier to review if the commit message had an
> example of the change.
>
> On Wed, Feb 21, 2018 at 1:45 PM, Rafael Antognolli <
> rafael.antogno...@intel.com> wrote:
>
>> Some instructions contain fields that are either an address or a value
>> of some type based on the content of other fields, such as clear color
>> values vs address. That works fine if these fields are in the less
>> significant dword, the lower 32 bits of the address, because they get
>> OR'ed with the address. But if they are in the higher 32 bits, they get
>> discarded.
>>
>> On Gen10 we have fields that share space with the higher 16 bits of the
>> address too. This commit makes sure those fields don't get discarded.
>>
>> Signed-off-by: Rafael Antognolli <rafael.antogno...@intel.com>
>> ---
>>  src/intel/genxml/gen_pack_header.py | 9 +++++++--
>>  1 file changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/intel/genxml/gen_pack_header.py
>> b/src/intel/genxml/gen_pack_header.py
>> index e6cea8646ff..e81695e2aea 100644
>> --- a/src/intel/genxml/gen_pack_header.py
>> +++ b/src/intel/genxml/gen_pack_header.py
>> @@ -486,11 +486,16 @@ class Group(object):
>>                  v_address = "v%d_address" % index
>>                  print("   const uint64_t %s =\n
>> __gen_combine_address(data, &dw[%d], values->%s, %s);" %
>>                        (v_address, index, dw.address.name + field.dim,
>> v))
>> -                v = v_address
>> -
>> +                if len(dw.fields) > address_count:
>> +                    print("   dw[%d] = %s;" % (index, v_address))
>> +                    print("   dw[%d] = (%s >> 32) | (%s >> 32);" %
>> (index + 1, v_address, v))
>> +                    continue
>> +                else:
>> +                    v = v_address
>>
>
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.

Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net>


>              print("   dw[%d] = %s;" % (index, v))
>>              print("   dw[%d] = %s >> 32;" % (index + 1, v))
>>
>> +
>>  class Value(object):
>>      def __init__(self, attrs):
>>          self.name = safe_name(attrs["name"])
>> --
>> 2.14.3
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to