Home | History | Annotate | Line # | Download | only in drm
      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