cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

intel_fb.h (3543B)


      1/* SPDX-License-Identifier: MIT */
      2/*
      3 * Copyright © 2020-2021 Intel Corporation
      4 */
      5
      6#ifndef __INTEL_FB_H__
      7#define __INTEL_FB_H__
      8
      9#include <linux/bits.h>
     10#include <linux/types.h>
     11
     12struct drm_device;
     13struct drm_file;
     14struct drm_framebuffer;
     15struct drm_i915_gem_object;
     16struct drm_i915_private;
     17struct drm_mode_fb_cmd2;
     18struct intel_fb_view;
     19struct intel_framebuffer;
     20struct intel_plane;
     21struct intel_plane_state;
     22
     23#define INTEL_PLANE_CAP_NONE		0
     24#define INTEL_PLANE_CAP_CCS_RC		BIT(0)
     25#define INTEL_PLANE_CAP_CCS_RC_CC	BIT(1)
     26#define INTEL_PLANE_CAP_CCS_MC		BIT(2)
     27#define INTEL_PLANE_CAP_TILING_X	BIT(3)
     28#define INTEL_PLANE_CAP_TILING_Y	BIT(4)
     29#define INTEL_PLANE_CAP_TILING_Yf	BIT(5)
     30#define INTEL_PLANE_CAP_TILING_4	BIT(6)
     31
     32bool intel_fb_is_ccs_modifier(u64 modifier);
     33bool intel_fb_is_rc_ccs_cc_modifier(u64 modifier);
     34bool intel_fb_is_mc_ccs_modifier(u64 modifier);
     35
     36bool intel_fb_is_ccs_aux_plane(const struct drm_framebuffer *fb, int color_plane);
     37int intel_fb_rc_ccs_cc_plane(const struct drm_framebuffer *fb);
     38
     39u64 *intel_fb_plane_get_modifiers(struct drm_i915_private *i915,
     40				  u8 plane_caps);
     41bool intel_fb_plane_supports_modifier(struct intel_plane *plane, u64 modifier);
     42
     43const struct drm_format_info *
     44intel_fb_get_format_info(const struct drm_mode_fb_cmd2 *cmd);
     45
     46bool
     47intel_format_info_is_yuv_semiplanar(const struct drm_format_info *info,
     48				    u64 modifier);
     49
     50bool is_surface_linear(const struct drm_framebuffer *fb, int color_plane);
     51
     52int main_to_ccs_plane(const struct drm_framebuffer *fb, int main_plane);
     53int skl_ccs_to_main_plane(const struct drm_framebuffer *fb, int ccs_plane);
     54int skl_main_to_aux_plane(const struct drm_framebuffer *fb, int main_plane);
     55
     56unsigned int intel_tile_size(const struct drm_i915_private *i915);
     57unsigned int intel_tile_width_bytes(const struct drm_framebuffer *fb, int color_plane);
     58unsigned int intel_tile_height(const struct drm_framebuffer *fb, int color_plane);
     59unsigned int intel_tile_row_size(const struct drm_framebuffer *fb, int color_plane);
     60unsigned int intel_fb_align_height(const struct drm_framebuffer *fb,
     61				   int color_plane, unsigned int height);
     62unsigned int intel_cursor_alignment(const struct drm_i915_private *i915);
     63unsigned int intel_surf_alignment(const struct drm_framebuffer *fb,
     64				  int color_plane);
     65
     66void intel_fb_plane_get_subsampling(int *hsub, int *vsub,
     67				    const struct drm_framebuffer *fb,
     68				    int color_plane);
     69
     70u32 intel_plane_adjust_aligned_offset(int *x, int *y,
     71				      const struct intel_plane_state *state,
     72				      int color_plane,
     73				      u32 old_offset, u32 new_offset);
     74u32 intel_plane_compute_aligned_offset(int *x, int *y,
     75				       const struct intel_plane_state *state,
     76				       int color_plane);
     77
     78bool intel_fb_needs_pot_stride_remap(const struct intel_framebuffer *fb);
     79bool intel_fb_supports_90_270_rotation(const struct intel_framebuffer *fb);
     80
     81int intel_fill_fb_info(struct drm_i915_private *i915, struct intel_framebuffer *fb);
     82void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotation,
     83			struct intel_fb_view *view);
     84int intel_plane_compute_gtt(struct intel_plane_state *plane_state);
     85
     86int intel_framebuffer_init(struct intel_framebuffer *ifb,
     87			   struct drm_i915_gem_object *obj,
     88			   struct drm_mode_fb_cmd2 *mode_cmd);
     89struct drm_framebuffer *
     90intel_user_framebuffer_create(struct drm_device *dev,
     91			      struct drm_file *filp,
     92			      const struct drm_mode_fb_cmd2 *user_mode_cmd);
     93
     94bool intel_fb_uses_dpt(const struct drm_framebuffer *fb);
     95
     96#endif /* __INTEL_FB_H__ */