[PATCH 1/4] drm: Fix primary plane size for stereo doubled modes for legacy setcrtc

Jani Nikula jani.nikula at linux.intel.com
Tue Nov 17 06:26:05 PST 2015


On Tue, 17 Nov 2015, Daniel Vetter <daniel at ffwll.ch> wrote:
> On Mon, Nov 16, 2015 at 05:02:34PM +0200, ville.syrjala at linux.intel.com wrote:
>> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>> 
>> Properly double the hdisplay/vdisplay timings that we use as the primary
>> plane size with stereo doubled modes. Otherwise the modeset gets
>> rejected on machines where the primary plane must be fullscreen, and on
>> the rest only the first eye would get a visible plane.
>> 
>> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
>> Cc: stable at vger.kernel.org
>> Fixes: 042652ed9599 ("drm/atomic-helper: implementatations for legacy interfaces")
>> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Testcase: igt/kms_3d
> Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
>
> To avoid conflicts with patches 2-4 I applied all of them to drm-misc, but
> we need to cherry-pick this one to drm-fixes too.

Picked up in topic/drm-fixes.

BR,
Jani.


> -Daniel
>
>> ---
>>  drivers/gpu/drm/drm_atomic_helper.c | 15 +++++++++------
>>  1 file changed, 9 insertions(+), 6 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
>> index 9870c70..7857163 100644
>> --- a/drivers/gpu/drm/drm_atomic_helper.c
>> +++ b/drivers/gpu/drm/drm_atomic_helper.c
>> @@ -1741,6 +1741,7 @@ int __drm_atomic_helper_set_config(struct drm_mode_set *set,
>>  	struct drm_crtc_state *crtc_state;
>>  	struct drm_plane_state *primary_state;
>>  	struct drm_crtc *crtc = set->crtc;
>> +	int hdisplay, vdisplay;
>>  	int ret;
>>  
>>  	crtc_state = drm_atomic_get_crtc_state(state, crtc);
>> @@ -1783,19 +1784,21 @@ int __drm_atomic_helper_set_config(struct drm_mode_set *set,
>>  	if (ret != 0)
>>  		return ret;
>>  
>> +	drm_crtc_get_hv_timing(set->mode, &hdisplay, &vdisplay);
>> +
>>  	drm_atomic_set_fb_for_plane(primary_state, set->fb);
>>  	primary_state->crtc_x = 0;
>>  	primary_state->crtc_y = 0;
>> -	primary_state->crtc_h = set->mode->vdisplay;
>> -	primary_state->crtc_w = set->mode->hdisplay;
>> +	primary_state->crtc_h = vdisplay;
>> +	primary_state->crtc_w = hdisplay;
>>  	primary_state->src_x = set->x << 16;
>>  	primary_state->src_y = set->y << 16;
>>  	if (primary_state->rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270))) {
>> -		primary_state->src_h = set->mode->hdisplay << 16;
>> -		primary_state->src_w = set->mode->vdisplay << 16;
>> +		primary_state->src_h = hdisplay << 16;
>> +		primary_state->src_w = vdisplay << 16;
>>  	} else {
>> -		primary_state->src_h = set->mode->vdisplay << 16;
>> -		primary_state->src_w = set->mode->hdisplay << 16;
>> +		primary_state->src_h = vdisplay << 16;
>> +		primary_state->src_w = hdisplay << 16;
>>  	}
>>  
>>  commit:
>> -- 
>> 2.4.10
>> 

-- 
Jani Nikula, Intel Open Source Technology Center


More information about the dri-devel mailing list