Commit db61d160 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Remove the pointless 1:1 matrix copy

If we don't have to frob with the user provided ctm matrix there's
no point in copying it over. Just point at the user ctm directly.

Also the matrix gets fully populated by ctm_mult_by_limited() so
no need to zero initialize it.

Cc: Johnson Lin <johnson.lin@intel.com>
Cc: Uma Shankar <uma.shankar@intel.com>
Cc: Shashank Sharma <shashank.sharma@intel.com>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180222214232.6064-2-ville.syrjala@linux.intel.comReviewed-by: default avatarUma Shankar <uma.shankar@intel.com>
parent f074037a
...@@ -86,7 +86,7 @@ static bool crtc_state_is_legacy_gamma(struct drm_crtc_state *state) ...@@ -86,7 +86,7 @@ static bool crtc_state_is_legacy_gamma(struct drm_crtc_state *state)
* When using limited range, multiply the matrix given by userspace by * When using limited range, multiply the matrix given by userspace by
* the matrix that we would use for the limited range. * the matrix that we would use for the limited range.
*/ */
static void ctm_mult_by_limited(u64 *result, const u64 *input) static u64 *ctm_mult_by_limited(u64 *result, const u64 *input)
{ {
int i; int i;
...@@ -104,6 +104,8 @@ static void ctm_mult_by_limited(u64 *result, const u64 *input) ...@@ -104,6 +104,8 @@ static void ctm_mult_by_limited(u64 *result, const u64 *input)
result[i] = mul_u32_u32(limited_coeff, abs_coeff) >> 30; result[i] = mul_u32_u32(limited_coeff, abs_coeff) >> 30;
result[i] |= user_coeff & CTM_COEFF_SIGN; result[i] |= user_coeff & CTM_COEFF_SIGN;
} }
return result;
} }
static void i9xx_load_ycbcr_conversion_matrix(struct intel_crtc *intel_crtc) static void i9xx_load_ycbcr_conversion_matrix(struct intel_crtc *intel_crtc)
...@@ -146,14 +148,13 @@ static void i9xx_load_csc_matrix(struct drm_crtc_state *crtc_state) ...@@ -146,14 +148,13 @@ static void i9xx_load_csc_matrix(struct drm_crtc_state *crtc_state)
} else if (crtc_state->ctm) { } else if (crtc_state->ctm) {
struct drm_color_ctm *ctm = struct drm_color_ctm *ctm =
(struct drm_color_ctm *)crtc_state->ctm->data; (struct drm_color_ctm *)crtc_state->ctm->data;
uint64_t input[9] = { 0, }; const u64 *input;
u64 temp[9];
if (intel_crtc_state->limited_color_range) { if (intel_crtc_state->limited_color_range)
ctm_mult_by_limited(input, ctm->matrix); input = ctm_mult_by_limited(temp, ctm->matrix);
} else { else
for (i = 0; i < ARRAY_SIZE(input); i++) input = ctm->matrix;
input[i] = ctm->matrix[i];
}
/* /*
* Convert fixed point S31.32 input to format supported by the * Convert fixed point S31.32 input to format supported by the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment