On 2023-11-08 06:54, Shankar, Uma wrote:
>
>
>> -----Original Message-----
>> From: Harry Wentland <[email protected]>
>> Sent: Friday, October 20, 2023 2:51 AM
>> To: [email protected]
>> Cc: [email protected]; Harry Wentland
>> <[email protected]>; Ville Syrjala <[email protected]>;
>> Pekka
>> Paalanen <[email protected]>; Simon Ser <[email protected]>;
>> Melissa Wen <[email protected]>; Jonas Ådahl <[email protected]>; Sebastian
>> Wick <[email protected]>; Shashank Sharma
>> <[email protected]>; Alexander Goins <[email protected]>; Joshua
>> Ashton <[email protected]>; Michel Dänzer <[email protected]>; Aleix Pol
>> <[email protected]>; Xaver Hugl <[email protected]>; Victoria Brekenfeld
>> <[email protected]>; Sima <[email protected]>; Shankar, Uma
>> <[email protected]>; Naseer Ahmed <[email protected]>;
>> Christopher Braga <[email protected]>; Abhinav Kumar
>> <[email protected]>; Arthur Grillo <[email protected]>; Hector
>> Martin <[email protected]>; Liviu Dudau <[email protected]>; Sasha
>> McIntosh <[email protected]>
>> Subject: [RFC PATCH v2 00/17] Color Pipeline API w/ VKMS
>>
>> This is an early RFC set for a color pipeline API, along with a sample
>> implementation in VKMS. All the key API bits are here.
>> VKMS now supports two named transfer function colorops and we have an IGT
>> test that confirms that sRGB EOTF, followed by its inverse gives us expected
>> results within +/- 1 8 bpc codepoint value.
>>
>> This patchset is grouped as follows:
>> - Patches 1-2: couple general patches/fixes
>> - Patches 3-5: introduce kunit to VKMS
>> - Patch 6: description of motivation and details behind the
>> Color Pipeline API. If you're reading nothing else
>> but are interested in the topic I highly recommend
>> you take a look at this.
>> - Patches 7-15: Add core DRM API bits
>> - Patches 15-17: VKMS implementation
>>
>> There are plenty of things that I would like to see here but haven't had a
>> chance
>> to look at. These will (hopefully) be addressed in future iterations:
>> - Abandon IOCTLs and discover colorops as clients iterate the pipeline
>> - Add color_pipeline client cap and deprecate existing color encoding and
>> color range properties.
>> See https://lists.freedesktop.org/archives/dri-devel/2023-
>> September/422643.html
>> - Add CTM colorop to VKMS
>> - Add custom LUT colorops to VKMS
>> - Add pre-blending 3DLUT with tetrahedral interpolation to VKMS
>> - How to support HW which can't bypass entire pipeline?
>> - Add ability to create colorops that don't have BYPASS
>> - Can we do a LOAD / COMMIT model for LUTs (and other properties)?
>>
>> IGT tests can be found at
>> https://gitlab.freedesktop.org/hwentland/igt-gpu-tools/-/merge_requests/1
>>
>> IGT patches are also being sent to the igt-dev mailing list.
>>
>> libdrm changes to support the new IOCTLs are at
>> https://gitlab.freedesktop.org/hwentland/drm/-/merge_requests/1
>>
>> If you prefer a gitlab MR for review you can find it at
>> https://gitlab.freedesktop.org/hwentland/linux/-/merge_requests/5
>>
>> A slightly different approach for a Color Pipeline API was sent by Uma
>> Shankar
>> and can be found at https://patchwork.freedesktop.org/series/123024/
>>
>> The main difference is that his approach is not introducing a new DRM core
>> object
>> but instead exposes color pipelines via blob properties.
>> There are pros and cons to both approaches.
>
> Thanks Harry and all others who have actively contributed to the design and
> discussions thus far.
>
> Due to other commitments, we couldn't participate in XDC this time and also
> the delay on our part. Our apologies.
>
> We looked at the approach and are aligned to go with property-based design,
> with some suggestions. Will follow in comments in respective patches.
> We are also in process of trying this for Intel's hardware to identify if any
> gaps.
>
That's great to hear. Thanks, Uma.
Harry
> Regards,
> Uma Shankar
>
>> v2:
>> - Rebased on drm-misc-next
>> - Introduce a VKMS Kunit so we can test LUT functionality in vkms_composer
>> - Incorporate feedback in color_pipeline.rst doc
>> - Add support for sRGB inverse EOTF
>> - Add 2nd enumerated TF colorop to VKMS
>> - Fix LUTs and some issues with applying LUTs in VKMS
>>
>> Cc: Ville Syrjala <[email protected]>
>> Cc: Pekka Paalanen <[email protected]>
>> Cc: Simon Ser <[email protected]>
>> Cc: Harry Wentland <[email protected]>
>> Cc: Melissa Wen <[email protected]>
>> Cc: Jonas Ådahl <[email protected]>
>> Cc: Sebastian Wick <[email protected]>
>> Cc: Shashank Sharma <[email protected]>
>> Cc: Alexander Goins <[email protected]>
>> Cc: Joshua Ashton <[email protected]>
>> Cc: Michel Dänzer <[email protected]>
>> Cc: Aleix Pol <[email protected]>
>> Cc: Xaver Hugl <[email protected]>
>> Cc: Victoria Brekenfeld <[email protected]>
>> Cc: Sima <[email protected]>
>> Cc: Uma Shankar <[email protected]>
>> Cc: Naseer Ahmed <[email protected]>
>> Cc: Christopher Braga <[email protected]>
>> Cc: Abhinav Kumar <[email protected]>
>> Cc: Arthur Grillo <[email protected]>
>> Cc: Hector Martin <[email protected]>
>> Cc: Liviu Dudau <[email protected]>
>> Cc: Sasha McIntosh <[email protected]>
>>
>> Harry Wentland (17):
>> drm/atomic: Allow get_value for immutable properties on atomic drivers
>> drm: Don't treat 0 as -1 in drm_fixp2int_ceil
>> drm/vkms: Create separate Kconfig file for VKMS
>> drm/vkms: Add kunit tests for VKMS LUT handling
>> drm/vkms: Avoid reading beyond LUT array
>> drm/doc/rfc: Describe why prescriptive color pipeline is needed
>> drm/colorop: Introduce new drm_colorop mode object
>> drm/colorop: Add TYPE property
>> drm/color: Add 1D Curve subtype
>> drm/colorop: Add BYPASS property
>> drm/colorop: Add NEXT property
>> drm/colorop: Add atomic state print for drm_colorop
>> drm/colorop: Add new IOCTLs to retrieve drm_colorop objects
>> drm/plane: Add COLOR PIPELINE property
>> drm/colorop: Add NEXT to colorop state print
>> drm/vkms: Add enumerated 1D curve colorop
>> drm/vkms: Add kunit tests for linear and sRGB LUTs
>>
>> Documentation/gpu/rfc/color_pipeline.rst | 347 ++++++++
>> drivers/gpu/drm/Kconfig | 14 +-
>> drivers/gpu/drm/Makefile | 1 +
>> drivers/gpu/drm/drm_atomic.c | 155 ++++
>> drivers/gpu/drm/drm_atomic_helper.c | 12 +
>> drivers/gpu/drm/drm_atomic_state_helper.c | 5 +
>> drivers/gpu/drm/drm_atomic_uapi.c | 110 +++
>> drivers/gpu/drm/drm_colorop.c | 384 +++++++++
>> drivers/gpu/drm/drm_crtc_internal.h | 4 +
>> drivers/gpu/drm/drm_ioctl.c | 5 +
>> drivers/gpu/drm/drm_mode_config.c | 7 +
>> drivers/gpu/drm/drm_mode_object.c | 3 +-
>> drivers/gpu/drm/drm_plane_helper.c | 2 +-
>> drivers/gpu/drm/vkms/Kconfig | 20 +
>> drivers/gpu/drm/vkms/Makefile | 6 +-
>> drivers/gpu/drm/vkms/tests/.kunitconfig | 4 +
>> drivers/gpu/drm/vkms/tests/Makefile | 4 +
>> drivers/gpu/drm/vkms/tests/vkms_color_tests.c | 100 +++
>> drivers/gpu/drm/vkms/vkms_colorop.c | 85 ++
>> drivers/gpu/drm/vkms/vkms_composer.c | 77 +-
>> drivers/gpu/drm/vkms/vkms_composer.h | 25 +
>> drivers/gpu/drm/vkms/vkms_drv.h | 4 +
>> drivers/gpu/drm/vkms/vkms_luts.c | 802 ++++++++++++++++++
>> drivers/gpu/drm/vkms/vkms_luts.h | 12 +
>> drivers/gpu/drm/vkms/vkms_plane.c | 2 +
>> include/drm/drm_atomic.h | 82 ++
>> include/drm/drm_atomic_uapi.h | 3 +
>> include/drm/drm_colorop.h | 235 +++++
>> include/drm/drm_fixed.h | 2 +-
>> include/drm/drm_mode_config.h | 18 +
>> include/drm/drm_plane.h | 10 +
>> include/uapi/drm/drm.h | 3 +
>> include/uapi/drm/drm_mode.h | 22 +
>> 33 files changed, 2530 insertions(+), 35 deletions(-) create mode 100644
>> Documentation/gpu/rfc/color_pipeline.rst
>> create mode 100644 drivers/gpu/drm/drm_colorop.c create mode 100644
>> drivers/gpu/drm/vkms/Kconfig create mode 100644
>> drivers/gpu/drm/vkms/tests/.kunitconfig
>> create mode 100644 drivers/gpu/drm/vkms/tests/Makefile
>> create mode 100644 drivers/gpu/drm/vkms/tests/vkms_color_tests.c
>> create mode 100644 drivers/gpu/drm/vkms/vkms_colorop.c
>> create mode 100644 drivers/gpu/drm/vkms/vkms_composer.h
>> create mode 100644 drivers/gpu/drm/vkms/vkms_luts.c create mode 100644
>> drivers/gpu/drm/vkms/vkms_luts.h create mode 100644
>> include/drm/drm_colorop.h
>>
>> --
>> 2.42.0
>