[PATCH i-g-t v6 00/12] benchmarks/kms_fb_stress: benchmark formats

Arthur Grillo arthurgrillo at riseup.net
Fri Sep 13 00:39:24 UTC 2024


After some discussion[1], I changed how to tackle the problem. (2x)

With the upcoming addition of YUV format to VKMS[2] it would be great to
test the their performance. So, create a test for the primary plane
formats and a test for the writeback formats

- PATCH #1: A fix from a breaking change introduced on commit
  dc2d7fb4f978 ("lib/igt_kms: move setting DRM_CLIENT_CAP_WRITEBACK_CONNECTORS to kms_writeback")
- PATCH #2: Just a non-related assert that I found needed while developing
- PATCH #3: Log the KMS structure
- PATCH #4: Moving code, should be noop
- PATCH #5, #6 & #7 : Fix a couple of bugs found while developing
- PATCH #8 Move code to out of a loop (noop)
- PATCH #9: Add a enable switch for every plane. Preparation for the
  next couple commits
- PATCH #10: Add benchmark that tests primary plane formats performance
- PATCH #11: Add benchmark that tests writeback formats performance
- PATCH #12: Add new YUV formats to IGT that will be supported by VKMS

[1]: https://lore.kernel.org/all/6979cd2e-2b00-4dc4-8e41-66b435cf7ea8@riseup.net/
[2]: https://lore.kernel.org/all/20240304-yuv-v4-11-76beac8e9793@bootlin.com/

Signed-off-by: Arthur Grillo <arthurgrillo at riseup.net>
---
Changes in v6:
- Set DRM_CLIENT_CAP_WRITEBACK_CONNECTORS before igt_require, needed
  after commit dc2d7fb4f978 ("lib/igt_kms: move setting
  DRM_CLIENT_CAP_WRITEBACK_CONNECTORS to kms_writeback")
- Split test into a primary plane and writeback tests (Louis Chauvet)
- Add new YUV formats
- Add KMS logging only after adding the enable switches to avoid some
  changing of new code throughout the patches
- Adhere to the new igt_calc_fb_size() API. Commit 83d7d630cff0
  ("lib/igt_fb: Make igt_calc_fb_size() somewhat usable") changed how
  the igt_calc_fb_size() is called.
- Link to v5: https://lore.kernel.org/r/20240422-kms_fb_stress-dev-v5-0-0c577163dc88@riseup.net

Changes in v5:
- Move global data variable to main (Kamil Konieczny)
- Create a function for creating fbs named `create_fb` (Kamil Konieczny)
- Move the stride checking to inside the `create_fb`
- Link to v4: https://lore.kernel.org/r/20240411-kms_fb_stress-dev-v4-0-7a8f3a419ebb@riseup.net

Changes in v4:
- Change (again) how the new test is done, now it just uses the primary
  and writeback, and changes the formats based on primary format list.
  (Pekka Paalanen)
- Add an enable_overlay flag, for the new test.
- Remove the addition of command-line flags, as I don't see them that
  useful anymore (Pekka Paalanen)
- Change the RGB565 test to a stride test (Pekka Paalanen)
- Link to v3: https://lore.kernel.org/r/20240307-kms_fb_stress-dev-v3-0-d5b948a541be@riseup.net

Changes in v3:
- Make the help message and commit message more clear on how the
  command-line options work (Louis Chauvet)
- Link to v2: https://lore.kernel.org/r/20240305-kms_fb_stress-dev-v2-0-78888a38e563@riseup.net

Changes in v2:
- Change how the command-line options work, now they pin the specific
  format and let the other change.
- Add a patch to test all the possible formats combination
- Add a couple of patches to fix some bugs
- Move the KMS logging patch to the beginning of the series
- Move the default_kms definition to the static struct data_t variable
- Link to v1: https://lore.kernel.org/r/20240226-kms_fb_stress-dev-v1-0-1c14942b1244@riseup.net

---
Arthur Grillo (12):
      benchmarks/kms_fb_stress: Set DRM_CLIENT_CAP_WRITEBACK_CONNECTORS before igt_require()
      benchmarks/kms_fb_stress: Assert that we have a supported pipe
      benchmarks/kms_fb_stress: Separate the benchmark in a subtest
      benchmarks/kms_fb_stress: Free resources on the stress procedure
      benchmarks/kms_fb_stress: Move FB creation to a separate function
      benchmarks/kms_fb_stress: Don't paint the FB's if the format is not supported by Pixman
      benchmarks/kms_fb_stress: Set writeback rectangle size outside the loop
      benchmarks/kms_fb_stress: Add enable switches for every plane
      benchmarks/kms_fb_stress: Log the KMS structure
      benchmarks/kms_fb_stress: Create a benchmark for primary plane formats
      benchmarks/kms_fb_stress: Create a benchmark for writeback formats
      lib/igt_fb: Add non sub-sampled YUV formats

 benchmarks/kms_fb_stress.c | 320 ++++++++++++++++++++++++++++++++++++---------
 lib/igt_fb.c               |  46 +++++++
 2 files changed, 304 insertions(+), 62 deletions(-)
---
base-commit: 72661cec25b3b81c46dbe57bb9953f554d88626f
change-id: 20240226-kms_fb_stress-dev-c93ae176f901

Best regards,
-- 
Arthur Grillo <arthurgrillo at riseup.net>



More information about the igt-dev mailing list