Lines Matching full:plane
80 static void plane_get_current_state(igt_plane_t *plane, uint64_t *values) in plane_get_current_state() argument
90 values[i] = igt_plane_get_prop(plane, i); in plane_get_current_state()
94 static void plane_check_current_state(igt_plane_t *plane, const uint64_t *values, in plane_check_current_state() argument
101 legacy = drmModeGetPlane(plane->pipe->display->drm_fd, plane->drm_plane->plane_id); in plane_check_current_state()
109 plane_get_current_state(plane, current_values); in plane_check_current_state()
123 static void plane_commit(igt_plane_t *plane, enum igt_commit_style s, in plane_commit() argument
126 igt_display_commit2(plane->pipe->display, s); in plane_commit()
127 plane_check_current_state(plane, plane->values, relax); in plane_commit()
130 static void plane_commit_atomic_err(igt_plane_t *plane, in plane_commit_atomic_err() argument
136 plane_get_current_state(plane, current_values); in plane_commit_atomic_err()
138 igt_assert_eq(-err, igt_display_try_commit2(plane->pipe->display, COMMIT_ATOMIC)); in plane_commit_atomic_err()
140 plane_check_current_state(plane, current_values, relax); in plane_commit_atomic_err()
234 static void crtc_commit(igt_pipe_t *pipe, igt_plane_t *plane, in crtc_commit() argument
240 crtc_check_current_state(pipe, pipe->values, plane->values, relax); in crtc_commit()
241 plane_check_current_state(plane, plane->values, relax); in crtc_commit()
244 static void crtc_commit_atomic_flags_err(igt_pipe_t *pipe, igt_plane_t *plane, in crtc_commit_atomic_flags_err() argument
253 plane_get_current_state(plane, current_plane_values); in crtc_commit_atomic_flags_err()
258 plane_check_current_state(plane, current_plane_values, relax); in crtc_commit_atomic_flags_err()
261 #define crtc_commit_atomic_err(pipe, plane, relax, err) \ argument
262 crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_ALLOW_MODESET, relax, err)
264 static uint32_t plane_get_igt_format(igt_plane_t *plane) in plane_get_igt_format() argument
269 plane_kms = plane->drm_plane; in plane_get_igt_format()
341 /* Draw a hole in the primary exactly on top of the overlay plane */ in plane_primary_overlay_zpos()
365 static void plane_overlay(igt_pipe_t *pipe, igt_output_t *output, igt_plane_t *plane) in plane_overlay() argument
368 uint32_t format = plane_get_igt_format(plane); in plane_overlay()
378 igt_plane_set_fb(plane, &fb); in plane_overlay()
379 igt_plane_set_position(plane, w/2, h/2); in plane_overlay()
381 /* Enable the overlay plane using the atomic API, and double-check in plane_overlay()
383 plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in plane_overlay()
385 /* Disable the plane and check the state matches the old. */ in plane_overlay()
386 igt_plane_set_fb(plane, NULL); in plane_overlay()
387 igt_plane_set_position(plane, 0, 0); in plane_overlay()
388 plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in plane_overlay()
390 /* Re-enable the plane through the legacy plane API, and verify through in plane_overlay()
392 igt_plane_set_fb(plane, &fb); in plane_overlay()
393 igt_plane_set_position(plane, w/2, h/2); in plane_overlay()
394 plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE); in plane_overlay()
396 /* Restore the plane to its original settings through the legacy plane in plane_overlay()
398 igt_plane_set_fb(plane, NULL); in plane_overlay()
399 igt_plane_set_position(plane, 0, 0); in plane_overlay()
400 plane_commit(plane, COMMIT_LEGACY, ATOMIC_RELAX_NONE); in plane_overlay()
405 static void plane_primary(igt_pipe_t *pipe, igt_plane_t *plane, struct igt_fb *fb) in plane_primary() argument
414 /* Flip the primary plane using the atomic API, and double-check in plane_primary()
416 igt_plane_set_fb(plane, &fb2); in plane_primary()
417 crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in plane_primary()
419 /* Restore the primary plane and check the state matches the old. */ in plane_primary()
420 igt_plane_set_fb(plane, fb); in plane_primary()
421 crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in plane_primary()
423 /* Set the plane through the legacy CRTC/primary-plane API, and in plane_primary()
425 igt_plane_set_fb(plane, &fb2); in plane_primary()
426 crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); in plane_primary()
428 /* Restore the plane to its original settings through the legacy CRTC in plane_primary()
430 igt_plane_set_fb(plane, fb); in plane_primary()
431 crtc_commit(pipe, plane, COMMIT_LEGACY, CRTC_RELAX_MODE); in plane_primary()
433 /* Set the plane through the universal setplane API, and in plane_primary()
435 igt_plane_set_fb(plane, &fb2); in plane_primary()
436 plane_commit(plane, COMMIT_UNIVERSAL, ATOMIC_RELAX_NONE); in plane_primary()
471 * Enable the plane through the legacy CRTC/primary-plane API, and in test_only()
519 /* Flip the cursor plane using the atomic API, and double-check in plane_cursor()
525 /* Restore the cursor plane and check the state matches the old. */ in plane_cursor()
530 /* Re-enable the plane through the legacy cursor API, and verify in plane_cursor()
540 /* Restore the plane to its original settings through the legacy cursor in plane_cursor()
549 igt_plane_t *plane, in plane_invalid_params() argument
555 igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, plane->drm_plane->plane_id); in plane_invalid_params()
556 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
558 igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, pipe->crtc_id); in plane_invalid_params()
559 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
561 igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, output->id); in plane_invalid_params()
562 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
564 igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, pipe->values[IGT_CRTC_MODE_ID]); in plane_invalid_params()
565 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
568 igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, 0); in plane_invalid_params()
569 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
571 igt_plane_set_fb(plane, fb); in plane_invalid_params()
572 plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in plane_invalid_params()
575 igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, plane->drm_plane->plane_id); in plane_invalid_params()
576 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
578 igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, fb->fb_id); in plane_invalid_params()
579 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
581 igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, output->id); in plane_invalid_params()
582 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
584 igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, pipe->values[IGT_CRTC_MODE_ID]); in plane_invalid_params()
585 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
588 igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, 0); in plane_invalid_params()
589 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params()
591 igt_plane_set_fb(plane, fb); in plane_invalid_params()
592 plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in plane_invalid_params()
594 /* Create a framebuffer too small for the plane configuration. */ in plane_invalid_params()
599 igt_plane_set_prop_value(plane, IGT_PLANE_FB_ID, fb2.fb_id); in plane_invalid_params()
600 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, ENOSPC); in plane_invalid_params()
602 /* Restore the primary plane and check the state matches the old. */ in plane_invalid_params()
603 igt_plane_set_fb(plane, fb); in plane_invalid_params()
604 plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in plane_invalid_params()
609 igt_plane_t *plane) in plane_invalid_params_fence() argument
618 igt_plane_set_fence_fd(plane, pipe->display->drm_fd); in plane_invalid_params_fence()
619 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params_fence()
624 igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, ~0); in plane_invalid_params_fence()
625 igt_plane_set_fence_fd(plane, fence_fd); in plane_invalid_params_fence()
626 plane_commit_atomic_err(plane, ATOMIC_RELAX_NONE, EINVAL); in plane_invalid_params_fence()
629 igt_plane_set_prop_value(plane, IGT_PLANE_CRTC_ID, pipe->crtc_id); in plane_invalid_params_fence()
630 plane_commit(plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in plane_invalid_params_fence()
638 igt_plane_t *plane, in crtc_invalid_params() argument
645 igt_pipe_obj_set_prop_value(pipe, IGT_CRTC_MODE_ID, plane->drm_plane->plane_id); in crtc_invalid_params()
646 crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); in crtc_invalid_params()
649 crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); in crtc_invalid_params()
652 crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); in crtc_invalid_params()
655 crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); in crtc_invalid_params()
659 crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, ATOMIC_RELAX_NONE, 0); in crtc_invalid_params()
666 crtc_commit_atomic_flags_err(pipe, plane, in crtc_invalid_params()
672 crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); in crtc_invalid_params()
675 crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EINVAL); in crtc_invalid_params()
680 crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in crtc_invalid_params()
685 igt_plane_t *plane, in crtc_invalid_params_fence() argument
703 crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); in crtc_invalid_params_fence()
711 crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); in crtc_invalid_params_fence()
719 crtc_commit_atomic_err(pipe, plane, ATOMIC_RELAX_NONE, EFAULT); in crtc_invalid_params_fence()
724 igt_plane_set_fence_fd(plane, fence_fd); in crtc_invalid_params_fence()
729 crtc_commit_atomic_flags_err(pipe, plane, 0, ATOMIC_RELAX_NONE, EINVAL); in crtc_invalid_params_fence()
733 crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, in crtc_invalid_params_fence()
738 crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, in crtc_invalid_params_fence()
744 crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, in crtc_invalid_params_fence()
752 crtc_commit_atomic_flags_err(pipe, plane, 0, in crtc_invalid_params_fence()
756 crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, in crtc_invalid_params_fence()
760 crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_PAGE_FLIP_EVENT, in crtc_invalid_params_fence()
765 crtc_commit_atomic_flags_err(pipe, plane, DRM_MODE_ATOMIC_TEST_ONLY, in crtc_invalid_params_fence()
772 igt_plane_set_fence_fd(plane, -1); in crtc_invalid_params_fence()
775 crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in crtc_invalid_params_fence()
779 crtc_commit(pipe, plane, COMMIT_ATOMIC, ATOMIC_RELAX_NONE); in crtc_invalid_params_fence()
787 igt_plane_t *plane, in atomic_invalid_params() argument
860 props_raw[0] = plane->drm_plane->plane_id; in atomic_invalid_params()
935 igt_plane_t *plane; in atomic_clear() local
937 for_each_plane_on_pipe(display, pipe, plane) { in atomic_clear()
938 igt_plane_set_fb(plane, NULL); in atomic_clear()
939 igt_plane_set_position(plane, 0, 0); in atomic_clear()