diff options
Diffstat (limited to 'tests/kms_plane.c')
-rw-r--r-- | tests/kms_plane.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/tests/kms_plane.c b/tests/kms_plane.c index 3f14dbf8..33e2905a 100644 --- a/tests/kms_plane.c +++ b/tests/kms_plane.c @@ -392,7 +392,8 @@ static void set_legacy_lut(data_t *data, enum pipe pipe, static void test_format_plane_color(data_t *data, enum pipe pipe, igt_plane_t *plane, - uint32_t format, int width, int height, + uint32_t format, uint64_t modifier, + int width, int height, int color, igt_crc_t *crc, struct igt_fb *fb) { const color_t *c = &colors[color]; @@ -400,7 +401,7 @@ static void test_format_plane_color(data_t *data, enum pipe pipe, if (data->crop == 0 || format == DRM_FORMAT_XRGB8888) { igt_create_color_fb(data->drm_fd, width, height, - format, DRM_FORMAT_MOD_NONE, + format, modifier, c->red, c->green, c->blue, fb); } else { /* @@ -412,7 +413,7 @@ static void test_format_plane_color(data_t *data, enum pipe pipe, igt_create_fb(data->drm_fd, width + data->crop * 2, height + data->crop * 2, - format, DRM_FORMAT_MOD_NONE, fb); + format, modifier, fb); cr = igt_get_cairo_ctx(data->drm_fd, fb); @@ -450,6 +451,7 @@ static bool test_format_plane(data_t *data, enum pipe pipe, struct igt_fb fb = {}; drmModeModeInfo *mode; uint32_t format, ref_format; + uint64_t modifier, ref_modifier; uint64_t width, height; igt_crc_t ref_crc[ARRAY_SIZE(colors)]; bool result = true; @@ -465,6 +467,7 @@ static bool test_format_plane(data_t *data, enum pipe pipe, width = mode->hdisplay; height = mode->vdisplay; ref_format = format = DRM_FORMAT_XRGB8888; + ref_modifier = modifier = DRM_FORMAT_MOD_NONE; } else { if (!plane->drm_plane) { igt_debug("Only legacy cursor ioctl supported, skipping cursor plane\n"); @@ -473,6 +476,7 @@ static bool test_format_plane(data_t *data, enum pipe pipe, do_or_die(drmGetCap(data->drm_fd, DRM_CAP_CURSOR_WIDTH, &width)); do_or_die(drmGetCap(data->drm_fd, DRM_CAP_CURSOR_HEIGHT, &height)); ref_format = format = DRM_FORMAT_ARGB8888; + ref_modifier = modifier = DRM_FORMAT_MOD_NONE; } igt_debug("Testing connector %s on %s plane %s.%u\n", @@ -481,8 +485,8 @@ static bool test_format_plane(data_t *data, enum pipe pipe, igt_pipe_crc_start(data->pipe_crc); - igt_info("Testing format " IGT_FORMAT_FMT " on %s.%u\n", - IGT_FORMAT_ARGS(format), + igt_info("Testing format " IGT_FORMAT_FMT " / modifier 0x%" PRIx64 " on %s.%u\n", + IGT_FORMAT_ARGS(format), modifier, kmstest_pipe_name(pipe), plane->index); if (data->display.is_atomic) { @@ -508,30 +512,34 @@ static bool test_format_plane(data_t *data, enum pipe pipe, for (int i = 0; i < ARRAY_SIZE(colors); i++) { test_format_plane_color(data, pipe, plane, - format, width, height, + format, modifier, + width, height, i, &ref_crc[i], &fb); } - for (int i = 0; i < plane->drm_plane->count_formats; i++) { + for (int i = 0; i < plane->format_mod_count; i++) { int crc_mismatch_count = 0; int crc_mismatch_mask = 0; igt_crc_t crc; - format = plane->drm_plane->formats[i]; + format = plane->formats[i]; + modifier = plane->modifiers[i]; - if (format == ref_format) + if (format == ref_format && + modifier == ref_modifier) continue; if (!igt_fb_supported_format(format)) continue; - igt_info("Testing format " IGT_FORMAT_FMT " on %s.%u\n", - IGT_FORMAT_ARGS(format), + igt_info("Testing format " IGT_FORMAT_FMT " / modifier 0x%" PRIx64 " on %s.%u\n", + IGT_FORMAT_ARGS(format), modifier, kmstest_pipe_name(pipe), plane->index); for (int j = 0; j < ARRAY_SIZE(colors); j++) { test_format_plane_color(data, pipe, plane, - format, width, height, + format, modifier, + width, height, j, &crc, &fb); if (!igt_check_crc_equal(&crc, &ref_crc[j])) { |