All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] drm/fourcc: document modifier uniqueness requirements
@ 2020-05-28 14:38 Simon Ser
  2020-05-28 15:49 ` Marek Olšák
  2020-06-01 11:01 ` Brian Starkey
  0 siblings, 2 replies; 18+ messages in thread
From: Simon Ser @ 2020-05-28 14:38 UTC (permalink / raw)
  To: dri-devel; +Cc: Daniel Vetter, Marek Olšák

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 <contact@emersion.fr>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Daniel Stone <daniel@fooishbar.org>
Cc: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Cc: Dave Airlie <airlied@gmail.com>
Cc: Marek Olšák <maraeo@gmail.com>
---
 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


_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2020-06-04  9:16 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-28 14:38 [PATCH v3] drm/fourcc: document modifier uniqueness requirements Simon Ser
2020-05-28 15:49 ` Marek Olšák
2020-05-29  8:59   ` Simon Ser
2020-05-29 13:28     ` Alex Deucher
2020-05-29 13:43       ` Daniel Vetter
2020-05-29 13:56       ` Daniel Stone
2020-05-29 14:29         ` Alex Deucher
2020-05-29 14:30           ` Daniel Stone
2020-05-29 14:36             ` Alex Deucher
2020-05-29 15:01               ` Daniel Stone
2020-05-29 15:31                 ` Alex Deucher
2020-05-30 13:08                 ` Michel Dänzer
2020-06-01 14:25                 ` Alex Deucher
2020-06-03  9:48                   ` Daniel Stone
2020-06-03 18:53                     ` Marek Olšák
2020-06-04  9:14                       ` Daniel Stone
2020-06-01 13:43         ` Neil Armstrong
2020-06-01 11:01 ` Brian Starkey

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.