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:
+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