aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_crtc.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2012-04-05 14:35:17 -0400
committerDave Airlie <airlied@redhat.com>2012-04-20 07:38:00 -0400
commit01b68b0483627631c738dcfca0dee7e22892c420 (patch)
tree9eead4bda1b134612d0c564a3a6c2ad690291560 /drivers/gpu/drm/drm_crtc.c
parent5a86bd552407bd6b3e0df4e88636797484d06430 (diff)
drm: Add drm_format_{horz, vert}_chroma_subsampling() utility functions
These functions return the chroma subsampling factors for the specified pixel format. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r--drivers/gpu/drm/drm_crtc.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 2c4e9cf2a1d2..1b79c953b4cc 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -3543,3 +3543,63 @@ int drm_format_plane_cpp(uint32_t format, int plane)
3543 } 3543 }
3544} 3544}
3545EXPORT_SYMBOL(drm_format_plane_cpp); 3545EXPORT_SYMBOL(drm_format_plane_cpp);
3546
3547/**
3548 * drm_format_horz_chroma_subsampling - get the horizontal chroma subsampling factor
3549 * @format: pixel format (DRM_FORMAT_*)
3550 *
3551 * RETURNS:
3552 * The horizontal chroma subsampling factor for the
3553 * specified pixel format.
3554 */
3555int drm_format_horz_chroma_subsampling(uint32_t format)
3556{
3557 switch (format) {
3558 case DRM_FORMAT_YUV411:
3559 case DRM_FORMAT_YVU411:
3560 case DRM_FORMAT_YUV410:
3561 case DRM_FORMAT_YVU410:
3562 return 4;
3563 case DRM_FORMAT_YUYV:
3564 case DRM_FORMAT_YVYU:
3565 case DRM_FORMAT_UYVY:
3566 case DRM_FORMAT_VYUY:
3567 case DRM_FORMAT_NV12:
3568 case DRM_FORMAT_NV21:
3569 case DRM_FORMAT_NV16:
3570 case DRM_FORMAT_NV61:
3571 case DRM_FORMAT_YUV422:
3572 case DRM_FORMAT_YVU422:
3573 case DRM_FORMAT_YUV420:
3574 case DRM_FORMAT_YVU420:
3575 return 2;
3576 default:
3577 return 1;
3578 }
3579}
3580EXPORT_SYMBOL(drm_format_horz_chroma_subsampling);
3581
3582/**
3583 * drm_format_vert_chroma_subsampling - get the vertical chroma subsampling factor
3584 * @format: pixel format (DRM_FORMAT_*)
3585 *
3586 * RETURNS:
3587 * The vertical chroma subsampling factor for the
3588 * specified pixel format.
3589 */
3590int drm_format_vert_chroma_subsampling(uint32_t format)
3591{
3592 switch (format) {
3593 case DRM_FORMAT_YUV410:
3594 case DRM_FORMAT_YVU410:
3595 return 4;
3596 case DRM_FORMAT_YUV420:
3597 case DRM_FORMAT_YVU420:
3598 case DRM_FORMAT_NV12:
3599 case DRM_FORMAT_NV21:
3600 return 2;
3601 default:
3602 return 1;
3603 }
3604}
3605EXPORT_SYMBOL(drm_format_vert_chroma_subsampling);