[PATCH i-g-t v3 5/7] benchmarks/kms_fb_stress: Don't paint the FB's if the format is DRM_FORMAT_RGB565
Arthur Grillo
arthurgrillo at riseup.net
Thu Mar 7 19:41:07 UTC 2024
Cairo does not fully support the RGB565 due to some stride issues.
So, don't paint the FB's if the format is DRM_FORMAT_RGB565.
Signed-off-by: Arthur Grillo <arthurgrillo at riseup.net>
---
benchmarks/kms_fb_stress.c | 55 ++++++++++++++++++++++++++++++++++------------
1 file changed, 41 insertions(+), 14 deletions(-)
diff --git a/benchmarks/kms_fb_stress.c b/benchmarks/kms_fb_stress.c
index c3b32072384e..d3823908f131 100644
--- a/benchmarks/kms_fb_stress.c
+++ b/benchmarks/kms_fb_stress.c
@@ -52,20 +52,47 @@ static void gen_fbs(struct data_t *data)
drmModeModeInfo *mode = igt_output_get_mode(data->wb_output);
for (int i = 0; i < NUM_FBS; i++) {
- igt_create_color_fb(data->fd, kms->primary.rect.width, kms->primary.rect.height,
- kms->primary.format, DRM_FORMAT_MOD_LINEAR,
- !i, i, i,
- &kms->primary.fbs[i]);
-
- igt_create_color_fb(data->fd, kms->overlay_a.rect.width, kms->overlay_a.rect.height,
- kms->overlay_a.format, DRM_FORMAT_MOD_LINEAR,
- i, !i, i,
- &kms->overlay_a.fbs[i]);
-
- igt_create_color_fb(data->fd, kms->overlay_b.rect.width, kms->overlay_b.rect.height,
- kms->overlay_b.format, DRM_FORMAT_MOD_LINEAR,
- i, i, !i,
- &kms->overlay_b.fbs[i]);
+ // Cairo does not fully support this format
+ if (kms->primary.format != DRM_FORMAT_RGB565) {
+ igt_create_color_fb(data->fd,
+ kms->primary.rect.width, kms->primary.rect.height,
+ kms->primary.format, DRM_FORMAT_MOD_LINEAR,
+ !i, i, i,
+ &kms->primary.fbs[i]);
+ } else {
+ igt_create_fb(data->fd,
+ kms->primary.rect.width, kms->primary.rect.height,
+ kms->primary.format, DRM_FORMAT_MOD_LINEAR,
+ &kms->primary.fbs[i]);
+ }
+
+ // Cairo does not fully support this format
+ if (kms->overlay_a.format != DRM_FORMAT_RGB565) {
+ igt_create_color_fb(data->fd,
+ kms->overlay_a.rect.width, kms->overlay_a.rect.height,
+ kms->overlay_a.format, DRM_FORMAT_MOD_LINEAR,
+ i, !i, i,
+ &kms->overlay_a.fbs[i]);
+ } else {
+ igt_create_fb(data->fd,
+ kms->overlay_a.rect.width, kms->overlay_a.rect.height,
+ kms->overlay_a.format, DRM_FORMAT_MOD_LINEAR,
+ &kms->overlay_a.fbs[i]);
+ }
+
+ // Cairo does not fully support this format
+ if (kms->overlay_b.format != DRM_FORMAT_RGB565) {
+ igt_create_color_fb(data->fd,
+ kms->overlay_b.rect.width, kms->overlay_b.rect.height,
+ kms->overlay_b.format, DRM_FORMAT_MOD_LINEAR,
+ i, i, !i,
+ &kms->overlay_b.fbs[i]);
+ } else {
+ igt_create_fb(data->fd,
+ kms->overlay_b.rect.width, kms->overlay_b.rect.height,
+ kms->overlay_b.format, DRM_FORMAT_MOD_LINEAR,
+ &kms->overlay_b.fbs[i]);
+ }
kms->writeback.rect.width = mode->hdisplay;
kms->writeback.rect.height = mode->vdisplay;
--
2.43.0
More information about the igt-dev
mailing list