Le mardi 14 mai 2024 à 23:42 +0300, Laurent Pinchart a écrit : > > You'll hit the same limitation as we hit in GStreamer, which is that KMS driver > > only offer allocation for render buffers and most of them are missing allocators > > for YUV buffers, even though they can import in these formats. (kms allocators, > > except dumb, which has other issues, are format aware). > > My experience on Arm platforms is that the KMS drivers offer allocation > for scanout buffers, not render buffers, and mostly using the dumb > allocator API. If the KMS device can scan out YUV natively, YUV buffer > allocation should be supported. Am I missing something here ? There is two APIs, Dumb is the legacy allocation API, only used by display drivers indeed, and the API does not include a pixel format or a modifier. The allocation of YUV buffer has been made through a small hack, bpp = number of bits per component (of luma plane if multiple planes) width = width height = height * X Where X will vary, "3 / 2" is used for 420 subsampling, "2" for 422 and "3" for 444. It is far from idea, requires deep knowledge of each formats in the application and cannot allocate each planes seperatly. The second is to use the driver specific allocation API. This is then abstracted by GBM. This allows allocating render buffers with notably modifiers and/or use cases. But no support for YUV formats or multi-planar formats. Nicolas