[Mesa-dev] [PATCH] i965: Extend the negative 32-bit deltas to 64-bits

Sergii Romantsov sergii.romantsov at gmail.com
Tue Mar 27 06:20:11 UTC 2018


Hello Stuart,
Nice to hear.
And thanks for your time and contribution.

On Tue, Mar 27, 2018 at 8:40 AM, Stuart Young <cefiar at gmail.com> wrote:

> Hi Sergii,
>
> I built this into mesa 17.3.7 and it seems to solve all the issues I've
> seen that were mentioned in 101408.
>
> This includes not just the issues with the Mortar, but the other visual
> artefacts that I've noticed with the player models and with other weapons
> in the game.
>
> Many thanks for digging into this.
>
>
> On 26 March 2018 at 23:22, Sergii Romantsov <sergii.romantsov at globallogic.
> com> wrote:
>
>> Hello, Stuart.
>> Could You, please, test this patch?
>>
>> On Mon, Mar 26, 2018 at 3:16 PM, Sergii Romantsov <
>> sergii.romantsov at gmail.com> wrote:
>>
>>> Negative deltas are used to fake a range in a large buffer.
>>> See 900a5c91eeb3
>>> "i965: Use negative relocation deltas to minimise vertex uploads"
>>>
>>> Gen8+ use 48-bit address relocations so need to extend the sign
>>> to 64-bit return value. Without it we have higher bits zeroed
>>> and missing the negavive values.
>>> Haswell and older use 32-bit deltas so are unaffected by this issue.
>>>
>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101408
>>> Signed-off-by: Sergii Romantsov <sergii.romantsov at globallogic.com>
>>> Tested-by: Andriy Khulap <andriy.khulap at globallogic.com>
>>> ---
>>>  src/mesa/drivers/dri/i965/intel_batchbuffer.c | 4 +++-
>>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c
>>> b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
>>> index d824ff2..128da77 100644
>>> --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c
>>> +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
>>> @@ -1124,8 +1124,10 @@ emit_reloc(struct intel_batchbuffer *batch,
>>>     /* Using the old buffer offset, write in what the right data would
>>> be, in
>>>      * case the buffer doesn't move and we can short-circuit the
>>> relocation
>>>      * processing in the kernel
>>> +    *
>>> +    * Some target_offsets may be negative, so extend the sign to 64
>>> bits.
>>>      */
>>> -   return entry->offset + target_offset;
>>> +   return entry->offset + (int64_t)((int32_t)target_offset);
>>>  }
>>>
>>>  uint64_t
>>> --
>>> 2.7.4
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>>
>>
>>
>>
>> --
>> Sergii Romantsov
>> GlobalLogic Inc.
>> www.globallogic.com
>>
>
>
>
> --
> Stuart Young (aka Cefiar)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180327/f193452a/attachment.html>


More information about the mesa-dev mailing list