Message ID | 20201006223006.gu55pjtuaigkh6il@smtp.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] drm/vkms: update todo | expand |
On 10/06, Melissa Wen wrote: > Drop issues already resolved in vkms: > > - CRC API Improvements to [1] add igt test to check extreme alpha values > and [2] alpha blending; > - [3] prime buffer sharing; > - [4] writeback support; > > On the other hand, we also found or thought about other improvements since > the last update of this document: > > - better support for IGT tests > - improvements to writeback support > - syzbot report > > Finally, we reorder items by the assumed complexity. > > [1] https://patchwork.freedesktop.org/series/55944/ > [2] https://patchwork.freedesktop.org/series/80823/ > [3] https://patchwork.freedesktop.org/series/63212/ > [4] https://patchwork.freedesktop.org/series/81177/ > > v2: > - Link to syzbot dashboard > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com> > Cc: Haneen Mohammed <hamohammed.sa@gmail.com> > > Signed-off-by: Melissa Wen <melissa.srw@gmail.com> > Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> > --- > Documentation/gpu/vkms.rst | 99 ++++++++++++++++++++------------------ > 1 file changed, 53 insertions(+), 46 deletions(-) > > diff --git a/Documentation/gpu/vkms.rst b/Documentation/gpu/vkms.rst > index 61586fc861bb..50b30dea0ba8 100644 > --- a/Documentation/gpu/vkms.rst > +++ b/Documentation/gpu/vkms.rst > @@ -10,36 +10,24 @@ > TODO > ==== > > -CRC API Improvements > --------------------- > - > -- Optimize CRC computation ``compute_crc()`` and plane blending ``blend()`` > - > -- Use the alpha value to blend vaddr_src with vaddr_dst instead of > - overwriting it in ``blend()``. > - > -- Add igt test to check cleared alpha value for XRGB plane format. > - > -- Add igt test to check extreme alpha values i.e. fully opaque and fully > - transparent (intermediate values are affected by hw-specific rounding modes). > - > -Runtime Configuration > ---------------------- > - > -We want to be able to reconfigure vkms instance without having to reload the > -module. Use/Test-cases: > - > -- Hotplug/hotremove connectors on the fly (to be able to test DP MST handling of > - compositors). > +If you want to do any of the items listed below, please share your interest > +with one of the VKMS maintainers. Hi Melissa, How about change "one of the VKMS maintainers" to "with VKMS maintainers". With the above change, everything else LGTM. Reviewed-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com> > -- Configure planes/crtcs/connectors (we'd need some code to have more than 1 of > - them first). > +IGT better support > +------------------ > > -- Change output configuration: Plug/unplug screens, change EDID, allow changing > - the refresh rate. > +- Investigate: (1) test cases on kms_plane that are failing due to timeout on > + capturing CRC; (2) when running kms_flip test cases in sequence, some > + successful individual test cases are failing randomly. > > -The currently proposed solution is to expose vkms configuration through > -configfs. All existing module options should be supported through configfs too. > +- VKMS already has support for vblanks simulated via hrtimers, which can be > + tested with kms_flip test; in some way, we can say that VKMS already mimics > + the real hardware vblank. However, we also have virtual hardware that does > + not support vblank interrupt and completes page_flip events right away; in > + this case, compositor developers may end up creating a busy loop on virtual > + hardware. It would be useful to support Virtual Hardware behavior in VKMS > + because this can help compositor developers to test their features in > + multiple scenarios. > > Add Plane Features > ------------------ > @@ -55,34 +43,50 @@ There's lots of plane features we could add support for: > - Additional buffer formats, especially YUV formats for video like NV12. > Low/high bpp RGB formats would also be interesting. > > -- Async updates (currently only possible on cursor plane using the legacy cursor > - api). > +- Async updates (currently only possible on cursor plane using the legacy > + cursor api). > + > +For all of these, we also want to review the igt test coverage and make sure > +all relevant igt testcases work on vkms. > + > +Prime Buffer Sharing > +-------------------- > > -For all of these, we also want to review the igt test coverage and make sure all > -relevant igt testcases work on vkms. > +- Syzbot report - WARNING in vkms_gem_free_object: > + https://syzkaller.appspot.com/bug?extid=e7ad70d406e74d8fc9d0 > + > +Runtime Configuration > +--------------------- > + > +We want to be able to reconfigure vkms instance without having to reload the > +module. Use/Test-cases: > + > +- Hotplug/hotremove connectors on the fly (to be able to test DP MST handling > + of compositors). > + > +- Configure planes/crtcs/connectors (we'd need some code to have more than 1 of > + them first). > + > +- Change output configuration: Plug/unplug screens, change EDID, allow changing > + the refresh rate. > + > +The currently proposed solution is to expose vkms configuration through > +configfs. All existing module options should be supported through configfs > +too. > > Writeback support > ----------------- > > -Currently vkms only computes a CRC for each frame. Once we have additional plane > -features, we could write back the entire composited frame, and expose it as: > +- The writeback and CRC capture operations share the use of composer_enabled > + boolean to ensure vblanks. Probably, when these operations work together, > + composer_enabled needs to refcounting the composer state to proper work. > > -- Writeback connector. This is useful for testing compositors if you don't have > - hardware with writeback support. > +- Add support for cloned writeback outputs and related test cases using a > + cloned output in the IGT kms_writeback. > > - As a v4l device. This is useful for debugging compositors on special vkms > configurations, so that developers see what's really going on. > > -Prime Buffer Sharing > --------------------- > - > -We already have vgem, which is a gem driver for testing rendering, similar to > -how vkms is for testing the modeset side. Adding buffer sharing support to vkms > -allows us to test them together, to test synchronization and lots of other > -features. Also, this allows compositors to test whether they work correctly on > -SoC chips, where the display and rendering is very often split between 2 > -drivers. > - > Output Features > --------------- > > @@ -93,7 +97,10 @@ Output Features > - Add support for link status, so that compositors can validate their runtime > fallbacks when e.g. a Display Port link goes bad. > > -- All the hotplug handling describe under "Runtime Configuration". > +CRC API Improvements > +-------------------- > + > +- Optimize CRC computation ``compute_crc()`` and plane blending ``blend()`` > > Atomic Check using eBPF > ----------------------- > -- > 2.28.0 >
diff --git a/Documentation/gpu/vkms.rst b/Documentation/gpu/vkms.rst index 61586fc861bb..50b30dea0ba8 100644 --- a/Documentation/gpu/vkms.rst +++ b/Documentation/gpu/vkms.rst @@ -10,36 +10,24 @@ TODO ==== -CRC API Improvements --------------------- - -- Optimize CRC computation ``compute_crc()`` and plane blending ``blend()`` - -- Use the alpha value to blend vaddr_src with vaddr_dst instead of - overwriting it in ``blend()``. - -- Add igt test to check cleared alpha value for XRGB plane format. - -- Add igt test to check extreme alpha values i.e. fully opaque and fully - transparent (intermediate values are affected by hw-specific rounding modes). - -Runtime Configuration ---------------------- - -We want to be able to reconfigure vkms instance without having to reload the -module. Use/Test-cases: - -- Hotplug/hotremove connectors on the fly (to be able to test DP MST handling of - compositors). +If you want to do any of the items listed below, please share your interest +with one of the VKMS maintainers. -- Configure planes/crtcs/connectors (we'd need some code to have more than 1 of - them first). +IGT better support +------------------ -- Change output configuration: Plug/unplug screens, change EDID, allow changing - the refresh rate. +- Investigate: (1) test cases on kms_plane that are failing due to timeout on + capturing CRC; (2) when running kms_flip test cases in sequence, some + successful individual test cases are failing randomly. -The currently proposed solution is to expose vkms configuration through -configfs. All existing module options should be supported through configfs too. +- VKMS already has support for vblanks simulated via hrtimers, which can be + tested with kms_flip test; in some way, we can say that VKMS already mimics + the real hardware vblank. However, we also have virtual hardware that does + not support vblank interrupt and completes page_flip events right away; in + this case, compositor developers may end up creating a busy loop on virtual + hardware. It would be useful to support Virtual Hardware behavior in VKMS + because this can help compositor developers to test their features in + multiple scenarios. Add Plane Features ------------------ @@ -55,34 +43,50 @@ There's lots of plane features we could add support for: - Additional buffer formats, especially YUV formats for video like NV12. Low/high bpp RGB formats would also be interesting. -- Async updates (currently only possible on cursor plane using the legacy cursor - api). +- Async updates (currently only possible on cursor plane using the legacy + cursor api). + +For all of these, we also want to review the igt test coverage and make sure +all relevant igt testcases work on vkms. + +Prime Buffer Sharing +-------------------- -For all of these, we also want to review the igt test coverage and make sure all -relevant igt testcases work on vkms. +- Syzbot report - WARNING in vkms_gem_free_object: + https://syzkaller.appspot.com/bug?extid=e7ad70d406e74d8fc9d0 + +Runtime Configuration +--------------------- + +We want to be able to reconfigure vkms instance without having to reload the +module. Use/Test-cases: + +- Hotplug/hotremove connectors on the fly (to be able to test DP MST handling + of compositors). + +- Configure planes/crtcs/connectors (we'd need some code to have more than 1 of + them first). + +- Change output configuration: Plug/unplug screens, change EDID, allow changing + the refresh rate. + +The currently proposed solution is to expose vkms configuration through +configfs. All existing module options should be supported through configfs +too. Writeback support ----------------- -Currently vkms only computes a CRC for each frame. Once we have additional plane -features, we could write back the entire composited frame, and expose it as: +- The writeback and CRC capture operations share the use of composer_enabled + boolean to ensure vblanks. Probably, when these operations work together, + composer_enabled needs to refcounting the composer state to proper work. -- Writeback connector. This is useful for testing compositors if you don't have - hardware with writeback support. +- Add support for cloned writeback outputs and related test cases using a + cloned output in the IGT kms_writeback. - As a v4l device. This is useful for debugging compositors on special vkms configurations, so that developers see what's really going on. -Prime Buffer Sharing --------------------- - -We already have vgem, which is a gem driver for testing rendering, similar to -how vkms is for testing the modeset side. Adding buffer sharing support to vkms -allows us to test them together, to test synchronization and lots of other -features. Also, this allows compositors to test whether they work correctly on -SoC chips, where the display and rendering is very often split between 2 -drivers. - Output Features --------------- @@ -93,7 +97,10 @@ Output Features - Add support for link status, so that compositors can validate their runtime fallbacks when e.g. a Display Port link goes bad. -- All the hotplug handling describe under "Runtime Configuration". +CRC API Improvements +-------------------- + +- Optimize CRC computation ``compute_crc()`` and plane blending ``blend()`` Atomic Check using eBPF -----------------------