^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) * Copyright (c) 2016 Intel Corporation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Permission to use, copy, modify, distribute, and sell this software and its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * documentation for any purpose is hereby granted without fee, provided that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * the above copyright notice appear in all copies and that both that copyright
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * notice and this permission notice appear in supporting documentation, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * that the name of the copyright holders not be used in advertising or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * publicity pertaining to distribution of the software without specific,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * written prior permission. The copyright holders make no representations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * about the suitability of this software for any purpose. It is provided "as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * is" without express or implied warranty.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) * OF THIS SOFTWARE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #ifndef __DRM_BLEND_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define __DRM_BLEND_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #include <linux/list.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #include <linux/ctype.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #include <drm/drm_mode.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define DRM_MODE_BLEND_PREMULTI 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define DRM_MODE_BLEND_COVERAGE 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define DRM_MODE_BLEND_PIXEL_NONE 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) struct drm_device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) struct drm_atomic_state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) struct drm_plane;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) static inline bool drm_rotation_90_or_270(unsigned int rotation)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) return rotation & (DRM_MODE_ROTATE_90 | DRM_MODE_ROTATE_270);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define DRM_BLEND_ALPHA_OPAQUE 0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) int drm_plane_create_alpha_property(struct drm_plane *plane);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) int drm_plane_create_rotation_property(struct drm_plane *plane,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) unsigned int rotation,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) unsigned int supported_rotations);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) unsigned int drm_rotation_simplify(unsigned int rotation,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) unsigned int supported_rotations);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) int drm_plane_create_zpos_property(struct drm_plane *plane,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) unsigned int zpos,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) unsigned int min, unsigned int max);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) int drm_plane_create_zpos_immutable_property(struct drm_plane *plane,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) unsigned int zpos);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) int drm_atomic_normalize_zpos(struct drm_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) struct drm_atomic_state *state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) int drm_plane_create_blend_mode_property(struct drm_plane *plane,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) unsigned int supported_modes);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #endif