mbox series

[v9,0/8] drm/i915/dp: Support for DP HDR outputs

Message ID 20190919195311.13972-1-gwan-gyeong.mun@intel.com (mailing list archive)
Headers show
Series drm/i915/dp: Support for DP HDR outputs | expand

Message

Gwan-gyeong Mun Sept. 19, 2019, 7:53 p.m. UTC
Support for HDR10 video was introduced in DisplayPort 1.4.
On GLK+ platform, in order to use DisplayPort HDR10, we need to support
BT.2020 colorimetry and HDR Static metadata.
It implements the CTA-861-G standard for transport of static HDR metadata.
It enables writing of HDR metadata infoframe SDP to the panel.
The HDR Metadata will be provided by userspace compositors, based on
blending policies and passed to the driver through a blob property.
And It refactors, renames and extends a function which handled vsc sdp
header and data block setup for supporting colorimetry format.
And It attaches the colorspace connector property and HDR metadata property
to a DisplayPort connector.

These patches tested on below test environment.
Test Environment:
 - Tested System: GLK and Gen11 platform.
 - Monitor: Dell UP2718Q 4K HDR Monitor.
 - In order to test DP HDR10, test environment uses patched Kodi-gbm,
   patched Media driver and HDR10 video.

   You can find these on below.
   [patched Kodi-gbm]
    - repo: https://github.com/Kwiboo/xbmc/tree/drmprime-hdr 
   [download 4K HDR video file]
    - link: https://4kmedia.org/lg-new-york-hdr-uhd-4k-demo/
   [Media Driver for GLK]
    - repo https://gitlab.freedesktop.org/emersion/intel-vaapi-driver
  	  master branch
   [Media Driver for ICL]
    - repo: https://github.com/harishkrupo/media-driver/tree/p010_composite

v2:
 - Add a missed blank line after function declaration.
 - Remove useless parentheses.
 - Minor style fix.

v3:
 - Remove not handled return values from
   intel_dp_setup_hdr_metadata_infoframe_sdp(). [Uma]
 - Add handling of different register size for
   HDMI_PACKET_TYPE_GAMUT_METADATA on hsw_dip_data_size() for each GEN
   platforms [Uma]
 - Add new colorimetry options for DP 1.4a spec. [Ville]
 - Separate set of colorimetry enum values for DP. [Ville]
 - In order to checking output format and output colorspace on
   intel_dp_needs_vsc_sdp(), it passes entire intel_crtc_state stucture.[Ville]
 - Remove a pointless variable. [Ville]

v4:
 - Add additional comments to struct drm_prop_enum_list.
 - Polishing an enum string of struct drm_prop_enum_list.

v5:
 - Change definitions of DRM_MODE_COLORIMETRYs to follow HDMI prefix and
   DP abbreviations.
 - Add missed variables on dp_colorspaces.
 - Fix typo. [Uma]

v6:
 - Addressed review comments from Ilia and Ville
   Split drm_mode_create_colorspace_property() to DP and HDMI connector.
   Becasue between HDMI and DP have different colorspaces, it renames
   drm_mode_create_colorspace_property() function to
   drm_mode_create_hdmi_colorspace_property() function for HDMI connector.
   And it adds drm_mode_create_dp_colorspace_property() function for
   creating of DP colorspace property.
   In order to apply changed and added drm api, i915 driver has channged.

v7:
 - Fix typo [Jani Saarinen]
 - Fix white space.

v8:
 - Addressed review comments from Ville
   Drop colorimetries which have another way to distinguish or which would
   not be used.

v9:
 - Addressed review comments from Ville
 - Remove a duplicated output color space from intel_crtc_state.
 - In order to handle colorspace of drm_connector_state, it moves a calling
   of intel_ddi_set_pipe_settings() function into intel_ddi_pre_enable_dp()
 - Split hunk into renaming and adding of code.
 - Add a handling of drm_mode_create_dp_colorspace_property() to
   intel_attach_colorspace_property(). 
 - Add WARN_ON() when buffer size if larger than register size.
 - Add BUILD_BUG_ON to check a changing of struct dp_sdp size.
 - Change a passed size toward write_infoframe() for DP infoframe sdp
   packet for HDR static metadata.
   

