mbox series

[v3,0/3] drm/vkms: Add support for multiple pipes

Message ID 20230425073012.11036-1-marius.vlad@collabora.com (mailing list archive)
Headers show
Series drm/vkms: Add support for multiple pipes | expand

Message

Marius Vlad April 25, 2023, 7:30 a.m. UTC
With multiple pipe available we can perform management of outputs at
a more granular level, such that we're able to turn off or on several
outputs at a time, or combinations that arise from doing that. 

The Weston project use VKMS when running its test suite in CI, and we
have now uses cases which would need to ability to set-up the outputs
DPMS/state individually, rather than globally -- which would affect all
outputs. This an attempt on fixing that by giving the possibility to
create more than one pipe, and thus allowing to run tests that could
exercise code paths in the compositor related to management of outputs.

v3:
  - Apply the series against drm-misc-next (Maíra Canal)
  - Add a lower range check to avoid passing negative values to
  max_pipes (Maíra Canal)

v2:
  - Replace 'outputs' with 'pipes' as to use the proper terminology 
    (Thomas Zimmermann, Maíra Canal)
  - Fixed passing wrong possible_crtc bitmask when initializing the
    write back connector which address kms_writeback failure (Maíra Canal)
  - Add a feat. note about moving overlay planes between CRTCs (Melissa Wen)

Marius Vlad (3):
  vkms: Pass the correct bitmask for possible crtcs
  vkms: Add support for multiple pipes
  Documentation/gpu/vkms.rst: Added a note about plane migration

 Documentation/gpu/vkms.rst            |  5 +++--
 drivers/gpu/drm/vkms/vkms_crtc.c      |  3 +--
 drivers/gpu/drm/vkms/vkms_drv.c       | 31 +++++++++++++++++++++------
 drivers/gpu/drm/vkms/vkms_drv.h       | 12 ++++++++---
 drivers/gpu/drm/vkms/vkms_output.c    |  7 +++---
 drivers/gpu/drm/vkms/vkms_writeback.c | 24 ++++++++++-----------
 6 files changed, 53 insertions(+), 29 deletions(-)

Comments

Brandon Ross Pollack April 26, 2023, 2:06 a.m. UTC | #1
We're doing/planning on doing similar or related work here at chromium.

https://patchwork.kernel.org/project/dri-devel/list/?series=662676&submitter=&state=&q=&delegate=&archive=both

Here's the stuff we have now (we're currently rebasing and touching it up,
myself and @Yi Xie <yixie@google.com> will be taking over this work.

Our plans are to add configFS changes and DRI VKMS changes to be able to
add and remove virtual displays at runtime (among other things needed for
our own testing purposes for our Exo wayland implementation).

We're still learning how this all works and comes together, but it is worth
letting you know "us too"

We can chat more and see where we overlap and can learn from each other :)

On Tue, Apr 25, 2023 at 4:30 PM Marius Vlad <marius.vlad@collabora.com>
wrote:

> With multiple pipe available we can perform management of outputs at
> a more granular level, such that we're able to turn off or on several
> outputs at a time, or combinations that arise from doing that.
>
> The Weston project use VKMS when running its test suite in CI, and we
> have now uses cases which would need to ability to set-up the outputs
> DPMS/state individually, rather than globally -- which would affect all
> outputs. This an attempt on fixing that by giving the possibility to
> create more than one pipe, and thus allowing to run tests that could
> exercise code paths in the compositor related to management of outputs.
>
> v3:
>   - Apply the series against drm-misc-next (Maíra Canal)
>   - Add a lower range check to avoid passing negative values to
>   max_pipes (Maíra Canal)
>
> v2:
>   - Replace 'outputs' with 'pipes' as to use the proper terminology
>     (Thomas Zimmermann, Maíra Canal)
>   - Fixed passing wrong possible_crtc bitmask when initializing the
>     write back connector which address kms_writeback failure (Maíra Canal)
>   - Add a feat. note about moving overlay planes between CRTCs (Melissa
> Wen)
>
> Marius Vlad (3):
>   vkms: Pass the correct bitmask for possible crtcs
>   vkms: Add support for multiple pipes
>   Documentation/gpu/vkms.rst: Added a note about plane migration
>
>  Documentation/gpu/vkms.rst            |  5 +++--
>  drivers/gpu/drm/vkms/vkms_crtc.c      |  3 +--
>  drivers/gpu/drm/vkms/vkms_drv.c       | 31 +++++++++++++++++++++------
>  drivers/gpu/drm/vkms/vkms_drv.h       | 12 ++++++++---
>  drivers/gpu/drm/vkms/vkms_output.c    |  7 +++---
>  drivers/gpu/drm/vkms/vkms_writeback.c | 24 ++++++++++-----------
>  6 files changed, 53 insertions(+), 29 deletions(-)
>
> --
> 2.39.2
>
>
Marius Vlad April 26, 2023, 12:54 p.m. UTC | #2
Hi Brandon, Xie,

