From d39c1b14ebd577b21ad551e3af477f53f1f4e701 Mon Sep 17 00:00:00 2001 From: Radhakrishna Sripada Date: Fri, 12 Oct 2018 00:18:45 -0700 Subject: tests/kms_properties: Add additional prperty test infrastructure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We currently test the existimg properties by setting them with default value. Add infrastructure to perform additional test on a desired property. v2: Fix the strcmp logic Cc: Ville Syrjälä Cc: Daniel Vetter Signed-off-by: Radhakrishna Sripada Reviewed-by: Rodrigo Vivi --- tests/kms_properties.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'tests/kms_properties.c') diff --git a/tests/kms_properties.c b/tests/kms_properties.c index 9548cf44..f5a86236 100644 --- a/tests/kms_properties.c +++ b/tests/kms_properties.c @@ -29,6 +29,13 @@ #include #include +struct additional_test { + char *name; + uint32_t obj_type; + void (*prop_test)(int fd, uint32_t id, uint32_t type, drmModePropertyPtr prop, + uint32_t prop_id, uint64_t prop_value, bool atomic); +}; + static void prepare_pipe(igt_display_t *display, enum pipe pipe, igt_output_t *output, struct igt_fb *fb) { drmModeModeInfo *mode = igt_output_get_mode(output); @@ -75,11 +82,27 @@ static bool ignore_property(uint32_t obj_type, uint32_t prop_flags, return false; } +static const struct additional_test property_functional_test[] = {}; + +static bool has_additional_test_lookup(uint32_t obj_type, const char *name, + bool atomic, int *index) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(property_functional_test); i++) + if (property_functional_test[i].obj_type == obj_type && + !strcmp(name, property_functional_test[i].name)) { + *index = i; + return true; + } + + return false; +} static void test_properties(int fd, uint32_t type, uint32_t id, bool atomic) { drmModeObjectPropertiesPtr props = drmModeObjectGetProperties(fd, id, type); - int i, ret; + int i, j, ret; drmModeAtomicReqPtr req = NULL; igt_assert(props); @@ -114,6 +137,9 @@ static void test_properties(int fd, uint32_t type, uint32_t id, bool atomic) igt_assert_eq(ret, 0); } + if (has_additional_test_lookup(type, prop->name, atomic, &j)) + property_functional_test[j].prop_test(fd, id, type, prop, prop_id, prop_value, atomic); + drmModeFreeProperty(prop); } -- cgit v1.2.3