Gwan-gyeong Mun (8):
  drm/i915/dp: Extend program of VSC Header and DB for Colorimetry
    Format
  drm/i915/dp: Add support of BT.2020 Colorimetry to DP MSA
  drm: Rename HDMI colorspace property creation function
  drm: Add DisplayPort colorspace property creation function
  drm/i915/dp: Attach colorspace property
  drm/i915: Add new GMP register size for GEN11
  drm/i915/dp: Program an Infoframe SDP Header and DB for HDR Static
    Metadata
  drm/i915/dp: Attach HDR metadata property to DP connector

 drivers/gpu/drm/drm_connector.c               | 101 +++++++--
 .../gpu/drm/i915/display/intel_connector.c    |  21 +-
 drivers/gpu/drm/i915/display/intel_ddi.c      |  17 +-
 drivers/gpu/drm/i915/display/intel_ddi.h      |   3 +-
 drivers/gpu/drm/i915/display/intel_display.c  |   1 -
 drivers/gpu/drm/i915/display/intel_display.h  |   2 -
 drivers/gpu/drm/i915/display/intel_dp.c       | 196 ++++++++++++++++--
 drivers/gpu/drm/i915/display/intel_dp.h       |   8 +
 drivers/gpu/drm/i915/display/intel_hdmi.c     |  12 +-
 drivers/gpu/drm/i915/i915_reg.h               |   1 +
 include/drm/drm_connector.h                   |   7 +-
 11 files changed, 323 insertions(+), 46 deletions(-)

Comments

Ville Syrjala Sept. 20, 2019, 4:06 p.m. UTC | #1
On Thu, Sep 19, 2019 at 10:53:03PM +0300, Gwan-gyeong Mun wrote:
> Support for HDR10 video was introduced in DisplayPort 1.4.
> On GLK+ platform, in order to use DisplayPort HDR10, we need to support
> BT.2020 colorimetry and HDR Static metadata.
> It implements the CTA-861-G standard for transport of static HDR metadata.
> It enables writing of HDR metadata infoframe SDP to the panel.
> The HDR Metadata will be provided by userspace compositors, based on
> blending policies and passed to the driver through a blob property.
> And It refactors, renames and extends a function which handled vsc sdp
> header and data block setup for supporting colorimetry format.
> And It attaches the colorspace connector property and HDR metadata property
> to a DisplayPort connector.
> 
> These patches tested on below test environment.
> Test Environment:
>  - Tested System: GLK and Gen11 platform.
>  - Monitor: Dell UP2718Q 4K HDR Monitor.
>  - In order to test DP HDR10, test environment uses patched Kodi-gbm,
>    patched Media driver and HDR10 video.
> 
>    You can find these on below.
>    [patched Kodi-gbm]
>     - repo: https://github.com/Kwiboo/xbmc/tree/drmprime-hdr 
>    [download 4K HDR video file]
>     - link: https://4kmedia.org/lg-new-york-hdr-uhd-4k-demo/
>    [Media Driver for GLK]
>     - repo https://gitlab.freedesktop.org/emersion/intel-vaapi-driver
>   	  master branch
>    [Media Driver for ICL]
>     - repo: https://github.com/harishkrupo/media-driver/tree/p010_composite
> 
> v2:
>  - Add a missed blank line after function declaration.
>  - Remove useless parentheses.
>  - Minor style fix.
> 
> v3:
>  - Remove not handled return values from
>    intel_dp_setup_hdr_metadata_infoframe_sdp(). [Uma]
>  - Add handling of different register size for
>    HDMI_PACKET_TYPE_GAMUT_METADATA on hsw_dip_data_size() for each GEN
>    platforms [Uma]
>  - Add new colorimetry options for DP 1.4a spec. [Ville]
>  - Separate set of colorimetry enum values for DP. [Ville]
>  - In order to checking output format and output colorspace on
>    intel_dp_needs_vsc_sdp(), it passes entire intel_crtc_state stucture.[Ville]
>  - Remove a pointless variable. [Ville]
> 
> v4:
>  - Add additional comments to struct drm_prop_enum_list.
>  - Polishing an enum string of struct drm_prop_enum_list.
> 
> v5:
>  - Change definitions of DRM_MODE_COLORIMETRYs to follow HDMI prefix and
>    DP abbreviations.
>  - Add missed variables on dp_colorspaces.
>  - Fix typo. [Uma]
> 
> v6:
>  - Addressed review comments from Ilia and Ville
>    Split drm_mode_create_colorspace_property() to DP and HDMI connector.
>    Becasue between HDMI and DP have different colorspaces, it renames
>    drm_mode_create_colorspace_property() function to
>    drm_mode_create_hdmi_colorspace_property() function for HDMI connector.
>    And it adds drm_mode_create_dp_colorspace_property() function for
>    creating of DP colorspace property.
>    In order to apply changed and added drm api, i915 driver has channged.
> 
> v7:
>  - Fix typo [Jani Saarinen]
>  - Fix white space.
> 
> v8:
>  - Addressed review comments from Ville
>    Drop colorimetries which have another way to distinguish or which would
>    not be used.
> 
> v9:
>  - Addressed review comments from Ville
>  - Remove a duplicated output color space from intel_crtc_state.
>  - In order to handle colorspace of drm_connector_state, it moves a calling
>    of intel_ddi_set_pipe_settings() function into intel_ddi_pre_enable_dp()
>  - Split hunk into renaming and adding of code.
>  - Add a handling of drm_mode_create_dp_colorspace_property() to
>    intel_attach_colorspace_property(). 
>  - Add WARN_ON() when buffer size if larger than register size.
>  - Add BUILD_BUG_ON to check a changing of struct dp_sdp size.
>  - Change a passed size toward write_infoframe() for DP infoframe sdp
>    packet for HDR static metadata.
>    
> 
> Gwan-gyeong Mun (8):
>   drm/i915/dp: Extend program of VSC Header and DB for Colorimetry
>     Format
>   drm/i915/dp: Add support of BT.2020 Colorimetry to DP MSA
>   drm: Rename HDMI colorspace property creation function
>   drm: Add DisplayPort colorspace property creation function
>   drm/i915/dp: Attach colorspace property
>   drm/i915: Add new GMP register size for GEN11
>   drm/i915/dp: Program an Infoframe SDP Header and DB for HDR Static
>     Metadata
>   drm/i915/dp: Attach HDR metadata property to DP connector

