Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> writes: > On Tue, Oct 03, 2017 at 09:35:33AM -0700, Ben Widawsky wrote: >> On 17-09-27 15:34:17, Gabriel Krisman Bertazi wrote: >> >Signed-off-by: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxxxx> >> >--- >> > tests/kms_ccs.c | 37 +++++++++++++++++++++++++++---------- >> > 1 file changed, 27 insertions(+), 10 deletions(-) >> > >> >diff --git a/tests/kms_ccs.c b/tests/kms_ccs.c >> >index 73025a1e019f..35dfcca6be14 100644 >> >--- a/tests/kms_ccs.c >> >+++ b/tests/kms_ccs.c >> >@@ -33,8 +33,12 @@ enum test_flags { >> > TEST_ROTATE_180 = 1 << 2, >> > TEST_BAD_PIXEL_FORMAT = 1 << 3, >> > TEST_BAD_ROTATION_90 = 1 << 4, >> >+ TEST_NO_AUX_BUFFER = 1 << 5, >> > }; >> > >> >+#define TEST_FAIL_ON_ADDFB2 \ >> >+ (TEST_BAD_PIXEL_FORMAT | TEST_NO_AUX_BUFFER) >> >+ >> >> Adding the define confuses things more than it helps IMO. >> >> > enum test_fb_flags { >> > FB_COMPRESSED = 1 << 0, >> > FB_HAS_PLANE = 1 << 1, >> >@@ -315,22 +319,29 @@ static void generate_fb(data_t *data, struct igt_fb *fb, >> > */ >> > int ccs_width = ALIGN(width * 4, 32) / 32; >> > int ccs_height = ALIGN(height, 16) / 16; >> >- f.pitches[1] = ALIGN(ccs_width * 1, 128); >> >- f.modifier[1] = modifier; >> >> I think the case you're trying to test should have the modifier set for plane1, >> just no handle, size or whatever. If you don't do this, I'm not sure what you're >> actually testing. > > Hmm. I suppose we migth end up testing bad stride here. I can't > recall exactly in which order the kernel checks these. So just > setting 'handle[1] = 0' might be what we want to test here. My test makes the kernel error out with: [23303.475286] [drm:drm_internal_framebuffer_create] no buffer object handle for plane 1 Which I think is the right one. > And then we may want a 'pitches[1] = 0' test as well in the bad stride > tests. Sure, I can add that. > >> >> >- f.offsets[1] = size[0]; >> >- size[1] = f.pitches[1] * ALIGN(ccs_height, 32); >> >+ int ccs_pitches = ALIGN(ccs_width * 1, 128); >> >+ int ccs_offsets = size[0]; >> >+ >> >+ size[1] = ccs_pitches * ALIGN(ccs_height, 32); >> > >> > f.handles[0] = gem_create(data->drm_fd, size[0] + size[1]); >> >- f.handles[1] = f.handles[0]; >> >- render_ccs(data, f.handles[1], f.offsets[1], size[1], >> >- height, f.pitches[1]); >> >+ >> >+ if (!(data->flags & TEST_NO_AUX_BUFFER)) { >> >+ f.modifier[1] = modifier; >> >+ f.handles[1] = f.handles[0]; >> >+ f.pitches[1] = ccs_pitches; >> >+ f.offsets[1] = ccs_offsets; >> >+ >> >+ render_ccs(data, f.handles[1], f.offsets[1], size[1], >> >+ height, f.pitches[1]); >> >+ } >> > } else >> > f.handles[0] = gem_create(data->drm_fd, size[0]); >> > >> > render_fb(data, f.handles[0], size[0], fb_flags, height, f.pitches[0]); >> > >> > ret = drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f); >> >- if (data->flags & TEST_BAD_PIXEL_FORMAT) { >> >+ if (data->flags & TEST_FAIL_ON_ADDFB2) { >> > igt_assert_eq(ret, -1); >> > igt_assert_eq(errno, EINVAL); >> > return; >> >@@ -379,7 +390,7 @@ static void try_config(data_t *data, enum test_fb_flags fb_flags) >> > drm_mode->vdisplay, fb_flags); >> > } >> > >> >- if (data->flags & TEST_BAD_PIXEL_FORMAT) >> >+ if (data->flags & TEST_FAIL_ON_ADDFB2) >> > return; >> > >> > igt_plane_set_position(primary, 0, 0); >> >@@ -446,7 +457,8 @@ static void test_output(data_t *data) >> > } >> > >> > if (data->flags & TEST_BAD_PIXEL_FORMAT || >> >- data->flags & TEST_BAD_ROTATION_90) { >> >+ data->flags & TEST_BAD_ROTATION_90 || >> >+ data->flags & TEST_NO_AUX_BUFFER) { >> > try_config(data, fb_flags | FB_COMPRESSED); >> > } >> > >> >@@ -515,6 +527,11 @@ igt_main >> > } >> > >> > data.plane = NULL; >> >+ >> >+ data.flags = TEST_NO_AUX_BUFFER; >> >+ igt_subtest_f("pipe-%s-missing-ccs-buffer", pipe_name) >> >+ test_output(&data); >> >+ >> > } >> > >> > igt_fixture >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@xxxxxxxxxxxxxxxxxxxxx >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Gabriel Krisman Bertazi _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx