From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Add a quick test to make sure the legacy set colorkey ioctl only works for sprite planes. Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> --- lib/igt_kms.h | 4 +++ tests/.gitignore | 1 + tests/Makefile.sources | 1 + tests/kms_legacy_colorkey.c | 77 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 tests/kms_legacy_colorkey.c diff --git a/lib/igt_kms.h b/lib/igt_kms.h index 565df14..a2ba19e 100644 --- a/lib/igt_kms.h +++ b/lib/igt_kms.h @@ -262,6 +262,10 @@ void igt_wait_for_vblank(int drm_fd, enum pipe pipe); #define for_each_pipe(display, pipe) \ for (pipe = 0; pipe < igt_display_get_n_pipes(display); pipe++) \ +#define for_each_plane_on_pipe(display, pipe, plane) \ + for (int i__ = 0; (plane) = &(display)->pipes[(pipe)].planes[i__], \ + i__ < (display)->pipes[(pipe)].n_planes; i__++) + /* * Can be used with igt_output_set_pipe() to mean we don't care about the pipe * that should drive this output diff --git a/tests/.gitignore b/tests/.gitignore index 843db4a..981ebfe 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -131,6 +131,7 @@ kms_flip kms_flip_event_leak kms_flip_tiling kms_force_connector +kms_legacy_colorkey kms_mmio_vs_cs_flip kms_pipe_crc_basic kms_plane diff --git a/tests/Makefile.sources b/tests/Makefile.sources index 0a974a6..fbb617e 100644 --- a/tests/Makefile.sources +++ b/tests/Makefile.sources @@ -74,6 +74,7 @@ TESTS_progs_M = \ kms_flip_event_leak \ kms_flip_tiling \ kms_flip_event_leak \ + kms_legacy_colorkey \ kms_mmio_vs_cs_flip \ kms_pipe_crc_basic \ kms_plane \ diff --git a/tests/kms_legacy_colorkey.c b/tests/kms_legacy_colorkey.c new file mode 100644 index 0000000..c0725fe --- /dev/null +++ b/tests/kms_legacy_colorkey.c @@ -0,0 +1,77 @@ +/* + * Copyright © 2015 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include <errno.h> + +#include "drmtest.h" +#include "igt_kms.h" +#include "igt_aux.h" + +IGT_TEST_DESCRIPTION("Check that the legacy set colorkey ioctl only works on sprite planes."); + +static int drm_fd; +static igt_display_t display; +static int p; +static igt_plane_t *plane; +static uint32_t max_id; + + +static void test_plane(uint32_t plane_id, int expected_ret) +{ + struct drm_intel_sprite_colorkey ckey = { + .plane_id = plane_id, + }; + + igt_assert(drmCommandWrite(drm_fd, DRM_I915_SET_SPRITE_COLORKEY, &ckey, + sizeof(ckey)) == expected_ret); +} + +igt_simple_main +{ + igt_skip_on_simulation(); + + igt_fixture { + drm_fd = drm_open_any_master(); + + kmstest_set_vt_graphics_mode(); + + igt_display_init(&display, drm_fd); + } + + for_each_pipe(&display, p) { + for_each_plane_on_pipe(&display, p, plane) { + test_plane(plane->drm_plane->plane_id, + (plane->is_cursor || plane->is_primary) ? -ENOENT : 0); + + max_id = max(max_id, plane->drm_plane->plane_id); + } + } + + /* try some invalid IDs too */ + test_plane(0, -ENOENT); + test_plane(max_id + 1, -ENOENT); + + igt_fixture { + igt_display_fini(&display); + } +} -- 2.0.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx