[PATCH v5 00/13] Enable Colorspace connector property in amdgpu

Joshua Ashton joshua at froggi.es
Tue Jun 6 20:53:27 UTC 2023


Thanks Harry. Looks good.

Reviewed-by: Joshua Ashton <joshua at froggi.es>

- Joshie 🐸✨

On 6/6/23 21:25, Harry Wentland wrote:
> This patchset is based on Joshua's previous patchset [1], as well
> as my previous patchset [2].
> 
> It is
> - enabling support for the colorspace property in amdgpu, as well as
> - allowing drivers to specify the supported set of colorspaces, and
> 
> Colorspace, Infoframes, and YCbCr matrix
> ---------------------------------------
> 
> Even though the initial intent of the colorspace property was to set the
> colorspace field in the respective HDMI AVI and DP SDP infoframes that
> is not sufficient in all scenarios. For DP the colorspace information
> also affects the MSA (main stream attribute) packet. For YUV output the
> colorspace affects the RGB-to-YCbCr conversion matrix. The colorspace
> field of the infopackets also depends on the encoding used, which is
> something that is decided by the driver and not known to userspace.
> 
> For these reasons a driver will need to be able to select the supported
> colorspaces at property creation.
> 
> Note: There seems to be an understanding that the colorspace property
> should ONLY modify the infoframe. While this is current behavior and
> sufficient in some cases it is nowhere specified that this should be the
> only use of this property. As outlined above this limitation is not
> going to work in all cases.
> 
> This patchset does not affect current behavior for the drivers that
> implement this property: i915 and vc4.
> 
> In the future we might want to give userspace control over the encoding
> format on the wire, in particular to avoid use of YUV420 when image
> fidelity is important. This work would likely go hand in hand with a
> min_bpc property and wouldn't conflict with the work done in this
> patchset. I would expect this future work to tag along with a drm_crtc
> or drm_connector's Color Pipeline, similar to the one propsed for
> drm_plane [3].
> 
> Colorspace on crtc or connector?
> --------------------------------
> 
> There have been suggestions of programming 'colorspace' on the drm_crtc
> but I don't think the crtc is the right place for this property. The
> drm_plane and drm_crtc will be used to offload color processing that
> would normally be done via the GFX or other pipelines. The drm_connector
> controls the signalling with the display and ensures the wire format is
> appropriate for the encoding by programming the RGB-to-YCbCr matrix.
> 
> [1] https://patchwork.freedesktop.org/series/113632/
> [2] https://patchwork.freedesktop.org/series/111865/
> [3] https://lists.freedesktop.org/archives/dri-devel/2023-May/403173.html
> 
> v2:
> - Tested with DP and HDMI analyzers
> - Confirmed driver will fallback to lower bpc when needed
> - Dropped hunk to set HDMI AVI infoframe as it was a no-op
> - Fixed BT.2020 YCbCr colorimetry (JoshuaAshton)
> - Simplify initialization of supported colorspaces (Jani)
> - Fix kerneldoc (kernel test robot)
> 
> v3:
> - Added documentation for colorspaces (Pekka, Joshua)
> - Split 'Allow drivers to pass list of supported colorspaces' patch
>    to pull out code to create common colorspace array and keep it separate
>    from change to create only supported colorspaces
> 
> v4:
> - Don't "deprecate" existing enum values
> - Fixes based on review comments throughout
> - Dropped Josh's RBs
> 
> v5:
> - Add documentation that drivers are free to pick appropriate
>    RGB or YCC variant
> 
> Cc: Pekka Paalanen <ppaalanen at gmail.com>
> Cc: Sebastian Wick <sebastian.wick at redhat.com>
> Cc: Vitaly.Prosyak at amd.com
> Cc: Uma Shankar <uma.shankar at intel.com>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Joshua Ashton <joshua at froggi.es>
> Cc: Jani Nikula <jani.nikula at linux.intel.com>
> Cc: Michel Dänzer <michel.daenzer at mailbox.org>
> Cc: Simon Ser <contact at emersion.fr>
> Cc: Melissa Wen <mwen at igalia.com>
> Cc: dri-devel at lists.freedesktop.org
> Cc: amd-gfx at lists.freedesktop.org
> 
> Harry Wentland (10):
>    drm/connector: Convert DRM_MODE_COLORIMETRY to enum
>    drm/connector: Pull out common create_colorspace_property code
>    drm/connector: Use common colorspace_names array
>    drm/connector: Print connector colorspace in state debugfs
>    drm/connector: Allow drivers to pass list of supported colorspaces
>    drm/amd/display: Always pass connector_state to stream validation
>    drm/amd/display: Register Colorspace property for DP and HDMI
>    drm/amd/display: Signal mode_changed if colorspace changed
>    drm/amd/display: Send correct DP colorspace infopacket
>    drm/amd/display: Add debugfs for testing output colorspace
> 
> Joshua Ashton (3):
>    drm/connector: Add enum documentation to drm_colorspace
>    drm/amd/display: Always set crtcinfo from create_stream_for_sink
>    drm/amd/display: Refactor avi_info_frame colorimetry determination
> 
>   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  84 ++++++---
>   .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c |  57 ++++++
>   .../gpu/drm/amd/display/dc/core/dc_resource.c |  28 +--
>   drivers/gpu/drm/drm_atomic.c                  |   1 +
>   drivers/gpu/drm/drm_connector.c               | 176 +++++++++++-------
>   .../gpu/drm/i915/display/intel_connector.c    |   4 +-
>   drivers/gpu/drm/vc4/vc4_hdmi.c                |   2 +-
>   include/drm/display/drm_dp.h                  |   2 +-
>   include/drm/drm_connector.h                   | 129 ++++++++++---
>   9 files changed, 349 insertions(+), 134 deletions(-)
> 
> --
> 2.41.0
> 



More information about the dri-devel mailing list