Thanks. The series lgtm. I've pushed the core bits into drm-misc-next.
We can proceed with the rest once those make their way back into dinq.

> 
>  drivers/gpu/drm/drm_connector.c               | 101 +++++++--
>  .../gpu/drm/i915/display/intel_connector.c    |  21 +-
>  drivers/gpu/drm/i915/display/intel_ddi.c      |  17 +-
>  drivers/gpu/drm/i915/display/intel_ddi.h      |   3 +-
>  drivers/gpu/drm/i915/display/intel_display.c  |   1 -
>  drivers/gpu/drm/i915/display/intel_display.h  |   2 -
>  drivers/gpu/drm/i915/display/intel_dp.c       | 196 ++++++++++++++++--
>  drivers/gpu/drm/i915/display/intel_dp.h       |   8 +
>  drivers/gpu/drm/i915/display/intel_hdmi.c     |  12 +-
>  drivers/gpu/drm/i915/i915_reg.h               |   1 +
>  include/drm/drm_connector.h                   |   7 +-
>  11 files changed, 323 insertions(+), 46 deletions(-)
> 
> -- 
> 2.23.0
Ville Syrjala Oct. 15, 2019, 1:27 p.m. UTC | #2
On Fri, Sep 20, 2019 at 07:06:27PM +0300, Ville Syrjälä wrote:
> On Thu, Sep 19, 2019 at 10:53:03PM +0300, Gwan-gyeong Mun wrote:
> > Support for HDR10 video was introduced in DisplayPort 1.4.
> > On GLK+ platform, in order to use DisplayPort HDR10, we need to support
> > BT.2020 colorimetry and HDR Static metadata.
> > It implements the CTA-861-G standard for transport of static HDR metadata.
> > It enables writing of HDR metadata infoframe SDP to the panel.
> > The HDR Metadata will be provided by userspace compositors, based on
> > blending policies and passed to the driver through a blob property.
> > And It refactors, renames and extends a function which handled vsc sdp
> > header and data block setup for supporting colorimetry format.
> > And It attaches the colorspace connector property and HDR metadata property
> > to a DisplayPort connector.
> > 
> > These patches tested on below test environment.
> > Test Environment:
> >  - Tested System: GLK and Gen11 platform.
> >  - Monitor: Dell UP2718Q 4K HDR Monitor.
> >  - In order to test DP HDR10, test environment uses patched Kodi-gbm,
> >    patched Media driver and HDR10 video.
> > 
> >    You can find these on below.
> >    [patched Kodi-gbm]
> >     - repo: https://github.com/Kwiboo/xbmc/tree/drmprime-hdr 
> >    [download 4K HDR video file]
> >     - link: https://4kmedia.org/lg-new-york-hdr-uhd-4k-demo/
> >    [Media Driver for GLK]
> >     - repo https://gitlab.freedesktop.org/emersion/intel-vaapi-driver
> >   	  master branch
> >    [Media Driver for ICL]
> >     - repo: https://github.com/harishkrupo/media-driver/tree/p010_composite
> > 
> > v2:
> >  - Add a missed blank line after function declaration.
> >  - Remove useless parentheses.
> >  - Minor style fix.
> > 
> > v3:
> >  - Remove not handled return values from
> >    intel_dp_setup_hdr_metadata_infoframe_sdp(). [Uma]
> >  - Add handling of different register size for
> >    HDMI_PACKET_TYPE_GAMUT_METADATA on hsw_dip_data_size() for each GEN
> >    platforms [Uma]
> >  - Add new colorimetry options for DP 1.4a spec. [Ville]
> >  - Separate set of colorimetry enum values for DP. [Ville]
> >  - In order to checking output format and output colorspace on
> >    intel_dp_needs_vsc_sdp(), it passes entire intel_crtc_state stucture.[Ville]
> >  - Remove a pointless variable. [Ville]
> > 
> > v4:
> >  - Add additional comments to struct drm_prop_enum_list.
> >  - Polishing an enum string of struct drm_prop_enum_list.
> > 
> > v5:
> >  - Change definitions of DRM_MODE_COLORIMETRYs to follow HDMI prefix and
> >    DP abbreviations.
> >  - Add missed variables on dp_colorspaces.
> >  - Fix typo. [Uma]
> > 
> > v6:
> >  - Addressed review comments from Ilia and Ville
> >    Split drm_mode_create_colorspace_property() to DP and HDMI connector.
> >    Becasue between HDMI and DP have different colorspaces, it renames
> >    drm_mode_create_colorspace_property() function to
> >    drm_mode_create_hdmi_colorspace_property() function for HDMI connector.
> >    And it adds drm_mode_create_dp_colorspace_property() function for
> >    creating of DP colorspace property.
> >    In order to apply changed and added drm api, i915 driver has channged.
> > 
> > v7:
> >  - Fix typo [Jani Saarinen]
> >  - Fix white space.
> > 
> > v8:
> >  - Addressed review comments from Ville
> >    Drop colorimetries which have another way to distinguish or which would
> >    not be used.
> > 
> > v9:
> >  - Addressed review comments from Ville
> >  - Remove a duplicated output color space from intel_crtc_state.
> >  - In order to handle colorspace of drm_connector_state, it moves a calling
> >    of intel_ddi_set_pipe_settings() function into intel_ddi_pre_enable_dp()
> >  - Split hunk into renaming and adding of code.
> >  - Add a handling of drm_mode_create_dp_colorspace_property() to
> >    intel_attach_colorspace_property(). 
> >  - Add WARN_ON() when buffer size if larger than register size.
> >  - Add BUILD_BUG_ON to check a changing of struct dp_sdp size.
> >  - Change a passed size toward write_infoframe() for DP infoframe sdp
> >    packet for HDR static metadata.
> >    
> > 
> > Gwan-gyeong Mun (8):
> >   drm/i915/dp: Extend program of VSC Header and DB for Colorimetry
> >     Format
> >   drm/i915/dp: Add support of BT.2020 Colorimetry to DP MSA
> >   drm: Rename HDMI colorspace property creation function
> >   drm: Add DisplayPort colorspace property creation function
> >   drm/i915/dp: Attach colorspace property
> >   drm/i915: Add new GMP register size for GEN11
> >   drm/i915/dp: Program an Infoframe SDP Header and DB for HDR Static
> >     Metadata
> >   drm/i915/dp: Attach HDR metadata property to DP connector
> 
> Thanks. The series lgtm. I've pushed the core bits into drm-misc-next.
> We can proceed with the rest once those make their way back into dinq.

The remainder of the series pushed to dinq.

> 
> > 
> >  drivers/gpu/drm/drm_connector.c               | 101 +++++++--
> >  .../gpu/drm/i915/display/intel_connector.c    |  21 +-
> >  drivers/gpu/drm/i915/display/intel_ddi.c      |  17 +-
> >  drivers/gpu/drm/i915/display/intel_ddi.h      |   3 +-
> >  drivers/gpu/drm/i915/display/intel_display.c  |   1 -
> >  drivers/gpu/drm/i915/display/intel_display.h  |   2 -
> >  drivers/gpu/drm/i915/display/intel_dp.c       | 196 ++++++++++++++++--
> >  drivers/gpu/drm/i915/display/intel_dp.h       |   8 +
> >  drivers/gpu/drm/i915/display/intel_hdmi.c     |  12 +-
> >  drivers/gpu/drm/i915/i915_reg.h               |   1 +
> >  include/drm/drm_connector.h                   |   7 +-
> >  11 files changed, 323 insertions(+), 46 deletions(-)
> > 
> > -- 
> > 2.23.0
> 
> -- 
> Ville Syrjälä
> Intel