mirror of https://gitee.com/openkylin/linux.git
e3eb3250d8
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> |
||
---|---|---|
.. | ||
bridge | ||
i2c | ||
ttm | ||
ati_pcigart.h | ||
drmP.h | ||
drm_agpsupport.h | ||
drm_atomic.h | ||
drm_atomic_helper.h | ||
drm_cache.h | ||
drm_core.h | ||
drm_crtc.h | ||
drm_crtc_helper.h | ||
drm_displayid.h | ||
drm_dp_helper.h | ||
drm_dp_mst_helper.h | ||
drm_edid.h | ||
drm_encoder_slave.h | ||
drm_fb_cma_helper.h | ||
drm_fb_helper.h | ||
drm_fixed.h | ||
drm_flip_work.h | ||
drm_gem.h | ||
drm_gem_cma_helper.h | ||
drm_global.h | ||
drm_hashtab.h | ||
drm_legacy.h | ||
drm_mem_util.h | ||
drm_mipi_dsi.h | ||
drm_mm.h | ||
drm_modes.h | ||
drm_modeset_lock.h | ||
drm_of.h | ||
drm_os_linux.h | ||
drm_panel.h | ||
drm_pciids.h | ||
drm_plane_helper.h | ||
drm_rect.h | ||
drm_sysfs.h | ||
drm_vma_manager.h | ||
exynos_drm.h | ||
gma_drm.h | ||
i915_component.h | ||
i915_drm.h | ||
i915_pciids.h | ||
intel-gtt.h |