LCOV - code coverage report
Current view: top level - dev/pci/drm - drm_plane_helper.h (source / functions) Hit Total Coverage
Test: 6.4 Lines: 0 3 0.0 %
Date: 2018-10-19 03:25:38 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (C) 2011-2013 Intel Corporation
       3             :  *
       4             :  * Permission is hereby granted, free of charge, to any person obtaining a
       5             :  * copy of this software and associated documentation files (the "Software"),
       6             :  * to deal in the Software without restriction, including without limitation
       7             :  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
       8             :  * and/or sell copies of the Software, and to permit persons to whom the
       9             :  * Software is furnished to do so, subject to the following conditions:
      10             :  *
      11             :  * The above copyright notice and this permission notice (including the next
      12             :  * paragraph) shall be included in all copies or substantial portions of the
      13             :  * Software.
      14             :  *
      15             :  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      16             :  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      17             :  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
      18             :  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      19             :  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      20             :  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      21             :  * SOFTWARE.
      22             :  */
      23             : 
      24             : #ifndef DRM_PLANE_HELPER_H
      25             : #define DRM_PLANE_HELPER_H
      26             : 
      27             : #include <dev/pci/drm/drm_rect.h>
      28             : #include <dev/pci/drm/drm_crtc.h>
      29             : 
      30             : /*
      31             :  * Drivers that don't allow primary plane scaling may pass this macro in place
      32             :  * of the min/max scale parameters of the update checker function.
      33             :  *
      34             :  * Due to src being in 16.16 fixed point and dest being in integer pixels,
      35             :  * 1<<16 represents no scaling.
      36             :  */
      37             : #define DRM_PLANE_HELPER_NO_SCALING (1<<16)
      38             : 
      39             : /**
      40             :  * DOC: plane helpers
      41             :  *
      42             :  * Helper functions to assist with creation and handling of CRTC primary
      43             :  * planes.
      44             :  */
      45             : 
      46             : int drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc,
      47             :                   const struct drm_crtc_funcs *funcs);
      48             : 
      49             : /**
      50             :  * drm_plane_helper_funcs - helper operations for CRTCs
      51             :  * @prepare_fb: prepare a framebuffer for use by the plane
      52             :  * @cleanup_fb: cleanup a framebuffer when it's no longer used by the plane
      53             :  * @atomic_check: check that a given atomic state is valid and can be applied
      54             :  * @atomic_update: apply an atomic state to the plane (mandatory)
      55             :  * @atomic_disable: disable the plane
      56             :  *
      57             :  * The helper operations are called by the mid-layer CRTC helper.
      58             :  */
      59             : struct drm_plane_helper_funcs {
      60             :         int (*prepare_fb)(struct drm_plane *plane,
      61             :                           const struct drm_plane_state *new_state);
      62             :         void (*cleanup_fb)(struct drm_plane *plane,
      63             :                            const struct drm_plane_state *old_state);
      64             : 
      65             :         int (*atomic_check)(struct drm_plane *plane,
      66             :                             struct drm_plane_state *state);
      67             :         void (*atomic_update)(struct drm_plane *plane,
      68             :                               struct drm_plane_state *old_state);
      69             :         void (*atomic_disable)(struct drm_plane *plane,
      70             :                                struct drm_plane_state *old_state);
      71             : };
      72             : 
      73           0 : static inline void drm_plane_helper_add(struct drm_plane *plane,
      74             :                                         const struct drm_plane_helper_funcs *funcs)
      75             : {
      76           0 :         plane->helper_private = funcs;
      77           0 : }
      78             : 
      79             : int drm_plane_helper_check_update(struct drm_plane *plane,
      80             :                                   struct drm_crtc *crtc,
      81             :                                   struct drm_framebuffer *fb,
      82             :                                   struct drm_rect *src,
      83             :                                   struct drm_rect *dest,
      84             :                                   const struct drm_rect *clip,
      85             :                                   int min_scale,
      86             :                                   int max_scale,
      87             :                                   bool can_position,
      88             :                                   bool can_update_disabled,
      89             :                                   bool *visible);
      90             : int drm_primary_helper_update(struct drm_plane *plane,
      91             :                               struct drm_crtc *crtc,
      92             :                               struct drm_framebuffer *fb,
      93             :                               int crtc_x, int crtc_y,
      94             :                               unsigned int crtc_w, unsigned int crtc_h,
      95             :                               uint32_t src_x, uint32_t src_y,
      96             :                               uint32_t src_w, uint32_t src_h);
      97             : int drm_primary_helper_disable(struct drm_plane *plane);
      98             : void drm_primary_helper_destroy(struct drm_plane *plane);
      99             : extern const struct drm_plane_funcs drm_primary_helper_funcs;
     100             : 
     101             : int drm_plane_helper_update(struct drm_plane *plane, struct drm_crtc *crtc,
     102             :                             struct drm_framebuffer *fb,
     103             :                             int crtc_x, int crtc_y,
     104             :                             unsigned int crtc_w, unsigned int crtc_h,
     105             :                             uint32_t src_x, uint32_t src_y,
     106             :                             uint32_t src_w, uint32_t src_h);
     107             : int drm_plane_helper_disable(struct drm_plane *plane);
     108             : 
     109             : /* For use by drm_crtc_helper.c */
     110             : int drm_plane_helper_commit(struct drm_plane *plane,
     111             :                             struct drm_plane_state *plane_state,
     112             :                             struct drm_framebuffer *old_fb);
     113             : #endif

Generated by: LCOV version 1.13