Re: [PATCH v4 00/22] drm/sun4i: Support for linear and tiled YUV formats with the frontend

From: Paul Kocialkowski
Date: Thu Jan 03 2019 - 05:10:50 EST

On Wed, 2018-12-05 at 09:36 +0100, Paul Kocialkowski wrote:
> This series implements support for YUV formats using the display engine
> frontend in the sun4i DRM driver, with various fixes along the way.
> Scaling is supported for every format handled by the frontend.
> The tiling mode used by the VPU on Allwinner platforms is also supported
> by this series and a dedicated fourcc modifier is introduced, along with
> a specific ioctl for allocating tiled buffers.
> New common fourcc helpers are also introduced in this series, especially
> related to YUV formats.

This series should be about ready for merge for the sun4i parts, but
I'd like to get some feedback regarding the new helpers introduced to
drm_fourcc (patches 1/ and 2/) as well as the introduction of the
Allwinner tiling definitions (patch 11/).

Does anyone have any objection or suggestion regarding these patches or
can we go ahead and merge them along with the remaining driver patches
in this series?



> This was tested on the A33 and A20 platforms and all supported features
> work properly on both. Framebuffer offsets and source positions are not
> supported at this point.
> Changes since v3:
> * Made the BT.601 CSC coefficients common;
> * Moved the tiling mode comment next to the associated macro;
> * Added collected Acked-by tags.
> Changes since v2:
> * Removed DRM format helpers taking the format fourcc;
> * Passed the DRM format info structure when needed instead of iterating
> through the list;
> * Removed the sun4i-specific ioctl for allocating tiled buffers, which
> will be rebranded as a generic one in an upcoming patch;
> * Improved comment for X1 tiled offset and simplified its calculation;
> * Corrected author email and added SoB where needed;
> * Rebased on latest drm-misc next.
> Changes since v1:
> * Extended source selected cleanup to both YUV and video channels;
> * Split and reworded comment about backend scaling;
> * Sorted newly-introduced lists alphabetically;
> * Simplified functions to check if a format is supported;
> * Reworked frontend selection logic as discussed;
> * Made YUV helpers common, with fourcc and drm_info fashions;
> * Changed the CREATE_TILED ioctl flags to match the CREATE_DUMB ioctl;
> * Reworked YUV dimensions calculations to use drm_format_info;
> * Dropped MB32 part in modifier to match V4L2 definition name;
> * Improved the description of the tiling modifier;
> * Avoided splitting CSC coefficients to avoid introducing a new module;
> * Fixed building the driver as modules;
> * Various code simplifications and cleanups;
> * Split commits into logical changes.
> Maxime Ripard (5):
> drm/sun4i: Move access control before setting the register as
> documented
> drm/sun4i: frontend: Add a quirk structure
> drm/sun4i: Set the coef_rdy bit right after the coef have been set
> drm/sun4i: Make COEF_RDY conditional
> drm/sun4i: frontend: Move the FIR filter phases to our quirks
> Paul Kocialkowski (17):
> drm/fourcc: Add format info helpers for checking YUV planes
> disposition
> drm/fourcc: Add format info helpers for checking YUV sub-sampling
> drm/sun4i: backend: Use explicit fourcc helpers for packed YUV422
> check
> drm/sun4i: frontend: Pass DRM format info to input format helpers
> drm/sun4i: frontend: Determine input format based on colorspace
> drm/sun4i: Move the BT.601 CSC coefficients to the frontend
> drm/sun4i: frontend: Configure and enable YUV to RGB CSC when needed
> drm/sun4i: frontend: Add support for packed YUV422 input formats
> drm/sun4i: frontend: Add support for semi-planar YUV input formats
> drm/sun4i: frontend: Add support for planar YUV input formats
> drm/fourcc: Add definitions for Allwinner vendor and VPU tiled format
> drm/sun4i: frontend: Add support for tiled YUV input mode
> configuration
> drm/sun4i: Add buffer stride and offset configuration for tiling mode
> drm/sun4i: frontend: Add and use helper for checking tiling support
> drm/sun4i: layer: Add tiled modifier support and helper
> drm/sun4i: drv: Allow framebuffer modifiers in mode config
> drm/sun4i: frontend: Add A20-specific device-tree compatible and
> quirks
> drivers/gpu/drm/sun4i/sun4i_backend.c | 25 +-
> drivers/gpu/drm/sun4i/sun4i_drv.c | 1 +
> drivers/gpu/drm/sun4i/sun4i_frontend.c | 346 ++++++++++++++++++++++---
> drivers/gpu/drm/sun4i/sun4i_frontend.h | 52 ++++
> drivers/gpu/drm/sun4i/sun4i_layer.c | 28 +-
> include/drm/drm_fourcc.h | 117 +++++++++
> include/uapi/drm/drm_fourcc.h | 16 ++
> 7 files changed, 530 insertions(+), 55 deletions(-)
Paul Kocialkowski, Bootlin (formerly Free Electrons)
Embedded Linux and kernel engineering