On most hardware, there is a minimum pitch alignment for linear and any greater multiple of the alignment is fine. On Navi, the pitch in bytes for linear must be align(width * bpp / 8, 256). That's because the hw computes the pitch from the width and doesn't allow setting a custom pitch. For that reason, multi-GPU sharing might not be possible if the other GPU doesn't align the pitch in exactly the same way. Marek On Thu, May 28, 2020 at 10:38 AM Simon Ser wrote: > There have suggestions to bake pitch alignment, address alignement, > contiguous memory or other placement (hidden VRAM, GTT/BAR, etc) > constraints into modifiers. Last time this was brought up it seemed > like the consensus was to not allow this. Document this in drm_fourcc.h. > > There are several reasons for this. > > - Encoding all of these constraints in the modifiers would explode the > search space pretty quickly (we only have 64 bits to work with). > - Modifiers need to be unambiguous: a buffer can only have a single > modifier. > - Modifier users aren't expected to parse modifiers. > > v2: add paragraph about aliases (Daniel) > > v3: fix unrelated changes sent with the patch > > Signed-off-by: Simon Ser > Reviewed-by: Daniel Vetter > Cc: Daniel Stone > Cc: Bas Nieuwenhuizen > Cc: Dave Airlie > Cc: Marek Olšák > --- > include/uapi/drm/drm_fourcc.h | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h > index 490143500a50..f41fcb1ed63d 100644 > --- a/include/uapi/drm/drm_fourcc.h > +++ b/include/uapi/drm/drm_fourcc.h > @@ -58,6 +58,21 @@ extern "C" { > * may preserve meaning - such as number of planes - from the fourcc code, > * whereas others may not. > * > + * Modifiers must uniquely encode buffer layout. In other words, a buffer > must > + * match only a single modifier. A modifier must not be a subset of > layouts of > + * another modifier. For instance, it's incorrect to encode pitch > alignment in > + * a modifier: a buffer may match a 64-pixel aligned modifier and a > 32-pixel > + * aligned modifier. That said, modifiers can have implicit minimal > + * requirements. > + * > + * For modifiers where the combination of fourcc code and modifier can > alias, > + * a canonical pair needs to be defined and used by all drivers. An > example > + * is AFBC, where both ARGB and ABGR have the exact same compressed > layout. > + * > + * Users see modifiers as opaque tokens they can check for equality and > + * intersect. Users musn't need to know to reason about the modifier value > + * (i.e. users are not expected to extract information out of the > modifier). > + * > * Vendors should document their modifier usage in as much detail as > * possible, to ensure maximum compatibility across devices, drivers and > * applications. > -- > 2.26.2 > > >