[vlc-devel] [PATCH v3] picture: align pictures on 64 bytes

Rémi Denis-Courmont remi at remlab.net
Mon Nov 12 16:04:40 CET 2018


Maths don't work that way. If you add a multiple of 512 offset to a multiple of 16 pointer, you get a multiple of GCD(512, 16) = 16 pointer. Your plane is aligned to 16 bytes (or 32 bytes with the patch).

Le 12 novembre 2018 15:31:16 GMT+02:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>On 12/11/2018 14:09, Rémi Denis-Courmont wrote:
>> No. The plane offset from the start of the buffer / the first plane 
>> will be a multiple of 512 maybe. But the plane alignment cannot be 
>> larger than the containing buffer alignment.
>
>I don't see a problem here.
>
>If you allocate a 4:4:4 1x1 pixels picture it's adjusted to 32x16
>pixels 
>internally. Your lines will be 32 bytes and you'll have 16 of them per 
>plane. Each plane will be 512 bytes after the previous one.
>If you allocate a 4:2:0 1x1 pixels picture it's adjusted to 32x32
>pixels 
>internally. The first plane is 1024 bytes big, the other two are 256 
>bytes big.
>
>(this wasn't true when we arbitrarily added the 2 extra lines)
>
>So with the current picture_Setup() was cannot go lower than 256 bytes 
>aligned for any planes. That's far more than the 64 bytes alignment
>lavc 
>requires on all planes.
>
>> So we should probably align the allocation to at least 512 for 
>> consistency. IMO we should align to page size and forget about the 
>> problem going forward, as we can probably never align beyond that.
>>
>> Le 12 novembre 2018 13:44:08 GMT+02:00, Steve Lhomme 
>> <robux4 at ycbcr.xyz> a écrit :
>>
>>     On 12/11/2018 11:59, Rémi Denis-Courmont wrote:
>>
>>         As far as I am concerned, the picture buffer could and maybe
>>         should be page-aligned anyway. The real question is what the
>>         plane and scan line alignment should be, which this patch
>>         leaves entirely open. 
>>
>>
>>     picture_Allocate() is called after picture_Setup() which aligns
>lines to
>>     at least 32 bytes. Then the amount of lines is also made a
>multiple of
>>     16. So all the planes are always aligned to 512 bytes.
>>
>>     >
>>
>>         Le 12 novembre 2018 11:48:25 GMT+02:00, Francois Cartegnie
>>         <fcvlcdev at free.fr> a écrit : Le 12/11/2018 à 09:39, Steve
>>         Lhomme a écrit : Code relying on AVX-2 (like dav1d) cannot
>>         work without an alignment of 32 bytes at least. Even avcodec
>>         has a requirement of 64 (likely to get at least 32 on all
>>         planes). So it's probably time to upgrade. picture_Setup
>>         ensures a horizontal alignment to 32 bytes and a vertical to
>>         16 bytes. So for all buffers allocated by the core, we have a
>>         size multiple of 512 bytes. Didn't we had an issue with some
>>         codec*filter*idontremember and anything 16 ? -- Envoyé de mon
>>         appareil Android avec Courriel K-9 Mail. Veuillez excuser ma
>>         brièveté.
>>        
>------------------------------------------------------------------------
>>         vlc-devel mailing list To unsubscribe or modify your
>>         subscription options:
>>         https://mailman.videolan.org/listinfo/vlc-devel 
>>
>>    
>------------------------------------------------------------------------
>>     vlc-devel mailing list
>>     To unsubscribe or modify your subscription options:
>>     https://mailman.videolan.org/listinfo/vlc-devel
>>
>>
>> -- 
>> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez 
>> excuser ma brièveté.
>>
>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel

-- 
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20181112/25d5fe07/attachment.html>


More information about the vlc-devel mailing list