On 2023-11-08 06:54, Shankar, Uma wrote: > > >> -----Original Message----- >> From: Harry Wentland <harry.wentland@xxxxxxx> >> Sent: Friday, October 20, 2023 2:51 AM >> To: dri-devel@xxxxxxxxxxxxxxxxxxxxx >> Cc: wayland-devel@xxxxxxxxxxxxxxxxxxxxx; Harry Wentland >> <harry.wentland@xxxxxxx>; Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx>; Pekka >> Paalanen <pekka.paalanen@xxxxxxxxxxxxx>; Simon Ser <contact@xxxxxxxxxxx>; >> Melissa Wen <mwen@xxxxxxxxxx>; Jonas Ådahl <jadahl@xxxxxxxxxx>; Sebastian >> Wick <sebastian.wick@xxxxxxxxxx>; Shashank Sharma >> <shashank.sharma@xxxxxxx>; Alexander Goins <agoins@xxxxxxxxxx>; Joshua >> Ashton <joshua@xxxxxxxxx>; Michel Dänzer <mdaenzer@xxxxxxxxxx>; Aleix Pol >> <aleixpol@xxxxxxx>; Xaver Hugl <xaver.hugl@xxxxxxxxx>; Victoria Brekenfeld >> <victoria@xxxxxxxxxxxx>; Sima <daniel@xxxxxxxx>; Shankar, Uma >> <uma.shankar@xxxxxxxxx>; Naseer Ahmed <quic_naseer@xxxxxxxxxxx>; >> Christopher Braga <quic_cbraga@xxxxxxxxxxx>; Abhinav Kumar >> <quic_abhinavk@xxxxxxxxxxx>; Arthur Grillo <arthurgrillo@xxxxxxxxxx>; Hector >> Martin <marcan@xxxxxxxxx>; Liviu Dudau <Liviu.Dudau@xxxxxxx>; Sasha >> McIntosh <sashamcintosh@xxxxxxxxxx> >> 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 <ville.syrjala@xxxxxxxxxxxxxxx> >> Cc: Pekka Paalanen <pekka.paalanen@xxxxxxxxxxxxx> >> Cc: Simon Ser <contact@xxxxxxxxxxx> >> Cc: Harry Wentland <harry.wentland@xxxxxxx> >> Cc: Melissa Wen <mwen@xxxxxxxxxx> >> Cc: Jonas Ådahl <jadahl@xxxxxxxxxx> >> Cc: Sebastian Wick <sebastian.wick@xxxxxxxxxx> >> Cc: Shashank Sharma <shashank.sharma@xxxxxxx> >> Cc: Alexander Goins <agoins@xxxxxxxxxx> >> Cc: Joshua Ashton <joshua@xxxxxxxxx> >> Cc: Michel Dänzer <mdaenzer@xxxxxxxxxx> >> Cc: Aleix Pol <aleixpol@xxxxxxx> >> Cc: Xaver Hugl <xaver.hugl@xxxxxxxxx> >> Cc: Victoria Brekenfeld <victoria@xxxxxxxxxxxx> >> Cc: Sima <daniel@xxxxxxxx> >> Cc: Uma Shankar <uma.shankar@xxxxxxxxx> >> Cc: Naseer Ahmed <quic_naseer@xxxxxxxxxxx> >> Cc: Christopher Braga <quic_cbraga@xxxxxxxxxxx> >> Cc: Abhinav Kumar <quic_abhinavk@xxxxxxxxxxx> >> Cc: Arthur Grillo <arthurgrillo@xxxxxxxxxx> >> Cc: Hector Martin <marcan@xxxxxxxxx> >> Cc: Liviu Dudau <Liviu.Dudau@xxxxxxx> >> Cc: Sasha McIntosh <sashamcintosh@xxxxxxxxxx> >> >> 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 >