[Intel-gfx] [PATCH i-g-t v3 5/5] igt/kms_fbc_crc.c : Add Y-tile tests
Praveen Paneri
praveen.paneri at intel.com
Tue Jul 18 17:23:00 UTC 2017
From: Praveen Paneri <praveen.paneri at intel.com>
Now that we have support for Y-tiled buffers, add another
iteration of tests for Y-tiled buffers.
v3:
- Iterate over tiling modifier instead of tiling constant (Paulo)
- Improved logging and fixed indentation (Paulo)
Signed-off-by: Praveen Paneri <praveen.paneri at intel.com>
---
tests/kms_fbc_crc.c | 69 ++++++++++++++++++++++++++++++++++-------------------
1 file changed, 44 insertions(+), 25 deletions(-)
diff --git a/tests/kms_fbc_crc.c b/tests/kms_fbc_crc.c
index 7964e05..74debfb 100644
--- a/tests/kms_fbc_crc.c
+++ b/tests/kms_fbc_crc.c
@@ -318,12 +318,10 @@ static void prepare_crtc(data_t *data)
igt_output_set_pipe(output, data->pipe);
}
-static void create_fbs(data_t *data, bool tiled, struct igt_fb *fbs)
+static void create_fbs(data_t *data, uint64_t tiling, struct igt_fb *fbs)
{
int rc;
drmModeModeInfo *mode = igt_output_get_mode(data->output);
- uint64_t tiling = tiled ? LOCAL_I915_FORMAT_MOD_X_TILED :
- LOCAL_DRM_FORMAT_MOD_NONE;
rc = igt_create_color_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
DRM_FORMAT_XRGB8888, tiling,
@@ -344,8 +342,8 @@ static void get_ref_crcs(data_t *data)
struct igt_fb fbs[4];
int i;
- create_fbs(data, false, &fbs[0]);
- create_fbs(data, false, &fbs[2]);
+ create_fbs(data, LOCAL_DRM_FORMAT_MOD_NONE, &fbs[0]);
+ create_fbs(data, LOCAL_DRM_FORMAT_MOD_NONE, &fbs[2]);
fill_mmap_gtt(data, fbs[2].gem_handle, 0xff);
fill_mmap_gtt(data, fbs[3].gem_handle, 0xff);
@@ -366,7 +364,7 @@ static void get_ref_crcs(data_t *data)
igt_remove_fb(data->drm_fd, &fbs[i]);
}
-static bool prepare_test(data_t *data, enum test_mode test_mode)
+static bool prepare_test(data_t *data, enum test_mode test_mode, uint64_t tiling)
{
igt_display_t *display = &data->display;
igt_output_t *output = data->output;
@@ -374,7 +372,7 @@ static bool prepare_test(data_t *data, enum test_mode test_mode)
data->primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
- create_fbs(data, true, data->fb);
+ create_fbs(data, tiling, data->fb);
igt_pipe_crc_free(data->pipe_crc);
data->pipe_crc = NULL;
@@ -475,6 +473,7 @@ static void run_test(data_t *data, enum test_mode mode)
{
igt_display_t *display = &data->display;
int valid_tests = 0;
+ uint64_t tiling_methods[] = {LOCAL_I915_FORMAT_MOD_X_TILED, LOCAL_I915_FORMAT_MOD_Y_TILED};
if (mode == TEST_CONTEXT || mode == TEST_PAGE_FLIP_AND_CONTEXT) {
drm_intel_context *ctx = drm_intel_gem_context_create(data->bufmgr);
@@ -484,32 +483,52 @@ static void run_test(data_t *data, enum test_mode mode)
reset_display(data);
- for_each_pipe_with_valid_output(display, data->pipe, data->output) {
- prepare_crtc(data);
+ for (int i=0; i < (sizeof(tiling_methods)/sizeof(tiling_methods[0]));
+ i++) {
+ uint64_t tiling = tiling_methods[i];
- igt_info("Beginning %s on pipe %s, connector %s\n",
- igt_subtest_name(),
- kmstest_pipe_name(data->pipe),
- igt_output_name(data->output));
+ if(intel_gen(intel_get_drm_devid(data->drm_fd)) < 9 &&
+ tiling == LOCAL_I915_FORMAT_MOD_Y_TILED) {
+ igt_info("Y-tiling not supported for this platform\n");
+ continue;
+ }
+
+ for_each_pipe_with_valid_output(display,
+ data->pipe, data->output) {
+ const char *tiling_name =
+ (tiling == LOCAL_I915_FORMAT_MOD_Y_TILED) ? "x":"y";
+ prepare_crtc(data);
- if (!prepare_test(data, mode)) {
- igt_info("%s on pipe %s, connector %s: SKIPPED\n",
+ igt_info("Beginning %s on pipe %s, connector "
+ "%s, %s-tiled\n",
igt_subtest_name(),
kmstest_pipe_name(data->pipe),
- igt_output_name(data->output));
- continue;
- }
+ igt_output_name(data->output),
+ tiling_name);
- valid_tests++;
+ if (!prepare_test(data, mode, tiling)) {
+ igt_info("%s on pipe %s, connector "
+ "%s, %s-tiled: SKIPPED\n",
+ igt_subtest_name(),
+ kmstest_pipe_name(data->pipe),
+ igt_output_name(data->output),
+ tiling_name);
+ continue;
+ }
- test_crc(data, mode);
+ valid_tests++;
- igt_info("%s on pipe %s, connector %s: PASSED\n",
- igt_subtest_name(),
- kmstest_pipe_name(data->pipe),
- igt_output_name(data->output));
+ test_crc(data, mode);
- finish_crtc(data, mode);
+ igt_info("%s on pipe %s, connector %s,"
+ "%s-tiled: PASSED\n",
+ igt_subtest_name(),
+ kmstest_pipe_name(data->pipe),
+ igt_output_name(data->output),
+ tiling_name);
+
+ finish_crtc(data, mode);
+ }
}
igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
--
1.9.1
More information about the Intel-gfx
mailing list