Thanks for reaching out, and for the heads-up. I need to take a closer 
look, but by glancing over it, using configFS would be really awesome. 
Think we could really benefit from having that in our CI and being able 
to customize the entire pipeline. I'm totally for that.

It looks like it requires some infra work so I guess landing that might 
require quite a bit of time. Not sure if there are recent updates for it.

My changes are quite trivial and much more focused on just having 
multiple virtual displays, so IDK, I've submitted a version that seems 
to work, so I guess others should or would decide if we should drop mine 
and focus on the configFS series, or we should go with configFS as a 
follow-up. Would have liked to get something in the tree so we can at 
least have something to work with.

Thoughts on the matter on how should we go about it?

On 4/26/23 05:06, Brandon Ross Pollack wrote:
> We're doing/planning on doing similar or related work here at chromium.
> 
> https://patchwork.kernel.org/project/dri-devel/list/?series=662676&submitter=&state=&q=&delegate=&archive=both <https://patchwork.kernel.org/project/dri-devel/list/?series=662676&submitter=&state=&q=&delegate=&archive=both>
> 
> Here's the stuff we have now (we're currently rebasing and touching it 
> up, myself and @Yi Xie <mailto:yixie@google.com> will be taking over 
> this work.
> 
> Our plans are to add configFS changes and DRI VKMS changes to be able to 
> add and remove virtual displays at runtime (among other things needed 
> for our own testing purposes for our Exo wayland implementation).
> 
> We're still learning how this all works and comes together, but it is 
> worth letting you know "us too"
> 
> We can chat more and see where we overlap and can learn from each other :)
> 
> On Tue, Apr 25, 2023 at 4:30 PM Marius Vlad <marius.vlad@collabora.com 
> <mailto:marius.vlad@collabora.com>> wrote:
> 
>     With multiple pipe available we can perform management of outputs at
>     a more granular level, such that we're able to turn off or on several
>     outputs at a time, or combinations that arise from doing that.
> 
>     The Weston project use VKMS when running its test suite in CI, and we
>     have now uses cases which would need to ability to set-up the outputs
>     DPMS/state individually, rather than globally -- which would affect all
>     outputs. This an attempt on fixing that by giving the possibility to
>     create more than one pipe, and thus allowing to run tests that could
>     exercise code paths in the compositor related to management of outputs.
> 
>     v3:
>        - Apply the series against drm-misc-next (Maíra Canal)
>        - Add a lower range check to avoid passing negative values to
>        max_pipes (Maíra Canal)
> 
>     v2:
>        - Replace 'outputs' with 'pipes' as to use the proper terminology
>          (Thomas Zimmermann, Maíra Canal)
>        - Fixed passing wrong possible_crtc bitmask when initializing the
>          write back connector which address kms_writeback failure (Maíra
>     Canal)
>        - Add a feat. note about moving overlay planes between CRTCs
>     (Melissa Wen)
> 
>     Marius Vlad (3):
>        vkms: Pass the correct bitmask for possible crtcs
>        vkms: Add support for multiple pipes
>        Documentation/gpu/vkms.rst: Added a note about plane migration
> 
>       Documentation/gpu/vkms.rst            |  5 +++--
>       drivers/gpu/drm/vkms/vkms_crtc.c      |  3 +--
>       drivers/gpu/drm/vkms/vkms_drv.c       | 31 +++++++++++++++++++++------
>       drivers/gpu/drm/vkms/vkms_drv.h       | 12 ++++++++---
>       drivers/gpu/drm/vkms/vkms_output.c    |  7 +++---
>       drivers/gpu/drm/vkms/vkms_writeback.c | 24 ++++++++++-----------
>       6 files changed, 53 insertions(+), 29 deletions(-)
> 
>     -- 
>     2.39.2
>
Brandon Ross Pollack April 28, 2023, 2:51 a.m. UTC | #3
I'm adding the original offer of those changes.  We talked recently
and they have the intent to push forward and merge them.  I'm still
getting up to speed a bit, but I will probably have a stronger opinion
by early next week.


