mirror of https://gitee.com/openkylin/linux.git
drm: If available use atomic state in getcrtc ioctl
This way drivers fully converted to atomic don't need to update these legacy state variables in their modeset code any more. Reviewed-by: Rob Clark <robdclark@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
This commit is contained in:
parent
17a38d9c25
commit
31c946e85c
|
@ -2009,21 +2009,32 @@ int drm_mode_getcrtc(struct drm_device *dev,
|
|||
return -ENOENT;
|
||||
|
||||
drm_modeset_lock_crtc(crtc, crtc->primary);
|
||||
crtc_resp->x = crtc->x;
|
||||
crtc_resp->y = crtc->y;
|
||||
crtc_resp->gamma_size = crtc->gamma_size;
|
||||
if (crtc->primary->fb)
|
||||
crtc_resp->fb_id = crtc->primary->fb->base.id;
|
||||
else
|
||||
crtc_resp->fb_id = 0;
|
||||
|
||||
if (crtc->enabled) {
|
||||
|
||||
drm_crtc_convert_to_umode(&crtc_resp->mode, &crtc->mode);
|
||||
crtc_resp->mode_valid = 1;
|
||||
if (crtc->state) {
|
||||
crtc_resp->x = crtc->primary->state->src_x >> 16;
|
||||
crtc_resp->y = crtc->primary->state->src_y >> 16;
|
||||
if (crtc->state->enable) {
|
||||
drm_crtc_convert_to_umode(&crtc_resp->mode, &crtc->state->mode);
|
||||
crtc_resp->mode_valid = 1;
|
||||
|
||||
} else {
|
||||
crtc_resp->mode_valid = 0;
|
||||
}
|
||||
} else {
|
||||
crtc_resp->mode_valid = 0;
|
||||
crtc_resp->x = crtc->x;
|
||||
crtc_resp->y = crtc->y;
|
||||
if (crtc->enabled) {
|
||||
drm_crtc_convert_to_umode(&crtc_resp->mode, &crtc->mode);
|
||||
crtc_resp->mode_valid = 1;
|
||||
|
||||
} else {
|
||||
crtc_resp->mode_valid = 0;
|
||||
}
|
||||
}
|
||||
drm_modeset_unlock_crtc(crtc);
|
||||
|
||||
|
|
Loading…
Reference in New Issue