[igt-dev] [PATCH i-g-t v3] test/kms_plane_cursor: Honour max cursor size
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Thu Oct 13 17:44:08 UTC 2022
On 13.10.2022 18.56, Aurabindo Pillai wrote:
> Skip the tests for cursor sizes that are not supported by the hardware
>
> Changes in v2
> =============
>
> * Remove the duplicate definitions for DRM cursor width capability
> * Check for both cursor width and height when verifying the test cursor size
>
> Changes in v3
> =============
>
> * Add variables to hold max cursor size to the global data_t struct
> * Remove stale comment from v1
>
> Signed-off-by: Aurabindo Pillai <aurabindo.pillai at amd.com>
> ---
> tests/kms_plane_cursor.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
> index 43bcaaa4..96036213 100644
> --- a/tests/kms_plane_cursor.c
> +++ b/tests/kms_plane_cursor.c
> @@ -30,6 +30,7 @@
> * - DRM index indicates z-ordering, higher index = higher z-order
> */
>
> +
^^
stray newline
> enum {
> TEST_PRIMARY = 0,
> TEST_OVERLAY = 1 << 0,
> @@ -64,6 +65,8 @@ typedef struct data {
> enum pipe pipe_id;
> int drm_fd;
> rect_t or;
> + uint64_t max_curw;
> + uint64_t max_curh;
> } data_t;
>
> /* Common test setup. */
> @@ -222,6 +225,8 @@ static void test_cursor(data_t *data, int size, unsigned int flags)
> int sw, sh;
> int pad = 128;
>
> + igt_skip_on((size > data->max_curw) || (size > data->max_curh));
you could also remove unnecessary brackets.
> +
> sw = data->mode->hdisplay;
> sh = data->mode->vdisplay;
>
> @@ -270,8 +275,15 @@ igt_main
> };
>
> igt_fixture {
> + int ret;
> +
> data.drm_fd = drm_open_driver_master(DRIVER_ANY);
>
> + ret = drmGetCap(data.drm_fd, DRM_CAP_CURSOR_WIDTH, &data.max_curw);
> + igt_assert(ret == 0 || errno == EINVAL);
> + ret = drmGetCap(data.drm_fd, DRM_CAP_CURSOR_HEIGHT, &data.max_curh);
> + igt_assert(ret == 0 || errno == EINVAL);
> +
You'll still need to initialize those max_curw, max_curh to 64 like you
were doing in previous version of your patch, now need something like
this when setting up data
data_t data = { .max_curw = 64, .max_curh = 64 };
otherwise maximum cursor width/height will be zero if get EINVAL when
this is ran on driver where these cursor drm capabilities are not defined.
/Juha-Pekka
> kmstest_set_vt_graphics_mode();
>
> igt_display_require(&data.display, data.drm_fd);
More information about the igt-dev
mailing list