On Wed, Apr 26, 2023 at 9:54 PM Marius Vlad <marius.vlad@collabora.com> wrote:
>
> Hi Brandon, Xie,
>
> Thanks for reaching out, and for the heads-up. I need to take a closer
> look, but by glancing over it, using configFS would be really awesome.
> Think we could really benefit from having that in our CI and being able
> to customize the entire pipeline. I'm totally for that.
>
> It looks like it requires some infra work so I guess landing that might
> require quite a bit of time. Not sure if there are recent updates for it.
>
> My changes are quite trivial and much more focused on just having
> multiple virtual displays, so IDK, I've submitted a version that seems
> to work, so I guess others should or would decide if we should drop mine
> and focus on the configFS series, or we should go with configFS as a
> follow-up. Would have liked to get something in the tree so we can at
> least have something to work with.
>
> Thoughts on the matter on how should we go about it?
>
> On 4/26/23 05:06, Brandon Ross Pollack wrote:
> > We're doing/planning on doing similar or related work here at chromium.
> >
> > https://patchwork.kernel.org/project/dri-devel/list/?series=662676&submitter=&state=&q=&delegate=&archive=both <https://patchwork.kernel.org/project/dri-devel/list/?series=662676&submitter=&state=&q=&delegate=&archive=both>
> >
> > Here's the stuff we have now (we're currently rebasing and touching it
> > up, myself and @Yi Xie <mailto:yixie@google.com> will be taking over
> > this work.
> >
> > Our plans are to add configFS changes and DRI VKMS changes to be able to
> > add and remove virtual displays at runtime (among other things needed
> > for our own testing purposes for our Exo wayland implementation).
> >
> > We're still learning how this all works and comes together, but it is
> > worth letting you know "us too"
> >
> > We can chat more and see where we overlap and can learn from each other :)
> >
> > On Tue, Apr 25, 2023 at 4:30 PM Marius Vlad <marius.vlad@collabora.com
> > <mailto:marius.vlad@collabora.com>> wrote:
> >
> >     With multiple pipe available we can perform management of outputs at
> >     a more granular level, such that we're able to turn off or on several
> >     outputs at a time, or combinations that arise from doing that.
> >
> >     The Weston project use VKMS when running its test suite in CI, and we
> >     have now uses cases which would need to ability to set-up the outputs
> >     DPMS/state individually, rather than globally -- which would affect all
> >     outputs. This an attempt on fixing that by giving the possibility to
> >     create more than one pipe, and thus allowing to run tests that could
> >     exercise code paths in the compositor related to management of outputs.
> >
> >     v3:
> >        - Apply the series against drm-misc-next (Maíra Canal)
> >        - Add a lower range check to avoid passing negative values to
> >        max_pipes (Maíra Canal)
> >
> >     v2:
> >        - Replace 'outputs' with 'pipes' as to use the proper terminology
> >          (Thomas Zimmermann, Maíra Canal)
> >        - Fixed passing wrong possible_crtc bitmask when initializing the
> >          write back connector which address kms_writeback failure (Maíra
> >     Canal)
> >        - Add a feat. note about moving overlay planes between CRTCs
> >     (Melissa Wen)
> >
> >     Marius Vlad (3):
> >        vkms: Pass the correct bitmask for possible crtcs
> >        vkms: Add support for multiple pipes
> >        Documentation/gpu/vkms.rst: Added a note about plane migration
> >
> >       Documentation/gpu/vkms.rst            |  5 +++--
> >       drivers/gpu/drm/vkms/vkms_crtc.c      |  3 +--
> >       drivers/gpu/drm/vkms/vkms_drv.c       | 31 +++++++++++++++++++++------
> >       drivers/gpu/drm/vkms/vkms_drv.h       | 12 ++++++++---
> >       drivers/gpu/drm/vkms/vkms_output.c    |  7 +++---
> >       drivers/gpu/drm/vkms/vkms_writeback.c | 24 ++++++++++-----------
> >       6 files changed, 53 insertions(+), 29 deletions(-)
> >
> >     --
> >     2.39.2
> >
Jim Shargo April 29, 2023, 3:10 a.m. UTC | #4
Hey, all!

