[PATCH 02/11] drm/vkms: allow color curve LUTs to have different sizes
Leandro Ribeiro <[email protected]> Tue, 4 Aug 2026 17:33:42 -0300
| Newsgroups | gmane.linux.kernel,gmane.comp.video.dri.devel |
|---|---|
| Message-ID | <[email protected]> |
Instead of keeping a hardcoded size that all LUTs representing color curves must use, use ARRAY_SIZE() instead. Besides making the code clearer, this allows us to create optimal LUTs for each color curve, and each of them can naturally have a different size. In the next commits we introduce these optimal LUTs. Signed-off-by: Leandro Ribeiro <[email protected]> --- drivers/gpu/drm/vkms/tests/vkms_color_test.c | 4 ++-- drivers/gpu/drm/vkms/vkms_luts.c | 12 ++++++------ drivers/gpu/drm/vkms/vkms_luts.h | 2 -- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/vkms/tests/vkms_color_test.c b/drivers/gpu/drm/vkms/tests/vkms_color_test.c index 1a1c7cac2f15..18e73a8a5c31 100644 --- a/drivers/gpu/drm/vkms/tests/vkms_color_test.c +++ b/drivers/gpu/drm/vkms/tests/vkms_color_test.c @@ -128,7 +128,7 @@ static void vkms_color_test_lerp(struct kunit *test) static void vkms_color_test_linear(struct kunit *test) { - for (int i = 0; i < LUT_SIZE; i++) { + for (int i = 0; i < linear_eotf.lut_length; i++) { int linear = apply_lut_to_channel_value(&linear_eotf, i * 0x101, LUT_RED); KUNIT_EXPECT_EQ(test, DIV_ROUND_CLOSEST(linear, 0x101), i); @@ -139,7 +139,7 @@ static void vkms_color_srgb_inv_srgb(struct kunit *test) { u16 srgb, final; - for (int i = 0; i < LUT_SIZE; i++) { + for (int i = 0; i < srgb_eotf.lut_length; i++) { srgb = apply_lut_to_channel_value(&srgb_eotf, i * 0x101, LUT_RED); final = apply_lut_to_channel_value(&srgb_inv_eotf, srgb, LUT_RED); diff --git a/drivers/gpu/drm/vkms/vkms_luts.c b/drivers/gpu/drm/vkms/vkms_luts.c index 82cb792f10d8..6dcdef26bda8 100644 --- a/drivers/gpu/drm/vkms/vkms_luts.c +++ b/drivers/gpu/drm/vkms/vkms_luts.c @@ -12,7 +12,7 @@ * https://gitlab.freedesktop.org/hwentland/lutgen */ -static struct drm_color_lut linear_array[LUT_SIZE] = { +static struct drm_color_lut linear_array[] = { { 0x0, 0x0, 0x0, 0 }, { 0x101, 0x101, 0x101, 0 }, { 0x202, 0x202, 0x202, 0 }, @@ -273,12 +273,12 @@ static struct drm_color_lut linear_array[LUT_SIZE] = { const struct vkms_color_lut linear_eotf = { .base = linear_array, - .lut_length = LUT_SIZE, + .lut_length = ARRAY_SIZE(linear_array), .channel_value2index_ratio = 0xff00ffll }; EXPORT_SYMBOL(linear_eotf); -static struct drm_color_lut srgb_array[LUT_SIZE] = { +static struct drm_color_lut srgb_array[] = { { 0x0, 0x0, 0x0, 0 }, { 0x13, 0x13, 0x13, 0 }, { 0x27, 0x27, 0x27, 0 }, @@ -539,12 +539,12 @@ static struct drm_color_lut srgb_array[LUT_SIZE] = { const struct vkms_color_lut srgb_eotf = { .base = srgb_array, - .lut_length = LUT_SIZE, + .lut_length = ARRAY_SIZE(srgb_array), .channel_value2index_ratio = 0xff00ffll }; EXPORT_SYMBOL(srgb_eotf); -static struct drm_color_lut srgb_inv_array[LUT_SIZE] = { +static struct drm_color_lut srgb_inv_array[] = { { 0x0, 0x0, 0x0, 0 }, { 0xcc2, 0xcc2, 0xcc2, 0 }, { 0x15be, 0x15be, 0x15be, 0 }, @@ -805,7 +805,7 @@ static struct drm_color_lut srgb_inv_array[LUT_SIZE] = { const struct vkms_color_lut srgb_inv_eotf = { .base = srgb_inv_array, - .lut_length = LUT_SIZE, + .lut_length = ARRAY_SIZE(srgb_inv_array), .channel_value2index_ratio = 0xff00ffll }; EXPORT_SYMBOL(srgb_inv_eotf); diff --git a/drivers/gpu/drm/vkms/vkms_luts.h b/drivers/gpu/drm/vkms/vkms_luts.h index 925a4a7b84e2..8078ab33b83e 100644 --- a/drivers/gpu/drm/vkms/vkms_luts.h +++ b/drivers/gpu/drm/vkms/vkms_luts.h @@ -3,8 +3,6 @@ #ifndef _VKMS_LUTS_H_ #define _VKMS_LUTS_H_ -#define LUT_SIZE 256 - extern const struct vkms_color_lut linear_eotf; extern const struct vkms_color_lut srgb_eotf; extern const struct vkms_color_lut srgb_inv_eotf; -- 2.55.0