mbox series

[v2,0/5] Add Mali DP non-compressed pixel formats

Message ID 20180821183004.6775-1-alexandru-cosmin.gheorghe@arm.com (mailing list archive)
Headers show
Series Add Mali DP non-compressed pixel formats | expand

Message

Alexandru-Cosmin Gheorghe Aug. 21, 2018, 6:29 p.m. UTC
Change since v1 [1]:
  - Droped changes that add special handling of the tile formats
    X0L0/X0L2 in the driver and extend drm_core, by adding tile_h and
    tile_w in drm_format_info, suggested by Daniel Vetter here [2],
    see patches 2 to 4.
  - Use a differnt fourcc code for DRM_FORMAT_XVYU2101010, as
    suggested by Brian Starkey here [3].

Mali DP supports a bunch of pixel formats that don't have a fourcc
code defined in drm_fourcc.h, so this patchset adds the definition for
those formats and enables them in mali-dp driver.

The following new formats will be added:

Packed YCbCr444
* DRM_FORMAT_XYUV8888
* DRM_FORMAT_XVYU2101010

Two plane 10 bits format.
* DRM_FORMAT_P010

Packed YCbCr420 2x2 tiled formats
* DRM_FORMAT_Y0L0
* DRM_FORMAT_X0L0
* DRM_FORMAT_Y0L2
* DRM_FORMAT_X0L2
The difference between X0L0/X0L2 vs Y0L0/Y0L2 is that the later group
have two alpha bits per pixel.

This group is a bit special because we are dealing with a tiled format
where the first 64 bits in memory represent the pixels for a 2x2 tile,
so it needs a bit of special handling when it comes to:
 - pitch: needs to cover both rows that are in the same tile.
 - min allocation size: since a pitch cover both rows the formulas
   defined in drm_gem_fb_create don't work anymore.
 - handling of src_x and src_y offset: same as above since we are
   dealing with a tiled format drm_fb_cma_get_gem_obj doesn't return
   the correct address offset.

[1] https://lists.freedesktop.org/archives/dri-devel/2018-July/184597.html
[2] https://lists.freedesktop.org/archives/dri-devel/2018-August/186465.html
[3] https://lists.freedesktop.org/archives/dri-devel/2018-August/186057.html

Alexandru Gheorghe (5):
  drm/fourcc: Add new fourcc for malidp uncompressed formats
  drm/fourcc: Add tile width and height to drm_format_info
  drm/i915: Set tile sizes in drm_format_info
  drm: Add support for handling linear tile formats
  drm: mali-dp: Enable mali specific buffer formats

 drivers/gpu/drm/arm/malidp_hw.c              |   7 +-
 drivers/gpu/drm/drm_atomic.c                 |   8 +
 drivers/gpu/drm/drm_fb_cma_helper.c          |  11 +-
 drivers/gpu/drm/drm_fourcc.c                 | 397 +++++++++++++++----
 drivers/gpu/drm/drm_framebuffer.c            |  19 +-
 drivers/gpu/drm/drm_gem_framebuffer_helper.c |  10 +-
 drivers/gpu/drm/i915/intel_display.c         |  12 +-
 include/drm/drm_fourcc.h                     |   6 +
 include/uapi/drm/drm_fourcc.h                |  27 +-
 9 files changed, 415 insertions(+), 82 deletions(-)