I am so excited to see other folks excited about extending VKMS. I
think it's a great project and has outstanding potential!

Life stuff made me AFK for the last few months, but I'm back now and
I've been wrapping up the work on the patchset Brandon linked.

The current WIP patches are here:
https://gitlab.freedesktop.org/jshargo/compositor-kernel-explorations/-/merge_requests/4

They even come with matching IGT tests!
https://gitlab.freedesktop.org/jshargo/igt-gpu-tools/-/commit/8375cf128f0811d54ecb4a0b5cf044942ffc67b9

I'm hoping to send them out again soon, hopefully next week.

As a suggestion for how to move forward: the first three patches are
little refactors that are separable from the core ConfigFS ones (which
might have more back-and-forth design iterations). With those three,
the param you're adding should be easy to put on top. I can try to get
those out sooner for review.

What do you think?


On Thu, Apr 27, 2023 at 10:51 PM Brandon Ross Pollack
<brpol@chromium.org> wrote:
>
> I'm adding the original offer of those changes.  We talked recently
> and they have the intent to push forward and merge them.  I'm still
> getting up to speed a bit, but I will probably have a stronger opinion
> by early next week.
>
>
> On Wed, Apr 26, 2023 at 9:54 PM Marius Vlad <marius.vlad@collabora.com> wrote:
> >
> > Hi Brandon, Xie,
> >
> > Thanks for reaching out, and for the heads-up. I need to take a closer
> > look, but by glancing over it, using configFS would be really awesome.
> > Think we could really benefit from having that in our CI and being able
> > to customize the entire pipeline. I'm totally for that.
> >
> > It looks like it requires some infra work so I guess landing that might
> > require quite a bit of time. Not sure if there are recent updates for it.
> >
> > My changes are quite trivial and much more focused on just having
> > multiple virtual displays, so IDK, I've submitted a version that seems
> > to work, so I guess others should or would decide if we should drop mine
> > and focus on the configFS series, or we should go with configFS as a
> > follow-up. Would have liked to get something in the tree so we can at
> > least have something to work with.
> >
> > Thoughts on the matter on how should we go about it?
> >
> > On 4/26/23 05:06, Brandon Ross Pollack wrote:
> > > We're doing/planning on doing similar or related work here at chromium.
> > >
> > > https://patchwork.kernel.org/project/dri-devel/list/?series=662676&submitter=&state=&q=&delegate=&archive=both <https://patchwork.kernel.org/project/dri-devel/list/?series=662676&submitter=&state=&q=&delegate=&archive=both>
> > >
> > > Here's the stuff we have now (we're currently rebasing and touching it
> > > up, myself and @Yi Xie <mailto:yixie@google.com> will be taking over
> > > this work.
> > >
> > > Our plans are to add configFS changes and DRI VKMS changes to be able to
> > > add and remove virtual displays at runtime (among other things needed
> > > for our own testing purposes for our Exo wayland implementation).
> > >
> > > We're still learning how this all works and comes together, but it is
> > > worth letting you know "us too"
> > >
> > > We can chat more and see where we overlap and can learn from each other :)
> > >
> > > On Tue, Apr 25, 2023 at 4:30 PM Marius Vlad <marius.vlad@collabora.com
> > > <mailto:marius.vlad@collabora.com>> wrote:
> > >
> > >     With multiple pipe available we can perform management of outputs at
> > >     a more granular level, such that we're able to turn off or on several
> > >     outputs at a time, or combinations that arise from doing that.
> > >
> > >     The Weston project use VKMS when running its test suite in CI, and we
> > >     have now uses cases which would need to ability to set-up the outputs
> > >     DPMS/state individually, rather than globally -- which would affect all
> > >     outputs. This an attempt on fixing that by giving the possibility to
> > >     create more than one pipe, and thus allowing to run tests that could
> > >     exercise code paths in the compositor related to management of outputs.
> > >
> > >     v3:
> > >        - Apply the series against drm-misc-next (Maíra Canal)
> > >        - Add a lower range check to avoid passing negative values to
> > >        max_pipes (Maíra Canal)
> > >
> > >     v2:
> > >        - Replace 'outputs' with 'pipes' as to use the proper terminology
> > >          (Thomas Zimmermann, Maíra Canal)
> > >        - Fixed passing wrong possible_crtc bitmask when initializing the
> > >          write back connector which address kms_writeback failure (Maíra
> > >     Canal)
> > >        - Add a feat. note about moving overlay planes between CRTCs
> > >     (Melissa Wen)
> > >
> > >     Marius Vlad (3):
> > >        vkms: Pass the correct bitmask for possible crtcs
> > >        vkms: Add support for multiple pipes
> > >        Documentation/gpu/vkms.rst: Added a note about plane migration
> > >
> > >       Documentation/gpu/vkms.rst            |  5 +++--
> > >       drivers/gpu/drm/vkms/vkms_crtc.c      |  3 +--
> > >       drivers/gpu/drm/vkms/vkms_drv.c       | 31 +++++++++++++++++++++------
> > >       drivers/gpu/drm/vkms/vkms_drv.h       | 12 ++++++++---
> > >       drivers/gpu/drm/vkms/vkms_output.c    |  7 +++---
> > >       drivers/gpu/drm/vkms/vkms_writeback.c | 24 ++++++++++-----------
> > >       6 files changed, 53 insertions(+), 29 deletions(-)
> > >
> > >     --
> > >     2.39.2
> > >
Brandon Ross Pollack May 8, 2023, 12:26 a.m. UTC | #5
Sorry for the late reply on my end (last week was a holiday week in Japan).

