mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Leandro Ribeiro <leandro.ribeiro@collabora.com>
To: louis.chauvet@bootlin.com
Cc: airlied@gmail.com, alex.hung@amd.com, daniel@fooishbar.org,
	hamohammed.sa@gmail.com, harry.wentland@amd.com,
	maarten.lankhorst@linux.intel.com, melissa.srw@gmail.com,
	mripard@kernel.org, pekka.paalanen@collabora.com,
	robert.mader@collabora.com, simona@ffwll.ch, tzimmermann@suse.de,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2 00/12] drm/vkms: improve color curve LUTs precision
Date: Fri,  6 Nov 2026 17:18:01 -0300	[thread overview]
Message-ID: <20261106201813.129911-1-leandro.ribeiro@collabora.com> (raw)

Currently VKMS only supports uniform LUTs. Besides the userspace
provided LUTs, it also represents color curves with LUTs, as it can't
simply implement the continuous curve formulas (floating-point would be
required).

This adds support to represent color curves with non-uniform LUTs,
improving the precision significantly. It also provides a script
that can be used to create these LUTs.

The optimized LUTs use more samples in regions where the interpolation
and quantization errors are higher (usually in regions with a steeper
slope). The LUT generator script compares different strategies and uses
greedy subdivision, which outperformed the other methods, to generate
the optimized LUTs for VKMS.

For now, only the existing sRGB and inverse sRGB curves are replaced.
Support for more color curves will be added in future patchsets.

v2:
- Fixed a few minor issues spotted by Sashiko bot
- Added reviewed-by and tested-by tags
- Rebased

Leandro Ribeiro (12):
  drm/vkms: rename VKMS_LUT_SIZE to VKMS_GAMMA_LUT_SIZE
  vkms: properly compute gamma LUT size in vkms_atomic_check()
  drm/vkms: allow color curve LUTs to have different sizes
  drm/vkms: remove TEST_LUT_SIZE
  drm/vkms: remove linear_eotf
  drm/vkms: improve the way in which we access LUT member
  drm/vkms: rename struct vkms_color_lut::base to y
  drm/vkms: rename get_lut_index() to get_uniform_lut_index()
  drm/vkms: add support to non-uniform LUT for internal color curves
  drm/vkms: test sRGB and inverse sRGB LUTs using more samples
  drm/vkms: add script to create optimized LUTs for color curves
  drm/vkms: replace uniform sRGB LUT and its inverse with optimal ones

 .../gpu/drm/vkms/scripts/color-curve-lut.py   |  573 +++++++
 drivers/gpu/drm/vkms/tests/vkms_color_test.c  |   48 +-
 drivers/gpu/drm/vkms/vkms_composer.c          |  127 +-
 drivers/gpu/drm/vkms/vkms_composer.h          |    2 +-
 drivers/gpu/drm/vkms/vkms_crtc.c              |    4 +-
 drivers/gpu/drm/vkms/vkms_drv.c               |    4 +-
 drivers/gpu/drm/vkms/vkms_drv.h               |   13 +-
 drivers/gpu/drm/vkms/vkms_luts.c              | 1469 ++++++++---------
 drivers/gpu/drm/vkms/vkms_luts.h              |    3 -
 9 files changed, 1397 insertions(+), 846 deletions(-)
 create mode 100644 drivers/gpu/drm/vkms/scripts/color-curve-lut.py

-- 
2.56.0


             reply	other threads:[~2026-11-06 20:18 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-06 20:18 Leandro Ribeiro [this message]
2026-11-06 20:18 ` [PATCH v2 01/12] drm/vkms: rename VKMS_LUT_SIZE to VKMS_GAMMA_LUT_SIZE Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 02/12] vkms: properly compute gamma LUT size in vkms_atomic_check() Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 03/12] drm/vkms: allow color curve LUTs to have different sizes Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 04/12] drm/vkms: remove TEST_LUT_SIZE Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 05/12] drm/vkms: remove linear_eotf Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 06/12] drm/vkms: improve the way in which we access LUT member Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 07/12] drm/vkms: rename struct vkms_color_lut::base to y Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 08/12] drm/vkms: rename get_lut_index() to get_uniform_lut_index() Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 09/12] drm/vkms: add support to non-uniform LUT for internal color curves Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 10/12] drm/vkms: test sRGB and inverse sRGB LUTs using more samples Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 11/12] drm/vkms: add script to create optimized LUTs for color curves Leandro Ribeiro
2026-11-06 20:18 ` [PATCH v2 12/12] drm/vkms: replace uniform sRGB LUT and its inverse with optimal ones Leandro Ribeiro

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261106201813.129911-1-leandro.ribeiro@collabora.com \
    --to=leandro.ribeiro@collabora.com \
    --cc=airlied@gmail.com \
    --cc=alex.hung@amd.com \
    --cc=daniel@fooishbar.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hamohammed.sa@gmail.com \
    --cc=harry.wentland@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=louis.chauvet@bootlin.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=melissa.srw@gmail.com \
    --cc=mripard@kernel.org \
    --cc=pekka.paalanen@collabora.com \
    --cc=robert.mader@collabora.com \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®