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