[PATCH 4/4] drm/amd/display: Update HW_DONE_DEADLINE property value on modeset
Harry Wentland
harry.wentland at amd.com
Tue Aug 5 16:28:44 UTC 2025
On 2025-08-04 04:20, Michel Dänzer wrote:
> On 31.07.25 22:51, Harry Wentland wrote:
>> Thanks for the series. It makes sense to me.
> I'm glad to hear it, thanks for taking a look.
>
> May I take this as R-b?
Yes, please do. :)
Harry
>
>
>>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>>> index 0b8ac9edc070..e78249b55345 100644
>>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>>> @@ -10021,6 +10021,21 @@ static void dm_set_writeback(struct amdgpu_display_manager *dm,
>>> drm_writeback_queue_job(wb_conn, new_con_state);
>>> }
>>>
>>> +static void
>>> +update_hw_done_deadline(struct dm_crtc_state *dm_new_crtc_state)
>>> +{
>>> + struct dc_stream_state *stream = dm_new_crtc_state->stream;
>>> + struct dc_crtc_timing *timing = &stream->timing;
>>> + struct drm_crtc *crtc = dm_new_crtc_state->base.crtc;
>>> + uint32_t deadline_lines, deadline_us;
>>> +
>>> + /* XXX: My guess, AMD display team to the rescue! */
>>> + deadline_lines = timing->v_total - timing->v_addressable - timing->v_front_porch;
>> This works on DCE. On DCN we'll need to take the offset into account.
>> This diff on top of your changesshould do it, but it's not tested.
>> The dc_stream changes probably fit in their own patch.
> Thanks, I'll incorporate it.
>
>
>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> index 629fd21a611f..314074527216 100644
>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> @@ -10082,11 +10082,19 @@ update_hw_done_deadline(struct dm_crtc_state *dm_new_crtc_state)
>> struct dc_crtc_timing *timing = &stream->timing;
>> struct drm_crtc *crtc = dm_new_crtc_state->base.crtc;
>> uint32_t deadline_lines, deadline_us;
>> + int vupdate_offset = dc_stream_get_vupdate_offset_from_vsync(stream);
>> +
>> + /* note:
>> + * vupdate_offset is non-existant on DCE and function will return 0
>> + * vupdate_offset could be positive or negative on DCN
>> + * vupdate_offset depends on timing and HW bandwidth requirements
>> + */
>> + deadline_lines = timing->v_total - timing->v_addressable -
>> + timing->v_front_porch - vupdate_offset;
> Hmm, if it depends on bandwidth, we'll need to recalculate it for all CRTCs after a modeset for any of them, right?
>
>
More information about the amd-gfx
mailing list