linux/include/drm/drm_plane_helper.h
<<
>>
Prefs
   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 <drm/drm_rect.h>
  28#include <drm/drm_crtc.h>
  29#include <drm/drm_modeset_helper_vtables.h>
  30#include <drm/drm_modeset_helper.h>
  31
  32/*
  33 * Drivers that don't allow primary plane scaling may pass this macro in place
  34 * of the min/max scale parameters of the update checker function.
  35 *
  36 * Due to src being in 16.16 fixed point and dest being in integer pixels,
  37 * 1<<16 represents no scaling.
  38 */
  39#define DRM_PLANE_HELPER_NO_SCALING (1<<16)
  40
  41int drm_plane_helper_check_state(struct drm_plane_state *state,
  42                                 const struct drm_rect *clip,
  43                                 int min_scale, int max_scale,
  44                                 bool can_position,
  45                                 bool can_update_disabled);
  46int drm_plane_helper_check_update(struct drm_plane *plane,
  47                                  struct drm_crtc *crtc,
  48                                  struct drm_framebuffer *fb,
  49                                  struct drm_rect *src,
  50                                  struct drm_rect *dest,
  51                                  const struct drm_rect *clip,
  52                                  unsigned int rotation,
  53                                  int min_scale,
  54                                  int max_scale,
  55                                  bool can_position,
  56                                  bool can_update_disabled,
  57                                  bool *visible);
  58int drm_primary_helper_update(struct drm_plane *plane,
  59                              struct drm_crtc *crtc,
  60                              struct drm_framebuffer *fb,
  61                              int crtc_x, int crtc_y,
  62                              unsigned int crtc_w, unsigned int crtc_h,
  63                              uint32_t src_x, uint32_t src_y,
  64                              uint32_t src_w, uint32_t src_h,
  65                              struct drm_modeset_acquire_ctx *ctx);
  66int drm_primary_helper_disable(struct drm_plane *plane,
  67                               struct drm_modeset_acquire_ctx *ctx);
  68void drm_primary_helper_destroy(struct drm_plane *plane);
  69extern const struct drm_plane_funcs drm_primary_helper_funcs;
  70
  71int drm_plane_helper_update(struct drm_plane *plane, struct drm_crtc *crtc,
  72                            struct drm_framebuffer *fb,
  73                            int crtc_x, int crtc_y,
  74                            unsigned int crtc_w, unsigned int crtc_h,
  75                            uint32_t src_x, uint32_t src_y,
  76                            uint32_t src_w, uint32_t src_h);
  77int drm_plane_helper_disable(struct drm_plane *plane);
  78
  79/* For use by drm_crtc_helper.c */
  80int drm_plane_helper_commit(struct drm_plane *plane,
  81                            struct drm_plane_state *plane_state,
  82                            struct drm_framebuffer *old_fb);
  83#endif
  84