linux/include/uapi/drm
Rob Clark e3eb3250d8 drm: add support for tiled/compressed/etc modifier in addfb2
In DRM/KMS we are lacking a good way to deal with tiled/compressed
formats.  Especially in the case of dmabuf/prime buffer sharing, where
we cannot always rely on under-the-hood flags passed to driver specific
gem-create ioctl to pass around these extra flags.

The proposal is to add a per-plane format modifier.  This allows to, if
necessary, use different tiling patters for sub-sampled planes, etc.
The format modifiers are added at the end of the ioctl struct, so for
legacy userspace it will be zero padded.

v1: original
v1.5: increase modifier to 64b

v2: Incorporate review comments from the big thread, plus a few more.

- Add a getcap so that userspace doesn't have to jump through hoops.
- Allow modifiers only when a flag is set. That way drivers know when
  they're dealing with old userspace and need to fish out e.g. tiling
  from other information.
- After rolling out checks for ->modifier to all drivers I've decided
  that this is way too fragile and needs an explicit opt-in flag. So
  do that instead.
- Add a define (just for documentation really) for the "NONE"
  modifier. Imo we don't need to add mask #defines since drivers
  really should only do exact matches against values defined with
  fourcc_mod_code.
- Drop the Samsung tiling modifier on Rob's request since he's not yet
  sure whether that one is accurate.

v3:
- Also add a new ->modifier[] array to struct drm_framebuffer and fill
  it in drm_helper_mode_fill_fb_struct. Requested by Tvrkto Uruslin.
- Remove TODO in comment and add code comment that modifiers should be
  properly documented, requested by Rob.

Cc: Rob Clark <robdclark@gmail.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Daniel Stone <daniel@fooishbar.org>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Michel Dänzer <michel@daenzer.net>
Signed-off-by: Rob Clark <robdclark@gmail.com> (v1.5)
Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-02-13 23:28:12 +01:00
..
armada_drm.h DRM: Armada: Add Armada DRM driver 2013-10-12 10:13:40 +01:00
drm_fourcc.h drm: add support for tiled/compressed/etc modifier in addfb2 2015-02-13 23:28:12 +01:00
drm_mode.h drm: add support for tiled/compressed/etc modifier in addfb2 2015-02-13 23:28:12 +01:00
drm_sarea.h
drm.h drm: add support for tiled/compressed/etc modifier in addfb2 2015-02-13 23:28:12 +01:00
exynos_drm.h drm/exynos: use drm generic mmap interface 2014-09-20 01:00:13 +09:00
i810_drm.h
i915_drm.h drm/i915: add I915_PARAM_HAS_BSD2 to i915_getparam 2015-01-27 09:51:05 +01:00
Kbuild drm/msm: add a3xx gpu support 2013-08-24 14:57:18 -04:00
mga_drm.h
msm_drm.h drm/msm: validate flags, etc 2014-03-31 10:27:46 -04:00
nouveau_drm.h drm/nouveau: expose the full object/event interfaces to userspace 2014-08-10 05:28:18 +10:00
omap_drm.h drm/omap: move out of staging 2013-02-16 17:38:06 -05:00
qxl_drm.h drm: add new QXL driver. (v1.4) 2013-04-12 13:51:07 +10:00
r128_drm.h
radeon_drm.h drm/radeon: add RADEON_GEM_NO_CPU_ACCESS BO creation flag (v4) 2014-09-10 11:29:46 -04:00
savage_drm.h
sis_drm.h
tegra_drm.h drm/tegra: Add SET/GET_FLAGS IOCTLs 2014-08-04 10:07:35 +02:00
via_drm.h
vmwgfx_drm.h drm/vmwgfx: Fix drm.h include 2014-09-12 13:57:49 +10:00