mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-22 17:33:01 +00:00
drm: Add drm_format_plane_cpp() utility function
This function returns the bytes per pixel value based on the pixel format and plane index. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
141670e9b4
commit
5a86bd5524
@ -3498,3 +3498,48 @@ int drm_format_num_planes(uint32_t format)
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(drm_format_num_planes);
|
||||
|
||||
/**
|
||||
* drm_format_plane_cpp - determine the bytes per pixel value
|
||||
* @format: pixel format (DRM_FORMAT_*)
|
||||
* @plane: plane index
|
||||
*
|
||||
* RETURNS:
|
||||
* The bytes per pixel value for the specified plane.
|
||||
*/
|
||||
int drm_format_plane_cpp(uint32_t format, int plane)
|
||||
{
|
||||
unsigned int depth;
|
||||
int bpp;
|
||||
|
||||
if (plane >= drm_format_num_planes(format))
|
||||
return 0;
|
||||
|
||||
switch (format) {
|
||||
case DRM_FORMAT_YUYV:
|
||||
case DRM_FORMAT_YVYU:
|
||||
case DRM_FORMAT_UYVY:
|
||||
case DRM_FORMAT_VYUY:
|
||||
return 2;
|
||||
case DRM_FORMAT_NV12:
|
||||
case DRM_FORMAT_NV21:
|
||||
case DRM_FORMAT_NV16:
|
||||
case DRM_FORMAT_NV61:
|
||||
return plane ? 2 : 1;
|
||||
case DRM_FORMAT_YUV410:
|
||||
case DRM_FORMAT_YVU410:
|
||||
case DRM_FORMAT_YUV411:
|
||||
case DRM_FORMAT_YVU411:
|
||||
case DRM_FORMAT_YUV420:
|
||||
case DRM_FORMAT_YVU420:
|
||||
case DRM_FORMAT_YUV422:
|
||||
case DRM_FORMAT_YVU422:
|
||||
case DRM_FORMAT_YUV444:
|
||||
case DRM_FORMAT_YVU444:
|
||||
return 1;
|
||||
default:
|
||||
drm_fb_get_bpp_depth(format, &depth, &bpp);
|
||||
return bpp >> 3;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(drm_format_plane_cpp);
|
||||
|
@ -1027,5 +1027,6 @@ extern int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
|
||||
extern void drm_fb_get_bpp_depth(uint32_t format, unsigned int *depth,
|
||||
int *bpp);
|
||||
extern int drm_format_num_planes(uint32_t format);
|
||||
extern int drm_format_plane_cpp(uint32_t format, int plane);
|
||||
|
||||
#endif /* __DRM_CRTC_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user