Message ID | 1537085731-6355-1-git-send-email-uma.shankar@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | Add Plane Color Properties | expand |
On Sun, Sep 16, 2018 at 01:45:23PM +0530, Uma Shankar wrote: > This is how a typical display color hardware pipeline looks like: > +-------------------------------------------+ > | RAM | > | +------+ +---------+ +---------+ | > | | FB 1 | | FB 2 | | FB N | | > | +------+ +---------+ +---------+ | > +-------------------------------------------+ > | Plane Color Hardware Block | > +--------------------------------------------+ > | +---v-----+ +---v-------+ +---v------+ | > | | Plane A | | Plane B | | Plane N | | > | | DeGamma | | Degamma | | Degamma | | > | +---+-----+ +---+-------+ +---+------+ | > | | | | | > | +---v-----+ +---v-------+ +---v------+ | > | |Plane A | | Plane B | | Plane N | | > | |CSC/CTM | | CSC/CTM | | CSC/CTM | | > | +---+-----+ +----+------+ +----+-----+ | > | | | | | > | +---v-----+ +----v------+ +----v-----+ | > | | Plane A | | Plane B | | Plane N | | > | | Gamma | | Gamma | | Gamma | | > | +---+-----+ +----+------+ +----+-----+ | > | | | | | > +--------------------------------------------+ > +------v--------------v---------------v-------| > || || > || Pipe Blender || > +--------------------+------------------------+ > | | | > | +-----------v----------+ | > | | Pipe DeGamma | | > | | | | > | +-----------+----------+ | > | | Pipe Color | > | +-----------v----------+ Hardware | > | | Pipe CSC/CTM | | > | | | | > | +-----------+----------+ | > | | | > | +-----------v----------+ | > | | Pipe Gamma | | > | | | | > | +-----------+----------+ | > | | | > +---------------------------------------------+ > | > v > Pipe Output > > This patch series adds properties for plane color features. It adds > properties for degamma used to linearize data, CSC used for gamut > conversion, and gamma used to again non-linearize data as per panel > supported color space. These can be utilize by user space to convert > planes from one format to another, one color space to another etc. > > Usersapce can take smart blending decisions and utilize these hardware > supported plane color features to get accurate color profile. The same > can help in consistent color quality from source to panel taking > advantage of advanced color features in hardware. > > These patches just add the property interfaces and enable helper > functions. > > This series adds Intel Gen9 specific plane gamma feature. We can > build up and add other platform/hardware specific implementation > on top of this series > > Note: This is just to get a design feedback whether these interfaces > look ok. Based on community feedback on interfaces, we will implement > IGT tests to validate plane color features. This is un-tested currently. > > Userspace implementation using these properties have been done in drm > hwcomposer by "Alexandru-Cosmin Gheorghe Alexandru-Cosmin.Gheorghe@arm.com" > from ARM. A merge request has been opened by Alexandru for drm_hwcomposer, > implementing the property changes for the same. Please review that as well: > https://gitlab.freedesktop.org/drm-hwcomposer/drm-hwcomposer/merge_requests/25 > Just heads-up I just pushed a v2 for that. > v2: Dropped legacy gamma table for plane as suggested by Maarten. Added > Gen9/BDW plane gamma feature and rebase on tot. > > v3: Added a new drm_color_lut_ext structure to accommodate 32 bit precision > entries, pointed to by Brian, Starkey for HDR usecases. Addressed Sean,Paul > comments and moved plane color properties to drm_plane instead of > mode_config. Added property documentation as suggested by Daniel, Vetter. > Fixed a rebase fumble which occurred in v2, pointed by Emil Velikov. > > v4: Rebase > > v5: Added "Display Color Hardware Pipeline" flow to kernel > documentation as suggested by "Ville Syrjala" and "Brian Starkey". > Moved the property creation to drm_color_mgmt.c file to consolidate > all color operations at one place. Addressed Alexandru's review comments. > > Uma Shankar (8): > drm: Add Enhanced Gamma LUT precision structure > drm: Add Plane Degamma properties > drm: Add Plane CTM property > drm: Add Plane Gamma properties > drm: Define helper function for plane color enabling > drm/i915: Enable plane color features > drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms > drm/i915: Load plane color luts from atomic flip > > Documentation/gpu/drm-kms.rst | 99 +++++++++++++++++++++ > drivers/gpu/drm/drm_atomic.c | 32 +++++++ > drivers/gpu/drm/drm_atomic_helper.c | 13 +++ > drivers/gpu/drm/drm_color_mgmt.c | 140 +++++++++++++++++++++++++++++- > drivers/gpu/drm/i915/i915_drv.h | 5 ++ > drivers/gpu/drm/i915/i915_pci.c | 5 +- > drivers/gpu/drm/i915/i915_reg.h | 25 ++++++ > drivers/gpu/drm/i915/intel_atomic_plane.c | 4 + > drivers/gpu/drm/i915/intel_color.c | 80 +++++++++++++++++ > drivers/gpu/drm/i915/intel_device_info.h | 5 ++ > drivers/gpu/drm/i915/intel_display.c | 4 + > drivers/gpu/drm/i915/intel_drv.h | 10 +++ > drivers/gpu/drm/i915/intel_sprite.c | 4 + > include/drm/drm_color_mgmt.h | 6 ++ > include/drm/drm_plane.h | 61 +++++++++++++ > include/uapi/drm/drm_mode.h | 15 ++++ > 16 files changed, 504 insertions(+), 4 deletions(-) > > -- > 1.9.1
Hey, sön 2018-09-16 klockan 13:45 +0530 skrev Uma Shankar: > This is how a typical display color hardware pipeline looks like: > +-------------------------------------------+ > | RAM | > | +------+ +---------+ +---------+ | > | | FB 1 | | FB 2 | | FB N | | > | +------+ +---------+ +---------+ | > +-------------------------------------------+ > | Plane Color Hardware Block | > +--------------------------------------------+ Should be some mention of color conversion (YUV -> RGB) through drm_color_encoding and drm_color_range enums interacting here? > | +---v-----+ +---v-------+ +---v------+ | > | | Plane A | | Plane B | | Plane N | | > | | DeGamma | | Degamma | | Degamma | | > | +---+-----+ +---+-------+ +---+------+ | > | | | | | > | +---v-----+ +---v-------+ +---v------+ | > | |Plane A | | Plane B | | Plane N | | > | |CSC/CTM | | CSC/CTM | | CSC/CTM | | > | +---+-----+ +----+------+ +----+-----+ | > | | | | | > | +---v-----+ +----v------+ +----v-----+ | > | | Plane A | | Plane B | | Plane N | | > | | Gamma | | Gamma | | Gamma | | > | +---+-----+ +----+------+ +----+-----+ | > | | | | | > +--------------------------------------------+ > +------v--------------v---------------v-------| > > > || > > > Pipe Blender || > > +--------------------+------------------------+ > > | | > > +-----------v----------+ | > > | Pipe DeGamma | | > > | | | > > +-----------+----------+ | > > | Pipe Color | > > +-----------v----------+ Hardware | > > | Pipe CSC/CTM | | > > | | | > > +-----------+----------+ | > > | | > > +-----------v----------+ | > > | Pipe Gamma | | > > | | | > > +-----------+----------+ | > > | | Likewise, should probably be some mention about setting colorspace on the connector, so the output will knows what format is used? Perhaps pull it to this series since one can't work really well without the other? > > +---------------------------------------------+ > | > v > Pipe Output > > This patch series adds properties for plane color features. It adds > properties for degamma used to linearize data, CSC used for gamut > conversion, and gamma used to again non-linearize data as per panel > supported color space. These can be utilize by user space to convert > planes from one format to another, one color space to another etc. > > Usersapce can take smart blending decisions and utilize these > hardware > supported plane color features to get accurate color profile. The > same > can help in consistent color quality from source to panel taking > advantage of advanced color features in hardware. > > These patches just add the property interfaces and enable helper > functions. > > This series adds Intel Gen9 specific plane gamma feature. We can > build up and add other platform/hardware specific implementation > on top of this series > > Note: This is just to get a design feedback whether these interfaces > look ok. Based on community feedback on interfaces, we will implement > IGT tests to validate plane color features. This is un-tested > currently. > > Userspace implementation using these properties have been done in drm > hwcomposer by "Alexandru-Cosmin Gheorghe Alexandru-Cosmin.Gheorghe@ar > m.com" > from ARM. A merge request has been opened by Alexandru for > drm_hwcomposer, > implementing the property changes for the same. Please review that as > well: > https://gitlab.freedesktop.org/drm-hwcomposer/drm-hwcomposer/merge_re > quests/25 > > v2: Dropped legacy gamma table for plane as suggested by Maarten. > Added > Gen9/BDW plane gamma feature and rebase on tot. > > v3: Added a new drm_color_lut_ext structure to accommodate 32 bit > precision > entries, pointed to by Brian, Starkey for HDR usecases. Addressed > Sean,Paul > comments and moved plane color properties to drm_plane instead of > mode_config. Added property documentation as suggested by Daniel, > Vetter. > Fixed a rebase fumble which occurred in v2, pointed by Emil Velikov. > > v4: Rebase > > v5: Added "Display Color Hardware Pipeline" flow to kernel > documentation as suggested by "Ville Syrjala" and "Brian Starkey". > Moved the property creation to drm_color_mgmt.c file to consolidate > all color operations at one place. Addressed Alexandru's review > comments. > > Uma Shankar (8): > drm: Add Enhanced Gamma LUT precision structure > drm: Add Plane Degamma properties > drm: Add Plane CTM property > drm: Add Plane Gamma properties > drm: Define helper function for plane color enabling > drm/i915: Enable plane color features > drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms > drm/i915: Load plane color luts from atomic flip > > Documentation/gpu/drm-kms.rst | 99 > +++++++++++++++++++++ > drivers/gpu/drm/drm_atomic.c | 32 +++++++ > drivers/gpu/drm/drm_atomic_helper.c | 13 +++ > drivers/gpu/drm/drm_color_mgmt.c | 140 > +++++++++++++++++++++++++++++- > drivers/gpu/drm/i915/i915_drv.h | 5 ++ > drivers/gpu/drm/i915/i915_pci.c | 5 +- > drivers/gpu/drm/i915/i915_reg.h | 25 ++++++ > drivers/gpu/drm/i915/intel_atomic_plane.c | 4 + > drivers/gpu/drm/i915/intel_color.c | 80 +++++++++++++++++ > drivers/gpu/drm/i915/intel_device_info.h | 5 ++ > drivers/gpu/drm/i915/intel_display.c | 4 + > drivers/gpu/drm/i915/intel_drv.h | 10 +++ > drivers/gpu/drm/i915/intel_sprite.c | 4 + > include/drm/drm_color_mgmt.h | 6 ++ > include/drm/drm_plane.h | 61 +++++++++++++ > include/uapi/drm/drm_mode.h | 15 ++++ > 16 files changed, 504 insertions(+), 4 deletions(-) >
>-----Original Message----- >From: Lankhorst, Maarten >Sent: Wednesday, September 26, 2018 1:05 PM >To: Shankar, Uma <uma.shankar@intel.com>; intel-gfx@lists.freedesktop.org; >dri-devel@lists.freedesktop.org >Cc: Syrjala, Ville <ville.syrjala@intel.com>; alexandru- >cosmin.gheorghe@arm.com; emil.l.velikov@gmail.com; >seanpaul@chromium.org; harry.wentland@amd.com; brian.starkey@arm.com; >dcastagna@chromium.org; Sharma, Shashank <shashank.sharma@intel.com> >Subject: Re: [RFC v5 0/8] Add Plane Color Properties > >Hey, > >sön 2018-09-16 klockan 13:45 +0530 skrev Uma Shankar: >> This is how a typical display color hardware pipeline looks like: >> +-------------------------------------------+ >> | RAM | >> | +------+ +---------+ +---------+ | >> | | FB 1 | | FB 2 | | FB N | | >> | +------+ +---------+ +---------+ | >> +-------------------------------------------+ >> | Plane Color Hardware Block | >> +--------------------------------------------+ > >Should be some mention of color conversion (YUV -> RGB) through >drm_color_encoding and drm_color_range enums interacting here? Thanks Maarten for taking it up for review. Sure, I can add those details as well here. >> | +---v-----+ +---v-------+ +---v------+ | >> | | Plane A | | Plane B | | Plane N | | >> | | DeGamma | | Degamma | | Degamma | | >> | +---+-----+ +---+-------+ +---+------+ | >> | | | | | >> | +---v-----+ +---v-------+ +---v------+ | >> | |Plane A | | Plane B | | Plane N | | >> | |CSC/CTM | | CSC/CTM | | CSC/CTM | | >> | +---+-----+ +----+------+ +----+-----+ | >> | | | | | >> | +---v-----+ +----v------+ +----v-----+ | >> | | Plane A | | Plane B | | Plane N | | >> | | Gamma | | Gamma | | Gamma | | >> | +---+-----+ +----+------+ +----+-----+ | >> | | | | | >> +--------------------------------------------+ >> +------v--------------v---------------v-------| >> > > || >> > > Pipe Blender || >> >> +--------------------+------------------------+ >> > | | >> > +-----------v----------+ | >> > | Pipe DeGamma | | >> > | | | >> > +-----------+----------+ | >> > | Pipe Color | >> > +-----------v----------+ Hardware | >> > | Pipe CSC/CTM | | >> > | | | >> > +-----------+----------+ | >> > | | >> > +-----------v----------+ | >> > | Pipe Gamma | | >> > | | | >> > +-----------+----------+ | >> > | | >Likewise, should probably be some mention about setting colorspace on >the connector, so the output will knows what format is used? > >Perhaps pull it to this series since one can't work really well without >the other? >> I put it here for painting the complete color hardware pipeline. Since this was just for plane color features, kept the colorspace series separate which was mainly for pipe/connector . So even now if user wants to blend various layers using display plane hardware, it can do that. I can combine them together if you recommend. But I feel though they both are related but they can be enabled/used independently. Will do as you suggest. Regards, Uma Shankar >> +---------------------------------------------+ >> | >> v >> Pipe Output >> >> This patch series adds properties for plane color features. It adds >> properties for degamma used to linearize data, CSC used for gamut >> conversion, and gamma used to again non-linearize data as per panel >> supported color space. These can be utilize by user space to convert >> planes from one format to another, one color space to another etc. >> >> Usersapce can take smart blending decisions and utilize these >> hardware >> supported plane color features to get accurate color profile. The >> same >> can help in consistent color quality from source to panel taking >> advantage of advanced color features in hardware. >> >> These patches just add the property interfaces and enable helper >> functions. >> >> This series adds Intel Gen9 specific plane gamma feature. We can >> build up and add other platform/hardware specific implementation >> on top of this series >> >> Note: This is just to get a design feedback whether these interfaces >> look ok. Based on community feedback on interfaces, we will implement >> IGT tests to validate plane color features. This is un-tested >> currently. >> >> Userspace implementation using these properties have been done in drm >> hwcomposer by "Alexandru-Cosmin Gheorghe Alexandru-Cosmin.Gheorghe@ar >> m.com" >> from ARM. A merge request has been opened by Alexandru for >> drm_hwcomposer, >> implementing the property changes for the same. Please review that as >> well: >> https://gitlab.freedesktop.org/drm-hwcomposer/drm-hwcomposer/merge_re >> quests/25 >> >> v2: Dropped legacy gamma table for plane as suggested by Maarten. >> Added >> Gen9/BDW plane gamma feature and rebase on tot. >> >> v3: Added a new drm_color_lut_ext structure to accommodate 32 bit >> precision >> entries, pointed to by Brian, Starkey for HDR usecases. Addressed >> Sean,Paul >> comments and moved plane color properties to drm_plane instead of >> mode_config. Added property documentation as suggested by Daniel, >> Vetter. >> Fixed a rebase fumble which occurred in v2, pointed by Emil Velikov. >> >> v4: Rebase >> >> v5: Added "Display Color Hardware Pipeline" flow to kernel >> documentation as suggested by "Ville Syrjala" and "Brian Starkey". >> Moved the property creation to drm_color_mgmt.c file to consolidate >> all color operations at one place. Addressed Alexandru's review >> comments. >> >> Uma Shankar (8): >> drm: Add Enhanced Gamma LUT precision structure >> drm: Add Plane Degamma properties >> drm: Add Plane CTM property >> drm: Add Plane Gamma properties >> drm: Define helper function for plane color enabling >> drm/i915: Enable plane color features >> drm/i915: Implement Plane Gamma for Bdw and Gen9 platforms >> drm/i915: Load plane color luts from atomic flip >> >> Documentation/gpu/drm-kms.rst | 99 >> +++++++++++++++++++++ >> drivers/gpu/drm/drm_atomic.c | 32 +++++++ >> drivers/gpu/drm/drm_atomic_helper.c | 13 +++ >> drivers/gpu/drm/drm_color_mgmt.c | 140 >> +++++++++++++++++++++++++++++- >> drivers/gpu/drm/i915/i915_drv.h | 5 ++ >> drivers/gpu/drm/i915/i915_pci.c | 5 +- >> drivers/gpu/drm/i915/i915_reg.h | 25 ++++++ >> drivers/gpu/drm/i915/intel_atomic_plane.c | 4 + >> drivers/gpu/drm/i915/intel_color.c | 80 +++++++++++++++++ >> drivers/gpu/drm/i915/intel_device_info.h | 5 ++ >> drivers/gpu/drm/i915/intel_display.c | 4 + >> drivers/gpu/drm/i915/intel_drv.h | 10 +++ >> drivers/gpu/drm/i915/intel_sprite.c | 4 + >> include/drm/drm_color_mgmt.h | 6 ++ >> include/drm/drm_plane.h | 61 +++++++++++++ >> include/uapi/drm/drm_mode.h | 15 ++++ >> 16 files changed, 504 insertions(+), 4 deletions(-) >>