mbox series

[v4,0/5] MST DSC support in drm-mst

Message ID 20190822135741.12923-1-David.Francis@amd.com (mailing list archive)
Headers show
Series MST DSC support in drm-mst | expand

Message

David Francis Aug. 22, 2019, 1:57 p.m. UTC
Add necessary support for MST DSC.
(Display Stream COmpression over Multi-Stream Transport)

v4: Split patchset and rebase onto drm-tip

David Francis (5):
  drm/dp-mst: Add PBN calculation for DSC modes
  drm/dp-mst: Parse FEC capability on MST ports
  drm/dp-mst: Add MST support to DP DPCD R/W functions
  drm/dp-mst: Fill branch->num_ports
  drm/dp-mst: Add helpers for querying and enabling MST DSC

 drivers/gpu/drm/drm_dp_aux_dev.c      |  12 +-
 drivers/gpu/drm/drm_dp_helper.c       |  10 +-
 drivers/gpu/drm/drm_dp_mst_topology.c | 243 ++++++++++++++++++++++++++
 include/drm/drm_dp_mst_helper.h       |   8 +-
 4 files changed, 260 insertions(+), 13 deletions(-)

Comments

Lyude Paul Aug. 22, 2019, 9:39 p.m. UTC | #1
Still in the process of reviewing this, but one minor change that should be
done on all of the patches (which I didn't notice before, whoops):

s:drm/dp-mst:drm/dp_mst:g

On Thu, 2019-08-22 at 09:57 -0400, David Francis wrote:
> Add necessary support for MST DSC.
> (Display Stream COmpression over Multi-Stream Transport)
> 
> v4: Split patchset and rebase onto drm-tip
> 
> David Francis (5):
>   drm/dp-mst: Add PBN calculation for DSC modes
>   drm/dp-mst: Parse FEC capability on MST ports
>   drm/dp-mst: Add MST support to DP DPCD R/W functions
>   drm/dp-mst: Fill branch->num_ports
>   drm/dp-mst: Add helpers for querying and enabling MST DSC
> 
>  drivers/gpu/drm/drm_dp_aux_dev.c      |  12 +-
>  drivers/gpu/drm/drm_dp_helper.c       |  10 +-
>  drivers/gpu/drm/drm_dp_mst_topology.c | 243 ++++++++++++++++++++++++++
>  include/drm/drm_dp_mst_helper.h       |   8 +-
>  4 files changed, 260 insertions(+), 13 deletions(-)
>
Lyude Paul Aug. 23, 2019, 12:03 a.m. UTC | #2
OK-done reviewing, but there's some stuff missing here. The PBN bandwidth
checks in https://patchwork.freedesktop.org/patch/325604/?series=65423&rev=3
need to be moved into drm_dp_mst_atomic_check(), along with moving amdgpu over to using drm_dp_mst_atomic_check(). Doing so will also give us PBN bandwidth checks in both i915 and nouveau as well, and keeps the bandwidth calculation where it should be.

Additionally, you still need to move the code here into an MST atomic helper
or drm_dp_mst_atomic_check() as well:

https://patchwork.freedesktop.org/patch/325611/?series=65423&rev=3

Unless I'm mistaken, adding each CRTC which has a connector whose PBN requires
recalculation into the atomic state is something every DRM driver is going to
need to do. And, you can do this more easily by adding PBN information into
drm_dp_mst_topology_state. Yes-it's a lot of locks, but since every connector
in an MST topology is sharing the bandwidth on the same link it's kind of
expected. I already know I'm going to have to do basically the same thing with
every driver once I've got the time to actually implement fallback link rate
retraining with MST topologies.

If you need help figuring out how to structure this in a way that works for
all drivers, I'm willing to help and I'm sure Manasi is as well.

On Thu, 2019-08-22 at 09:57 -0400, David Francis wrote:
> Add necessary support for MST DSC.
> (Display Stream COmpression over Multi-Stream Transport)
> 
> v4: Split patchset and rebase onto drm-tip
> 
> David Francis (5):
>   drm/dp-mst: Add PBN calculation for DSC modes
>   drm/dp-mst: Parse FEC capability on MST ports
>   drm/dp-mst: Add MST support to DP DPCD R/W functions
>   drm/dp-mst: Fill branch->num_ports
>   drm/dp-mst: Add helpers for querying and enabling MST DSC
> 
>  drivers/gpu/drm/drm_dp_aux_dev.c      |  12 +-
>  drivers/gpu/drm/drm_dp_helper.c       |  10 +-
>  drivers/gpu/drm/drm_dp_mst_topology.c | 243 ++++++++++++++++++++++++++
>  include/drm/drm_dp_mst_helper.h       |   8 +-
>  4 files changed, 260 insertions(+), 13 deletions(-)
>
David Francis Aug. 23, 2019, 8:24 p.m. UTC | #3
Adding DSC functionality to drm_dp_mst_atomic_check() is a good idea.
However, until amdgpu switches over to that system, I wouldn't be able
to test those changes. Making that switch is on our TODO list, and it would
fix a number of problems with our current MST implementation, but
it's going to be a major rewrite.

MST DSC hardware is already on the market. It would be expedient to
merge the patches we need for Navi support sooner and update
drm_dp_mst_atomic_check when we're able to test it.

David Francis
Dave Airlie Aug. 26, 2019, 7:50 p.m. UTC | #4
On Sat, 24 Aug 2019 at 06:24, Francis, David <David.Francis@amd.com> wrote:
>
> Adding DSC functionality to drm_dp_mst_atomic_check() is a good idea.
> However, until amdgpu switches over to that system, I wouldn't be able
> to test those changes. Making that switch is on our TODO list, and it would
> fix a number of problems with our current MST implementation, but
> it's going to be a major rewrite.
>
> MST DSC hardware is already on the market. It would be expedient to
> merge the patches we need for Navi support sooner and update
> drm_dp_mst_atomic_check when we're able to test it.

Is there any commitment to rewriting it, a timeline or anything?

The problem with this situation is there is always new hardware coming
onto the market, and there is always pressure to support all the
features of that new hardware, and the pressure always comes like this
and being expedient. However I've found that a lot of the time the
required refactor or work is never done, because the time is being
allocated now to the next GPU that is coming on the market, and nobody
ever cares enough to clean up their technical debt.

How come the needs for MST DSC support wasn't identified earlier,
blocked on refactoring of the code to use common code, and then that
task made a higher priority?

I'm sorta inclined to say no we shouldn't be merging any driver
specific code here, because this is the only point we can push
pressure on to refactor the MST implementation, which I guess
otherwise we'll just keep avoiding until Lyude ends up doing it for
you.

Dave.
Harry Wentland Aug. 26, 2019, 9:12 p.m. UTC | #5
On 2019-08-26 3:50 p.m., Dave Airlie wrote:
> On Sat, 24 Aug 2019 at 06:24, Francis, David <David.Francis@amd.com> wrote:
>>
>> Adding DSC functionality to drm_dp_mst_atomic_check() is a good idea.
>> However, until amdgpu switches over to that system, I wouldn't be able
>> to test those changes. Making that switch is on our TODO list, and it would
>> fix a number of problems with our current MST implementation, but
>> it's going to be a major rewrite.
>>
>> MST DSC hardware is already on the market. It would be expedient to
>> merge the patches we need for Navi support sooner and update
>> drm_dp_mst_atomic_check when we're able to test it.
> 
> Is there any commitment to rewriting it, a timeline or anything?
> 
> The problem with this situation is there is always new hardware coming
> onto the market, and there is always pressure to support all the
> features of that new hardware, and the pressure always comes like this
> and being expedient. However I've found that a lot of the time the
> required refactor or work is never done, because the time is being
> allocated now to the next GPU that is coming on the market, and nobody
> ever cares enough to clean up their technical debt.
> 
> How come the needs for MST DSC support wasn't identified earlier,
> blocked on refactoring of the code to use common code, and then that
> task made a higher priority?
> 

drm_dp_mst_atomic_check was introduced by Lyude back in January with
https://patchwork.freedesktop.org/patch/276405/ as part of
https://patchwork.freedesktop.org/series/54031/

At the time Lyude updated i915 and nouveau to use these helpers. amdgpu
wasn't updated.

> I'm sorta inclined to say no we shouldn't be merging any driver
> specific code here, because this is the only point we can push
> pressure on to refactor the MST implementation, which I guess
> otherwise we'll just keep avoiding until Lyude ends up doing it for
> you.
> 

That's fair. I agree that the refactor should be done and I understand
where you're coming from. Since David is heading back to school in less
than a week I was inclined to see if we can push back a little so he can
get his change in. Other than that I don't mind holding off on the merge
unless the refactor is done.

Adding Mikita who'll pick up DSC stuff from David and will iterate on
these patches if necessary and look at the MST refactor.

Thanks for keeping us honest.

Harry

> Dave.
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>