drm/i915: Enable YUV to RGB for Gen10 in Plane Ctrl Reg
If the fb format is YUV, enable the plane CSC mode bits for the conversion. v2: Addressed review comments from Shashank Sharma Alignment issue fixed in i915_reg.h v3: Adding Reviewed By from Shashank Sharma v4: Rebased the patch. As part of rebasing, re-using the color series defines which are already merged. plane_state->base.color_encoding might not be set for NV12. For now, just using PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709 in glk_plane_color_ctl if format is NV12. v5: Added reviewed by from Juha-Pekka Heikkila v6: Rebased the series Reviewed-by: Shashank Sharma <shashank.sharma@intel.com> Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/1523245273-30264-12-git-send-email-vidya.srinivas@intel.com
This commit is contained in:
parent
c4a4efa917
commit
8ed30ab6ac
@ -3630,6 +3630,11 @@ u32 glk_plane_color_ctl(const struct intel_crtc_state *crtc_state,
|
|||||||
plane_color_ctl |= glk_plane_color_ctl_alpha(fb->format->format);
|
plane_color_ctl |= glk_plane_color_ctl_alpha(fb->format->format);
|
||||||
|
|
||||||
if (intel_format_is_yuv(fb->format->format)) {
|
if (intel_format_is_yuv(fb->format->format)) {
|
||||||
|
if (fb->format->format == DRM_FORMAT_NV12) {
|
||||||
|
plane_color_ctl |=
|
||||||
|
PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709)
|
if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709)
|
||||||
plane_color_ctl |= PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709;
|
plane_color_ctl |= PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709;
|
||||||
else
|
else
|
||||||
@ -3638,7 +3643,7 @@ u32 glk_plane_color_ctl(const struct intel_crtc_state *crtc_state,
|
|||||||
if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
|
if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
|
||||||
plane_color_ctl |= PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE;
|
plane_color_ctl |= PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE;
|
||||||
}
|
}
|
||||||
|
out:
|
||||||
return plane_color_ctl;
|
return plane_color_ctl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user