On Fri, 23 Oct 2015 13:35:21 +0200 Daniel Vetter <daniel@xxxxxxxx> wrote: > On Fri, Oct 23, 2015 at 09:51:06AM +0100, Tvrtko Ursulin wrote: > > > > Hi, > > > > On 23/10/15 02:34, Vivek Kasireddy wrote: > > >The main goal of this subtest is to trigger the following warning > > >in the function i915_gem_object_get_fence(): > > > if (WARN_ON(!obj->map_and_fenceable)) > > > > > >To trigger this warning, the subtest first creates a Y-tiled > > >object and an associated framebuffer with the Y-fb modifier. > > >Furthermore, to prevent the map_and_fenceable from being set, we > > >make sure that the object does not have a normal VMA by refraining > > >from rendering to the object and by setting the rotation property > > >upfront before calling commit. > > > > > >v2: Do not call paint_squares and just use one output. > > > > > >v3: Convert an if condition to igt_require and move the plane > > >rotation requirement further up before the fb allocation. > > > > > >Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > >Signed-off-by: Vivek Kasireddy <vivek.kasireddy@xxxxxxxxx> > > >--- > > > tests/kms_rotation_crc.c | 68 > > > ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, > > > 68 insertions(+) > > > > > >diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c > > >index cc9847e..b25a949 100644 > > >--- a/tests/kms_rotation_crc.c > > >+++ b/tests/kms_rotation_crc.c > > >@@ -264,6 +264,68 @@ static void test_plane_rotation(data_t *data, > > >enum igt_plane plane_type) > > > igt_require_f(valid_tests, "no valid crtc/connector > > > combinations found\n"); } > > > > > >+static void test_plane_rotation_ytiled_obj(data_t *data, enum > > >igt_plane plane_type) +{ > > >+ igt_display_t *display = &data->display; > > >+ uint64_t tiling = LOCAL_I915_FORMAT_MOD_Y_TILED; > > >+ uint32_t format = DRM_FORMAT_XRGB8888; > > >+ int bpp = igt_drm_format_to_bpp(format); > > >+ enum igt_commit_style commit = COMMIT_LEGACY; > > >+ int fd = data->gfx_fd; > > >+ igt_output_t *output = &display->outputs[0]; > > >+ igt_plane_t *plane; > > >+ drmModeModeInfo *mode; > > >+ unsigned int stride, size, w, h; > > >+ uint32_t gem_handle; > > >+ int ret; > > >+ > > >+ igt_require(output != NULL && output->valid == true); > > >+ > > >+ plane = igt_output_get_plane(output, plane_type); > > >+ igt_require(igt_plane_supports_rotation(plane)); > > >+ > > >+ if (plane_type == IGT_PLANE_PRIMARY || plane_type == > > >IGT_PLANE_CURSOR) { > > >+ igt_require(data->display.has_universal_planes); > > >+ commit = COMMIT_UNIVERSAL; > > >+ } > > >+ > > >+ mode = igt_output_get_mode(output); > > >+ w = mode->hdisplay; > > >+ h = mode->vdisplay; > > >+ > > >+ for (stride = 512; stride < (w * bpp / 8); stride *= 2) > > >+ ; > > >+ for (size = 1024*1024; size < stride * h; size *= 2) > > >+ ; > > >+ > > >+ gem_handle = gem_create(fd, size); > > >+ ret = __gem_set_tiling(fd, gem_handle, I915_TILING_Y, > > >stride); > > >+ igt_assert(ret == 0); > > >+ > > >+ do_or_die(__kms_addfb(fd, gem_handle, w, h, stride, > > >+ format, tiling, LOCAL_DRM_MODE_FB_MODIFIERS, > > >+ &data->fb.fb_id)); > > >+ data->fb.width = w; > > >+ data->fb.height = h; > > >+ data->fb.gem_handle = gem_handle; > > >+ > > >+ igt_plane_set_fb(plane, NULL); > > >+ igt_display_commit(display); > > >+ > > >+ igt_plane_set_rotation(plane, data->rotation); > > >+ igt_plane_set_fb(plane, &data->fb); > > >+ > > >+ drmModeObjectSetProperty(fd, plane->drm_plane->plane_id, > > >+ DRM_MODE_OBJECT_PLANE, > > >+ plane->rotation_property, > > >+ plane->rotation); > > >+ ret = igt_display_try_commit2(display, commit); > > >+ > > >+ kmstest_restore_vt_mode(); > > >+ igt_remove_fb(fd, &data->fb); > > >+ igt_assert(ret == 0); > > >+} > > >+ > > > igt_main > > > { > > > data_t data = {}; > > >@@ -345,6 +407,12 @@ igt_main > > > test_plane_rotation(&data, IGT_PLANE_PRIMARY); > > > } > > > > > >+ igt_subtest_f("primary-rotation-90-Y-tiled") { > > >+ igt_require(gen >= 9); > > >+ data.rotation = IGT_ROTATION_90; > > >+ test_plane_rotation_ytiled_obj(&data, > > >IGT_PLANE_PRIMARY); > > >+ } > > >+ > > > igt_fixture { > > > igt_display_fini(&data.display); > > > } > > > > > > > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > Applied, thanks. > -Daniel Hi Daniel, Not sure whether Tvrtko or Chris have any futher comments on the fix for this bug but do you have any comments? This was the fix: http://lists.freedesktop.org/archives/intel-gfx/2015-September/076183.html Thanks and Regards, Vivek _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx