diff options
| author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-02-22 12:24:17 +0100 | 
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-02-23 11:20:11 +0100 | 
| commit | 31c946e85ce6b48ce0f25e3cdca8362e4fe8b300 (patch) | |
| tree | d58f76c5d29d2c3cc066bb1bdb9c8306d6f02af7 | |
| parent | 17a38d9c254bf4e3b0d8b7ccd5c1988cb63730ff (diff) | |
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>
| -rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 25 | 
1 files changed, 18 insertions, 7 deletions
| diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 6b00173d1be4..4dacee645153 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -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); | 
