compositor-drm: move refresh rate computation
Move it into to a new function. Following patches want to compute it elsewhere as well. No functional changes. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Ian Ray <ian.ray@ge.com> Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
parent
46e4f97ab6
commit
dc14fd4cd7
|
@ -3699,6 +3699,25 @@ destroy_sprites(struct drm_backend *b)
|
|||
drm_plane_destroy(plane);
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
drm_refresh_rate_mHz(const drmModeModeInfo *info)
|
||||
{
|
||||
uint64_t refresh;
|
||||
|
||||
/* Calculate higher precision (mHz) refresh rate */
|
||||
refresh = (info->clock * 1000000LL / info->htotal +
|
||||
info->vtotal / 2) / info->vtotal;
|
||||
|
||||
if (info->flags & DRM_MODE_FLAG_INTERLACE)
|
||||
refresh *= 2;
|
||||
if (info->flags & DRM_MODE_FLAG_DBLSCAN)
|
||||
refresh /= 2;
|
||||
if (info->vscan > 1)
|
||||
refresh /= info->vscan;
|
||||
|
||||
return refresh;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a mode to output's mode list
|
||||
*
|
||||
|
@ -3713,7 +3732,6 @@ static struct drm_mode *
|
|||
drm_output_add_mode(struct drm_output *output, const drmModeModeInfo *info)
|
||||
{
|
||||
struct drm_mode *mode;
|
||||
uint64_t refresh;
|
||||
|
||||
mode = malloc(sizeof *mode);
|
||||
if (mode == NULL)
|
||||
|
@ -3723,18 +3741,7 @@ drm_output_add_mode(struct drm_output *output, const drmModeModeInfo *info)
|
|||
mode->base.width = info->hdisplay;
|
||||
mode->base.height = info->vdisplay;
|
||||
|
||||
/* Calculate higher precision (mHz) refresh rate */
|
||||
refresh = (info->clock * 1000000LL / info->htotal +
|
||||
info->vtotal / 2) / info->vtotal;
|
||||
|
||||
if (info->flags & DRM_MODE_FLAG_INTERLACE)
|
||||
refresh *= 2;
|
||||
if (info->flags & DRM_MODE_FLAG_DBLSCAN)
|
||||
refresh /= 2;
|
||||
if (info->vscan > 1)
|
||||
refresh /= info->vscan;
|
||||
|
||||
mode->base.refresh = refresh;
|
||||
mode->base.refresh = drm_refresh_rate_mHz(info);
|
||||
mode->mode_info = *info;
|
||||
mode->blob_id = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue