[Intel-gfx] [v8][PATCH 03/10] drm/i915/display: Add func to compare hw/sw gamma lut
Shankar, Uma
uma.shankar at intel.com
Wed Aug 28 15:22:17 UTC 2019
>-----Original Message-----
>From: Sharma, Swati2
>Sent: Monday, August 26, 2019 11:56 AM
>To: intel-gfx at lists.freedesktop.org
>Cc: Nikula, Jani <jani.nikula at intel.com>; Sharma, Shashank
><shashank.sharma at intel.com>; Manna, Animesh <animesh.manna at intel.com>;
>Nautiyal, Ankit K <ankit.k.nautiyal at intel.com>; daniel.vetter at ffwll.ch;
>ville.syrjala at linux.intel.com; Shankar, Uma <uma.shankar at intel.com>; Sharma,
>Swati2 <swati2.sharma at intel.com>
>Subject: [v8][PATCH 03/10] drm/i915/display: Add func to compare hw/sw gamma lut
>
>Add func intel_color_lut_equal() to compare hw/sw gamma lut values. Since hw/sw
>gamma lut sizes and lut enteries comparsion will be different for different gamma
Typo here in entries and comparison.
>modes, add gamma mode dependent checks.
Please keep the revision history of patch as well. Also add what is changed from the
previous version, like limiting to gamma mode alone.
>Signed-off-by: Swati Sharma <swati2.sharma at intel.com>
>---
> drivers/gpu/drm/i915/display/intel_color.c | 71 ++++++++++++++++++++++++++++++
>drivers/gpu/drm/i915/display/intel_color.h | 6 +++
> 2 files changed, 77 insertions(+)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_color.c
>b/drivers/gpu/drm/i915/display/intel_color.c
>index d2c1297..27727a1 100644
>--- a/drivers/gpu/drm/i915/display/intel_color.c
>+++ b/drivers/gpu/drm/i915/display/intel_color.c
>@@ -1450,6 +1450,77 @@ int intel_color_get_gamma_bit_precision(const struct
>intel_crtc_state *crtc_stat
> return 0;
> }
>
>+static inline bool err_check(struct drm_color_lut *sw_lut,
>+ struct drm_color_lut *hw_lut, u32 err) {
>+ return ((abs((long)hw_lut->red - sw_lut->red)) <= err) &&
>+ ((abs((long)hw_lut->blue - sw_lut->blue)) <= err) &&
>+ ((abs((long)hw_lut->green - sw_lut->green)) <= err); }
>+
>+static inline bool intel_color_lut_entry_equal(struct drm_color_lut *sw_lut,
>+ struct drm_color_lut *hw_lut,
>+ int hw_lut_size, u32 err)
>+{
>+ int i;
>+
>+ for (i = 0; i < hw_lut_size; i++) {
>+ if (!err_check(&hw_lut[i], &sw_lut[i], err))
>+ return false;
>+ }
>+
>+ return true;
>+}
>+
>+bool intel_color_lut_equal(struct drm_property_blob *blob1,
>+ struct drm_property_blob *blob2,
>+ u32 gamma_mode, u32 bit_precision) {
>+ struct drm_color_lut *sw_lut, *hw_lut;
>+ int sw_lut_size, hw_lut_size;
>+ u32 err;
>+
>+ if (!blob1 != !blob2)
>+ return false;
>+
>+ if (!blob1)
>+ return true;
>+
>+ sw_lut_size = drm_color_lut_size(blob1);
>+ hw_lut_size = drm_color_lut_size(blob2);
>+
>+ switch (gamma_mode) {
>+ case GAMMA_MODE_MODE_8BIT:
>+ case GAMMA_MODE_MODE_10BIT:
>+ if (sw_lut_size != hw_lut_size)
>+ return false;
>+ else
You may drop else, just simply put break.
>+ break;
>+ default:
>+ MISSING_CASE(gamma_mode);
>+ return false;
>+ }
>+
>+ sw_lut = blob1->data;
>+ hw_lut = blob2->data;
>+
>+ err = 0xffff >> bit_precision;
>+
>+ switch (gamma_mode) {
>+ case GAMMA_MODE_MODE_8BIT:
>+ case GAMMA_MODE_MODE_10BIT:
>+ if (!intel_color_lut_entry_equal(sw_lut, hw_lut, hw_lut_size, err))
Limit it within 80 characters.
>+ return false;
>+ else
>+ break;
Drop else here as well. Indentation also seems off.
>+ default:
>+ MISSING_CASE(gamma_mode);
>+ return false;
>+ }
>+
>+ return true;
>+}
>+
> void intel_color_init(struct intel_crtc *crtc) {
> struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); diff --git
>a/drivers/gpu/drm/i915/display/intel_color.h
>b/drivers/gpu/drm/i915/display/intel_color.h
>index 0226d3a..173727a 100644
>--- a/drivers/gpu/drm/i915/display/intel_color.h
>+++ b/drivers/gpu/drm/i915/display/intel_color.h
>@@ -6,8 +6,11 @@
> #ifndef __INTEL_COLOR_H__
> #define __INTEL_COLOR_H__
>
>+#include <linux/types.h>
>+
> struct intel_crtc_state;
> struct intel_crtc;
>+struct drm_property_blob;
>
> void intel_color_init(struct intel_crtc *crtc); int intel_color_check(struct
>intel_crtc_state *crtc_state); @@ -15,5 +18,8 @@ void intel_color_load_luts(const
>struct intel_crtc_state *crtc_state); void intel_color_get_config(struct
>intel_crtc_state *crtc_state); int intel_color_get_gamma_bit_precision(const struct
>intel_crtc_state *crtc_state);
>+bool intel_color_lut_equal(struct drm_property_blob *blob1,
>+ struct drm_property_blob *blob2,
>+ u32 gamma_mode, u32 bit_precision);
>
> #endif /* __INTEL_COLOR_H__ */
>--
>1.9.1
More information about the Intel-gfx
mailing list