[PATCH i-g-t] tests/kms_setmode: Dynamic crtc/connector combinations

Alex Deucher alexdeucher at gmail.com
Mon Jun 5 19:50:29 UTC 2017


On Mon, Jun 5, 2017 at 2:43 PM, Harry Wentland <harry.wentland at amd.com> wrote:
> Create crtc/connector combinations based on actual adapter
> information obtained from drmModeRes.
>
> Also set MAX_CRTCs to 6 for AMD GPUs.
>
> Signed-off-by: Harry Wentland <harry.wentland at amd.com>

The code is kind of hard to follow, but it looks good to me:
Acked-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  tests/kms_setmode.c | 24 ++++++++++++++++++------
>  1 file changed, 18 insertions(+), 6 deletions(-)
>
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index 430568a1c24e..a7a48de44b0e 100644
> --- a/tests/kms_setmode.c
> +++ b/tests/kms_setmode.c
> @@ -31,15 +31,13 @@
>  #include <unistd.h>
>  #include <string.h>
>  #include <sys/time.h>
> -
> +#include <math.h>
>  #include "intel_bufmgr.h"
>
>  #define MAX_CONNECTORS  10
> -#define MAX_CRTCS       3
> +#define MAX_CRTCS       6
>
>  /* max combinations with repetitions */
> -#define MAX_COMBINATION_COUNT   \
> -       (MAX_CONNECTORS * MAX_CONNECTORS * MAX_CONNECTORS)
>  #define MAX_COMBINATION_ELEMS   MAX_CRTCS
>
>  static int drm_fd;
> @@ -702,7 +700,8 @@ struct combination {
>
>  struct combination_set {
>         int count;
> -       struct combination items[MAX_COMBINATION_COUNT];
> +       int capacity;
> +       struct combination *items;
>  };
>
>  /*
> @@ -716,7 +715,7 @@ static void iterate_combinations(int n, int k, bool allow_repetitions,
>         int v;
>
>         if (!k) {
> -               igt_assert(set->count < ARRAY_SIZE(set->items));
> +               igt_assert(set->count < set->capacity);
>                 set->items[set->count++] = *comb;
>                 return;
>         }
> @@ -751,6 +750,16 @@ static void test_combinations(const struct test_config *tconf,
>         if (connector_count > 2 && (tconf->flags & TEST_STEALING))
>                 return;
>
> +       igt_assert(tconf->resources);
> +
> +       connector_combs.capacity = pow(tconf->resources->count_connectors,
> +                                      tconf->resources->count_crtcs + 1);
> +       crtc_combs.capacity = pow(tconf->resources->count_crtcs,
> +                                 tconf->resources->count_crtcs + 1);
> +
> +       connector_combs.items = malloc(connector_combs.capacity * sizeof(struct combination));
> +       crtc_combs.items = malloc(crtc_combs.capacity * sizeof(struct combination));
> +
>         get_combinations(tconf->resources->count_connectors, connector_count,
>                          false, &connector_combs);
>         get_combinations(tconf->resources->count_crtcs, connector_count,
> @@ -787,6 +796,9 @@ static void test_combinations(const struct test_config *tconf,
>  free_cconfs:
>                 free(cconfs);
>         }
> +
> +       free(connector_combs.items);
> +       free(crtc_combs.items);
>  }
>
>  static void run_test(const struct test_config *tconf)
> --
> 2.11.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list