[PATCH] drm/amdgpu: For virtual_display feature, the vblank_get_counter hook is always return 0 when there's no hardware frame counter which can be used.

Michel Dänzer michel at daenzer.net
Wed Aug 17 06:32:59 UTC 2016


On 17/08/16 02:47 PM, Deng, Emily wrote:
>> -----Original Message-----
>> From: Michel Dänzer [mailto:michel at daenzer.net]
>> Sent: Wednesday, August 17, 2016 11:50 AM
>> To: Deng, Emily <Emily.Deng at amd.com>
>> Cc: amd-gfx at lists.freedesktop.org
>> Subject: Re: [PATCH] drm/amdgpu: For virtual_display feature, the
>> vblank_get_counter hook is always return 0 when there's no hardware frame
>> counter which can be used.
>>
>> On 16/08/16 07:15 PM, Emily Deng wrote:
>>> Signed-off-by: Emily Deng <Emily.Deng at amd.com>
>>
>> Please change the shortlog to be no longer than ~72 characters. Maybe
>> something like this for the commit log:
>>
>> drm/amdgpu: Hardcode virtual DCE vblank / scanout position return values
>>
>> By hardcoding 0 for the vblank counter and -EINVAL for the scanout position
>> return value, we signal to the core DRM code that there are no hardware
>> counters we can use for these.
>>
> [[EmilyD]] Thanks, will modify this.
>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
>>> b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
>>> index 2ce5f90..85f14a6 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
>>> @@ -55,10 +55,7 @@ static void dce_virtual_vblank_wait(struct
>>> amdgpu_device *adev, int crtc)
>>>
>>>  static u32 dce_virtual_vblank_get_counter(struct amdgpu_device *adev,
>>> int crtc)  {
>>> -	if (crtc >= adev->mode_info.num_crtc)
>>> -		return 0;
>>> -	else
>>> -		return adev->ddev->vblank[crtc].count;
>>> +	return 0;
>>>  }
>>>
>>>  static void dce_virtual_page_flip(struct amdgpu_device *adev, @@
>>> -70,13 +67,10 @@ static void dce_virtual_page_flip(struct
>>> amdgpu_device *adev,  static int dce_virtual_crtc_get_scanoutpos(struct
>> amdgpu_device *adev, int crtc,
>>>  					u32 *vbl, u32 *position)
>>>  {
>>> -	if ((crtc < 0) || (crtc >= adev->mode_info.num_crtc))
>>> -		return -EINVAL;
>>> -
>>>  	*vbl = 0;
>>>  	*position = 0;
>>>
>>> -	return 0;
>>> +	return -EINVAL;
>>>  }
>>
>> Would it be possible to add short-circuits for the virtual display case in
>> amdgpu_get_crtc_scanoutpos and amdgpu_get_vblank_counter_kms, so they
>> don't do any unnecessary work, and remove dce_virtual_vblank_get_counter
>> and dce_virtual_crtc_get_scanoutpos?
>>
> [[EmilyD]] Hi Michel, I am inclined not to add virtual display relevant code in amdgpu other place except that
> must do case. And don't want to break the amdgpu code level.

Okay. With the commit log fixed, the change is

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the amd-gfx mailing list