On Fri, Mar 19, 2021 at 10:21 PM Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > > On Fri, Mar 19, 2021 at 02:43:56PM -0400, Lyude Paul wrote: > > On Fri, 2021-03-19 at 20:00 +0200, Ville Syrjälä wrote: > > > On Fri, Mar 19, 2021 at 01:40:52PM -0400, Lyude Paul wrote: > > > > On Fri, 2021-03-19 at 17:01 +0200, Ville Syrjälä wrote: > > > > > On Thu, Mar 18, 2021 at 06:21:23PM -0400, Lyude wrote: > > > > > > From: Lyude Paul <lyude@xxxxxxxxxx> > > > > > > > > > > > > Currently we just assume that every cursor size up to data- > > > > > > >cursor_max_w/h > > > > > > will > > > > > > be supported by the driver, and check for support of nonsquare cursors > > > > > > by > > > > > > checking if we're running on u815 and if so, which variant of intel > > > > > > hardware > > > > > > we're running on. This isn't really ideal as we're about to enable 32x32 > > > > > > cursor > > > > > > size tests for nouveau, and Intel hardware doesn't support cursor sizes > > > > > > that > > > > > > small. > > > > > > > > > > > > So, fix this by removing has_nonsquare_cursors() and replacing it with a > > > > > > more > > > > > > generic require_cursor_size() function which checks whether or not the > > > > > > driver > > > > > > we're using supports a given cursor size by attempting a test-only > > > > > > atomic > > > > > > commit. > > > > > > > > > > > > Signed-off-by: Lyude Paul <lyude@xxxxxxxxxx> > > > > > > Cc: Martin Peres <martin.peres@xxxxxxx> > > > > > > Cc: Ben Skeggs <bskeggs@xxxxxxxxxx> > > > > > > Cc: Jeremy Cline <jcline@xxxxxxxxxx> > > > > > > --- > > > > > > tests/kms_cursor_crc.c | 131 ++++++++++++++++++++++++----------------- > > > > > > 1 file changed, 76 insertions(+), 55 deletions(-) > > > > > > > > > > > > diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c > > > > > > index 3541ea06..b9c05472 100644 > > > > > > --- a/tests/kms_cursor_crc.c > > > > > > +++ b/tests/kms_cursor_crc.c > > > > > > @@ -523,26 +523,43 @@ static void create_cursor_fb(data_t *data, int > > > > > > cur_w, > > > > > > int cur_h) > > > > > > igt_put_cairo_ctx(cr); > > > > > > } > > > > > > > > > > > > -static bool has_nonsquare_cursors(data_t *data) > > > > > > +static void require_cursor_size(data_t *data, int w, int h) > > > > > > { > > > > > > - uint32_t devid; > > > > > > + igt_fb_t primary_fb; > > > > > > + drmModeModeInfo *mode; > > > > > > + igt_display_t *display = &data->display; > > > > > > + igt_output_t *output = data->output; > > > > > > + igt_plane_t *primary, *cursor; > > > > > > + int ret; > > > > > > > > > > > > - if (!is_i915_device(data->drm_fd)) > > > > > > - return false; > > > > > > + igt_output_set_pipe(output, data->pipe); > > > > > > > > > > > > - devid = intel_get_drm_devid(data->drm_fd); > > > > > > + mode = igt_output_get_mode(output); > > > > > > + primary = igt_output_get_plane_type(output, > > > > > > DRM_PLANE_TYPE_PRIMARY); > > > > > > + cursor = igt_output_get_plane_type(output, > > > > > > DRM_PLANE_TYPE_CURSOR); > > > > > > > > > > > > - /* > > > > > > - * Test non-square cursors a bit on the platforms > > > > > > - * that support such things. > > > > > > - */ > > > > > > - if (devid == PCI_CHIP_845_G || devid == PCI_CHIP_I865_G) > > > > > > - return true; > > > > > > + /* Create temporary primary fb for testing */ > > > > > > + igt_assert(igt_create_fb(data->drm_fd, mode->hdisplay, mode- > > > > > > > vdisplay, DRM_FORMAT_XRGB8888, > > > > > > + LOCAL_DRM_FORMAT_MOD_NONE, > > > > > > &primary_fb)); > > > > > > > > > > > > - if (IS_VALLEYVIEW(devid) || IS_CHERRYVIEW(devid)) > > > > > > - return false; > > > > > > + igt_plane_set_fb(primary, &primary_fb); > > > > > > + igt_plane_set_fb(cursor, &data->fb); > > > > > > + igt_plane_set_size(cursor, w, h); > > > > > > + igt_fb_set_size(&data->fb, cursor, w, h); > > > > > > + > > > > > > + /* Test if the kernel supports the given cursor size or not */ > > > > > > + ret = igt_display_try_commit_atomic(display, > > > > > > + DRM_MODE_ATOMIC_TEST_ONLY | > > > > > > + > > > > > > DRM_MODE_ATOMIC_ALLOW_MODESET, > > > > > > + NULL); > > > > > > > > > > Would be better to not depend on atomic. We have platforms > > > > > that don't expose it yet. > > > > > > > > Do you have any other ideas how we could probe for this then? it seems like > > > > the > > > > only alternative would be to add intel-specific checks to fix that, or add > > > > some > > > > ioctl for querying the minimum cursor size (which sounds preferable imo). > > > > would > > > > the latter work for you, or do you have another idea? > > > > > > Just do it for real instead of TEST_ONLY. > > > > ah-and it'll still fail in that case I assume? > > Yeah, should fail just the same if the driver doesn't like it. Doing the atomic TEST_ONLY first would be good, if atomic support exists, since it's faster. Doing modesets just to figure out whether we should test something is a bit expensive, best not to inflict on that on new machines. -Daniel > > -- > Ville Syrjälä > Intel > _______________________________________________ > igt-dev mailing list > igt-dev@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/igt-dev -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Nouveau mailing list Nouveau@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/nouveau