I'm just getting to looking through these closer now, I spent much of my
vacation reading about kernel/drivers and things make much more sense now
to me so I'll have some notes (hopefully) as well shortly.


On Sat, Apr 29, 2023 at 12:10 PM Jim Shargo <jshargo@chromium.org> wrote:

> Hey, all!
>
> I am so excited to see other folks excited about extending VKMS. I
> think it's a great project and has outstanding potential!
>
> Life stuff made me AFK for the last few months, but I'm back now and
> I've been wrapping up the work on the patchset Brandon linked.
>
> The current WIP patches are here:
>
> https://gitlab.freedesktop.org/jshargo/compositor-kernel-explorations/-/merge_requests/4
>
> They even come with matching IGT tests!
>
> https://gitlab.freedesktop.org/jshargo/igt-gpu-tools/-/commit/8375cf128f0811d54ecb4a0b5cf044942ffc67b9
>
> I'm hoping to send them out again soon, hopefully next week.
>
> As a suggestion for how to move forward: the first three patches are
> little refactors that are separable from the core ConfigFS ones (which
> might have more back-and-forth design iterations). With those three,
> the param you're adding should be easy to put on top. I can try to get
> those out sooner for review.
>
> What do you think?
>
>
> On Thu, Apr 27, 2023 at 10:51 PM Brandon Ross Pollack
> <brpol@chromium.org> wrote:
> >
> > I'm adding the original offer of those changes.  We talked recently
> > and they have the intent to push forward and merge them.  I'm still
> > getting up to speed a bit, but I will probably have a stronger opinion
> > by early next week.
> >
> >
> > On Wed, Apr 26, 2023 at 9:54 PM Marius Vlad <marius.vlad@collabora.com>
> wrote:
> > >
> > > Hi Brandon, Xie,
> > >
> > > Thanks for reaching out, and for the heads-up. I need to take a closer
> > > look, but by glancing over it, using configFS would be really awesome.
> > > Think we could really benefit from having that in our CI and being able
> > > to customize the entire pipeline. I'm totally for that.
> > >
> > > It looks like it requires some infra work so I guess landing that might
> > > require quite a bit of time. Not sure if there are recent updates for
> it.
> > >
> > > My changes are quite trivial and much more focused on just having
> > > multiple virtual displays, so IDK, I've submitted a version that seems
> > > to work, so I guess others should or would decide if we should drop
> mine
> > > and focus on the configFS series, or we should go with configFS as a
> > > follow-up. Would have liked to get something in the tree so we can at
> > > least have something to work with.
> > >
> > > Thoughts on the matter on how should we go about it?
> > >
> > > On 4/26/23 05:06, Brandon Ross Pollack wrote:
> > > > We're doing/planning on doing similar or related work here at
> chromium.
> > > >
> > > >
> https://patchwork.kernel.org/project/dri-devel/list/?series=662676&submitter=&state=&q=&delegate=&archive=both
> <
> https://patchwork.kernel.org/project/dri-devel/list/?series=662676&submitter=&state=&q=&delegate=&archive=both
> >
> > > >
> > > > Here's the stuff we have now (we're currently rebasing and touching
> it
> > > > up, myself and @Yi Xie <mailto:yixie@google.com> will be taking over
> > > > this work.
> > > >
> > > > Our plans are to add configFS changes and DRI VKMS changes to be
> able to
> > > > add and remove virtual displays at runtime (among other things needed
> > > > for our own testing purposes for our Exo wayland implementation).
> > > >
> > > > We're still learning how this all works and comes together, but it is
> > > > worth letting you know "us too"
> > > >
> > > > We can chat more and see where we overlap and can learn from each
> other :)
> > > >
> > > > On Tue, Apr 25, 2023 at 4:30 PM Marius Vlad <
> marius.vlad@collabora.com
> > > > <mailto:marius.vlad@collabora.com>> wrote:
> > > >
> > > >     With multiple pipe available we can perform management of
> outputs at
> > > >     a more granular level, such that we're able to turn off or on
> several
> > > >     outputs at a time, or combinations that arise from doing that.
> > > >
> > > >     The Weston project use VKMS when running its test suite in CI,
> and we
> > > >     have now uses cases which would need to ability to set-up the
> outputs
> > > >     DPMS/state individually, rather than globally -- which would
> affect all
> > > >     outputs. This an attempt on fixing that by giving the
> possibility to
> > > >     create more than one pipe, and thus allowing to run tests that
> could
> > > >     exercise code paths in the compositor related to management of
> outputs.
> > > >
> > > >     v3:
> > > >        - Apply the series against drm-misc-next (Maíra Canal)
> > > >        - Add a lower range check to avoid passing negative values to
> > > >        max_pipes (Maíra Canal)
> > > >
> > > >     v2:
> > > >        - Replace 'outputs' with 'pipes' as to use the proper
> terminology
> > > >          (Thomas Zimmermann, Maíra Canal)
> > > >        - Fixed passing wrong possible_crtc bitmask when initializing
> the
> > > >          write back connector which address kms_writeback failure
> (Maíra
> > > >     Canal)
> > > >        - Add a feat. note about moving overlay planes between CRTCs
> > > >     (Melissa Wen)
> > > >
> > > >     Marius Vlad (3):
> > > >        vkms: Pass the correct bitmask for possible crtcs
> > > >        vkms: Add support for multiple pipes
> > > >        Documentation/gpu/vkms.rst: Added a note about plane migration
> > > >
> > > >       Documentation/gpu/vkms.rst            |  5 +++--
> > > >       drivers/gpu/drm/vkms/vkms_crtc.c      |  3 +--
> > > >       drivers/gpu/drm/vkms/vkms_drv.c       | 31
> +++++++++++++++++++++------
> > > >       drivers/gpu/drm/vkms/vkms_drv.h       | 12 ++++++++---
> > > >       drivers/gpu/drm/vkms/vkms_output.c    |  7 +++---
> > > >       drivers/gpu/drm/vkms/vkms_writeback.c | 24
> ++++++++++-----------
> > > >       6 files changed, 53 insertions(+), 29 deletions(-)
> > > >
> > > >     --
> > > >     2.39.2
> > > >
>