Lines Matching refs:plane_state
2072 static bool intel_plane_uses_fence(const struct intel_plane_state *plane_state) in intel_plane_uses_fence() argument
2074 struct intel_plane *plane = to_intel_plane(plane_state->base.plane); in intel_plane_uses_fence()
2750 struct intel_plane_state *plane_state, in intel_set_plane_visible() argument
2753 struct intel_plane *plane = to_intel_plane(plane_state->base.plane); in intel_set_plane_visible()
2755 plane_state->base.visible = visible; in intel_set_plane_visible()
2776 struct intel_plane_state *plane_state = in intel_plane_disable_noatomic() local
2779 intel_set_plane_visible(crtc_state, plane_state, false); in intel_plane_disable_noatomic()
2797 struct drm_plane_state *plane_state = primary->state; in intel_find_initial_plane_obj() local
2801 to_intel_plane_state(plane_state); in intel_find_initial_plane_obj()
2869 plane_state->src_x = 0; in intel_find_initial_plane_obj()
2870 plane_state->src_y = 0; in intel_find_initial_plane_obj()
2871 plane_state->src_w = fb->width << 16; in intel_find_initial_plane_obj()
2872 plane_state->src_h = fb->height << 16; in intel_find_initial_plane_obj()
2874 plane_state->crtc_x = 0; in intel_find_initial_plane_obj()
2875 plane_state->crtc_y = 0; in intel_find_initial_plane_obj()
2876 plane_state->crtc_w = fb->width; in intel_find_initial_plane_obj()
2877 plane_state->crtc_h = fb->height; in intel_find_initial_plane_obj()
2879 intel_state->base.src = drm_plane_state_src(plane_state); in intel_find_initial_plane_obj()
2880 intel_state->base.dst = drm_plane_state_dest(plane_state); in intel_find_initial_plane_obj()
2885 plane_state->fb = fb; in intel_find_initial_plane_obj()
2886 plane_state->crtc = &intel_crtc->base; in intel_find_initial_plane_obj()
2889 to_intel_plane_state(plane_state), in intel_find_initial_plane_obj()
2941 static bool skl_check_main_ccs_coordinates(struct intel_plane_state *plane_state, in skl_check_main_ccs_coordinates() argument
2944 const struct drm_framebuffer *fb = plane_state->base.fb; in skl_check_main_ccs_coordinates()
2947 int aux_x = plane_state->aux.x; in skl_check_main_ccs_coordinates()
2948 int aux_y = plane_state->aux.y; in skl_check_main_ccs_coordinates()
2949 u32 aux_offset = plane_state->aux.offset; in skl_check_main_ccs_coordinates()
2963 aux_offset = intel_adjust_tile_offset(&x, &y, plane_state, 1, in skl_check_main_ccs_coordinates()
2972 plane_state->aux.offset = aux_offset; in skl_check_main_ccs_coordinates()
2973 plane_state->aux.x = aux_x; in skl_check_main_ccs_coordinates()
2974 plane_state->aux.y = aux_y; in skl_check_main_ccs_coordinates()
2980 struct intel_plane_state *plane_state) in skl_check_main_surface() argument
2983 to_i915(plane_state->base.plane->dev); in skl_check_main_surface()
2984 const struct drm_framebuffer *fb = plane_state->base.fb; in skl_check_main_surface()
2985 unsigned int rotation = plane_state->base.rotation; in skl_check_main_surface()
2986 int x = plane_state->base.src.x1 >> 16; in skl_check_main_surface()
2987 int y = plane_state->base.src.y1 >> 16; in skl_check_main_surface()
2988 int w = drm_rect_width(&plane_state->base.src) >> 16; in skl_check_main_surface()
2989 int h = drm_rect_height(&plane_state->base.src) >> 16; in skl_check_main_surface()
2990 int dst_x = plane_state->base.dst.x1; in skl_check_main_surface()
2991 int dst_w = drm_rect_width(&plane_state->base.dst); in skl_check_main_surface()
2995 u32 alignment, offset, aux_offset = plane_state->aux.offset; in skl_check_main_surface()
3021 intel_add_fb_offsets(&x, &y, plane_state, 0); in skl_check_main_surface()
3022 offset = intel_compute_tile_offset(&x, &y, plane_state, 0); in skl_check_main_surface()
3031 offset = intel_adjust_tile_offset(&x, &y, plane_state, 0, in skl_check_main_surface()
3049 offset = intel_adjust_tile_offset(&x, &y, plane_state, 0, in skl_check_main_surface()
3060 while (!skl_check_main_ccs_coordinates(plane_state, x, y, offset)) { in skl_check_main_surface()
3064 offset = intel_adjust_tile_offset(&x, &y, plane_state, 0, in skl_check_main_surface()
3068 if (x != plane_state->aux.x || y != plane_state->aux.y) { in skl_check_main_surface()
3074 plane_state->main.offset = offset; in skl_check_main_surface()
3075 plane_state->main.x = x; in skl_check_main_surface()
3076 plane_state->main.y = y; in skl_check_main_surface()
3083 struct intel_plane_state *plane_state) in skl_check_nv12_surface() argument
3086 if (plane_state->base.rotation != in skl_check_nv12_surface()
3088 plane_state->base.rotation != DRM_MODE_ROTATE_270) in skl_check_nv12_surface()
3095 if (((drm_rect_height(&plane_state->base.src) >> 16) % 4) != 0) { in skl_check_nv12_surface()
3104 static int skl_check_nv12_aux_surface(struct intel_plane_state *plane_state) in skl_check_nv12_aux_surface() argument
3106 const struct drm_framebuffer *fb = plane_state->base.fb; in skl_check_nv12_aux_surface()
3107 unsigned int rotation = plane_state->base.rotation; in skl_check_nv12_aux_surface()
3110 int x = plane_state->base.src.x1 >> 17; in skl_check_nv12_aux_surface()
3111 int y = plane_state->base.src.y1 >> 17; in skl_check_nv12_aux_surface()
3112 int w = drm_rect_width(&plane_state->base.src) >> 17; in skl_check_nv12_aux_surface()
3113 int h = drm_rect_height(&plane_state->base.src) >> 17; in skl_check_nv12_aux_surface()
3116 intel_add_fb_offsets(&x, &y, plane_state, 1); in skl_check_nv12_aux_surface()
3117 offset = intel_compute_tile_offset(&x, &y, plane_state, 1); in skl_check_nv12_aux_surface()
3126 plane_state->aux.offset = offset; in skl_check_nv12_aux_surface()
3127 plane_state->aux.x = x; in skl_check_nv12_aux_surface()
3128 plane_state->aux.y = y; in skl_check_nv12_aux_surface()
3133 static int skl_check_ccs_aux_surface(struct intel_plane_state *plane_state) in skl_check_ccs_aux_surface() argument
3135 const struct drm_framebuffer *fb = plane_state->base.fb; in skl_check_ccs_aux_surface()
3136 int src_x = plane_state->base.src.x1 >> 16; in skl_check_ccs_aux_surface()
3137 int src_y = plane_state->base.src.y1 >> 16; in skl_check_ccs_aux_surface()
3144 if (plane_state->base.rotation & ~(DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_180)) { in skl_check_ccs_aux_surface()
3146 plane_state->base.rotation); in skl_check_ccs_aux_surface()
3150 intel_add_fb_offsets(&x, &y, plane_state, 1); in skl_check_ccs_aux_surface()
3151 offset = intel_compute_tile_offset(&x, &y, plane_state, 1); in skl_check_ccs_aux_surface()
3153 plane_state->aux.offset = offset; in skl_check_ccs_aux_surface()
3154 plane_state->aux.x = x * hsub + src_x % hsub; in skl_check_ccs_aux_surface()
3155 plane_state->aux.y = y * vsub + src_y % vsub; in skl_check_ccs_aux_surface()
3161 struct intel_plane_state *plane_state) in skl_check_plane_surface() argument
3163 const struct drm_framebuffer *fb = plane_state->base.fb; in skl_check_plane_surface()
3164 unsigned int rotation = plane_state->base.rotation; in skl_check_plane_surface()
3173 if (!plane_state->base.visible) in skl_check_plane_surface()
3178 drm_rect_rotate(&plane_state->base.src, in skl_check_plane_surface()
3187 ret = skl_check_nv12_surface(crtc_state, plane_state); in skl_check_plane_surface()
3190 ret = skl_check_nv12_aux_surface(plane_state); in skl_check_plane_surface()
3195 ret = skl_check_ccs_aux_surface(plane_state); in skl_check_plane_surface()
3199 plane_state->aux.offset = ~0xfff; in skl_check_plane_surface()
3200 plane_state->aux.x = 0; in skl_check_plane_surface()
3201 plane_state->aux.y = 0; in skl_check_plane_surface()
3204 ret = skl_check_main_surface(crtc_state, plane_state); in skl_check_plane_surface()
3212 const struct intel_plane_state *plane_state) in i9xx_plane_ctl() argument
3215 to_i915(plane_state->base.plane->dev); in i9xx_plane_ctl()
3217 const struct drm_framebuffer *fb = plane_state->base.fb; in i9xx_plane_ctl()
3218 unsigned int rotation = plane_state->base.rotation; in i9xx_plane_ctl()
3273 int i9xx_check_plane_surface(struct intel_plane_state *plane_state) in i9xx_check_plane_surface() argument
3276 to_i915(plane_state->base.plane->dev); in i9xx_check_plane_surface()
3277 int src_x = plane_state->base.src.x1 >> 16; in i9xx_check_plane_surface()
3278 int src_y = plane_state->base.src.y1 >> 16; in i9xx_check_plane_surface()
3281 intel_add_fb_offsets(&src_x, &src_y, plane_state, 0); in i9xx_check_plane_surface()
3285 plane_state, 0); in i9xx_check_plane_surface()
3291 unsigned int rotation = plane_state->base.rotation; in i9xx_check_plane_surface()
3292 int src_w = drm_rect_width(&plane_state->base.src) >> 16; in i9xx_check_plane_surface()
3293 int src_h = drm_rect_height(&plane_state->base.src) >> 16; in i9xx_check_plane_surface()
3303 plane_state->main.offset = offset; in i9xx_check_plane_surface()
3304 plane_state->main.x = src_x; in i9xx_check_plane_surface()
3305 plane_state->main.y = src_y; in i9xx_check_plane_surface()
3312 const struct intel_plane_state *plane_state) in i9xx_update_plane() argument
3315 const struct drm_framebuffer *fb = plane_state->base.fb; in i9xx_update_plane()
3318 u32 dspcntr = plane_state->ctl; in i9xx_update_plane()
3320 int x = plane_state->main.x; in i9xx_update_plane()
3321 int y = plane_state->main.y; in i9xx_update_plane()
3325 linear_offset = intel_fb_xy_to_linear(x, y, plane_state, 0); in i9xx_update_plane()
3328 dspaddr_offset = plane_state->main.offset; in i9xx_update_plane()
3355 intel_plane_ggtt_offset(plane_state) + in i9xx_update_plane()
3360 intel_plane_ggtt_offset(plane_state) + in i9xx_update_plane()
3366 intel_plane_ggtt_offset(plane_state) + in i9xx_update_plane()
3605 const struct intel_plane_state *plane_state) in skl_plane_ctl() argument
3608 to_i915(plane_state->base.plane->dev); in skl_plane_ctl()
3609 const struct drm_framebuffer *fb = plane_state->base.fb; in skl_plane_ctl()
3610 unsigned int rotation = plane_state->base.rotation; in skl_plane_ctl()
3611 const struct drm_intel_sprite_colorkey *key = &plane_state->ckey; in skl_plane_ctl()
3623 if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709) in skl_plane_ctl()
3626 if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE) in skl_plane_ctl()
3647 const struct intel_plane_state *plane_state) in glk_plane_color_ctl() argument
3650 to_i915(plane_state->base.plane->dev); in glk_plane_color_ctl()
3651 const struct drm_framebuffer *fb = plane_state->base.fb; in glk_plane_color_ctl()
3662 if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709) in glk_plane_color_ctl()
3667 if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE) in glk_plane_color_ctl()
4915 struct intel_plane_state *plane_state) in skl_update_scaler_plane() argument
4919 to_intel_plane(plane_state->base.plane); in skl_update_scaler_plane()
4920 struct drm_framebuffer *fb = plane_state->base.fb; in skl_update_scaler_plane()
4923 bool force_detach = !fb || !plane_state->base.visible; in skl_update_scaler_plane()
4927 &plane_state->scaler_id, in skl_update_scaler_plane()
4928 drm_rect_width(&plane_state->base.src) >> 16, in skl_update_scaler_plane()
4929 drm_rect_height(&plane_state->base.src) >> 16, in skl_update_scaler_plane()
4930 drm_rect_width(&plane_state->base.dst), in skl_update_scaler_plane()
4931 drm_rect_height(&plane_state->base.dst), in skl_update_scaler_plane()
4934 if (ret || plane_state->scaler_id < 0) in skl_update_scaler_plane()
4938 if (plane_state->ckey.flags) { in skl_update_scaler_plane()
6183 const struct intel_plane_state *plane_state = in intel_crtc_disable_noatomic() local
6186 if (plane_state->base.visible) in intel_crtc_disable_noatomic()
9580 static u32 intel_cursor_base(const struct intel_plane_state *plane_state) in intel_cursor_base() argument
9583 to_i915(plane_state->base.plane->dev); in intel_cursor_base()
9584 const struct drm_framebuffer *fb = plane_state->base.fb; in intel_cursor_base()
9591 base = intel_plane_ggtt_offset(plane_state); in intel_cursor_base()
9593 base += plane_state->main.offset; in intel_cursor_base()
9597 plane_state->base.rotation & DRM_MODE_ROTATE_180) in intel_cursor_base()
9598 base += (plane_state->base.crtc_h * in intel_cursor_base()
9599 plane_state->base.crtc_w - 1) * fb->format->cpp[0]; in intel_cursor_base()
9604 static u32 intel_cursor_position(const struct intel_plane_state *plane_state) in intel_cursor_position() argument
9606 int x = plane_state->base.crtc_x; in intel_cursor_position()
9607 int y = plane_state->base.crtc_y; in intel_cursor_position()
9625 static bool intel_cursor_size_ok(const struct intel_plane_state *plane_state) in intel_cursor_size_ok() argument
9628 &plane_state->base.plane->dev->mode_config; in intel_cursor_size_ok()
9629 int width = plane_state->base.crtc_w; in intel_cursor_size_ok()
9630 int height = plane_state->base.crtc_h; in intel_cursor_size_ok()
9637 struct intel_plane_state *plane_state) in intel_check_cursor() argument
9639 const struct drm_framebuffer *fb = plane_state->base.fb; in intel_check_cursor()
9644 ret = drm_atomic_helper_check_plane_state(&plane_state->base, in intel_check_cursor()
9660 src_x = plane_state->base.src_x >> 16; in intel_check_cursor()
9661 src_y = plane_state->base.src_y >> 16; in intel_check_cursor()
9663 intel_add_fb_offsets(&src_x, &src_y, plane_state, 0); in intel_check_cursor()
9664 offset = intel_compute_tile_offset(&src_x, &src_y, plane_state, 0); in intel_check_cursor()
9671 plane_state->main.offset = offset; in intel_check_cursor()
9677 const struct intel_plane_state *plane_state) in i845_cursor_ctl() argument
9679 const struct drm_framebuffer *fb = plane_state->base.fb; in i845_cursor_ctl()
9687 static bool i845_cursor_size_ok(const struct intel_plane_state *plane_state) in i845_cursor_size_ok() argument
9689 int width = plane_state->base.crtc_w; in i845_cursor_size_ok()
9695 return intel_cursor_size_ok(plane_state) && IS_ALIGNED(width, 64); in i845_cursor_size_ok()
9700 struct intel_plane_state *plane_state) in i845_check_cursor() argument
9702 const struct drm_framebuffer *fb = plane_state->base.fb; in i845_check_cursor()
9705 ret = intel_check_cursor(crtc_state, plane_state); in i845_check_cursor()
9714 if (!i845_cursor_size_ok(plane_state)) { in i845_check_cursor()
9716 plane_state->base.crtc_w, in i845_check_cursor()
9717 plane_state->base.crtc_h); in i845_check_cursor()
9733 plane_state->ctl = i845_cursor_ctl(crtc_state, plane_state); in i845_check_cursor()
9740 const struct intel_plane_state *plane_state) in i845_update_cursor() argument
9746 if (plane_state && plane_state->base.visible) { in i845_update_cursor()
9747 unsigned int width = plane_state->base.crtc_w; in i845_update_cursor()
9748 unsigned int height = plane_state->base.crtc_h; in i845_update_cursor()
9750 cntl = plane_state->ctl; in i845_update_cursor()
9753 base = intel_cursor_base(plane_state); in i845_update_cursor()
9754 pos = intel_cursor_position(plane_state); in i845_update_cursor()
9810 const struct intel_plane_state *plane_state) in i9xx_cursor_ctl() argument
9813 to_i915(plane_state->base.plane->dev); in i9xx_cursor_ctl()
9830 switch (plane_state->base.crtc_w) { in i9xx_cursor_ctl()
9841 MISSING_CASE(plane_state->base.crtc_w); in i9xx_cursor_ctl()
9845 if (plane_state->base.rotation & DRM_MODE_ROTATE_180) in i9xx_cursor_ctl()
9851 static bool i9xx_cursor_size_ok(const struct intel_plane_state *plane_state) in i9xx_cursor_size_ok() argument
9854 to_i915(plane_state->base.plane->dev); in i9xx_cursor_size_ok()
9855 int width = plane_state->base.crtc_w; in i9xx_cursor_size_ok()
9856 int height = plane_state->base.crtc_h; in i9xx_cursor_size_ok()
9858 if (!intel_cursor_size_ok(plane_state)) in i9xx_cursor_size_ok()
9878 plane_state->base.rotation & DRM_MODE_ROTATE_0) { in i9xx_cursor_size_ok()
9891 struct intel_plane_state *plane_state) in i9xx_check_cursor() argument
9894 const struct drm_framebuffer *fb = plane_state->base.fb; in i9xx_check_cursor()
9898 ret = intel_check_cursor(crtc_state, plane_state); in i9xx_check_cursor()
9907 if (!i9xx_cursor_size_ok(plane_state)) { in i9xx_check_cursor()
9909 plane_state->base.crtc_w, in i9xx_check_cursor()
9910 plane_state->base.crtc_h); in i9xx_check_cursor()
9914 if (fb->pitches[0] != plane_state->base.crtc_w * fb->format->cpp[0]) { in i9xx_check_cursor()
9916 fb->pitches[0], plane_state->base.crtc_w); in i9xx_check_cursor()
9931 plane_state->base.visible && plane_state->base.crtc_x < 0) { in i9xx_check_cursor()
9936 plane_state->ctl = i9xx_cursor_ctl(crtc_state, plane_state); in i9xx_check_cursor()
9943 const struct intel_plane_state *plane_state) in i9xx_update_cursor() argument
9950 if (plane_state && plane_state->base.visible) { in i9xx_update_cursor()
9951 cntl = plane_state->ctl; in i9xx_update_cursor()
9953 if (plane_state->base.crtc_h != plane_state->base.crtc_w) in i9xx_update_cursor()
9954 fbc_ctl = CUR_FBC_CTL_EN | (plane_state->base.crtc_h - 1); in i9xx_update_cursor()
9956 base = intel_cursor_base(plane_state); in i9xx_update_cursor()
9957 pos = intel_cursor_position(plane_state); in i9xx_update_cursor()
10072 struct drm_plane_state *plane_state; in intel_modeset_disable_planes() local
10079 for_each_new_plane_in_state(state, plane, plane_state, i) { in intel_modeset_disable_planes()
10080 if (plane_state->crtc != crtc) in intel_modeset_disable_planes()
10083 ret = drm_atomic_set_crtc_for_plane(plane_state, NULL); in intel_modeset_disable_planes()
10087 drm_atomic_set_fb_for_plane(plane_state, NULL); in intel_modeset_disable_planes()
10514 struct drm_plane_state *plane_state) in intel_plane_atomic_calc_changes() argument
10519 struct intel_plane *plane = to_intel_plane(plane_state->plane); in intel_plane_atomic_calc_changes()
10526 struct drm_framebuffer *fb = plane_state->fb; in intel_plane_atomic_calc_changes()
10532 to_intel_plane_state(plane_state)); in intel_plane_atomic_calc_changes()
10538 visible = plane_state->visible; in intel_plane_atomic_calc_changes()
10554 plane_state->visible = visible = false; in intel_plane_atomic_calc_changes()
10591 } else if (intel_wm_need_update(&plane->base, plane_state)) { in intel_plane_atomic_calc_changes()
10609 needs_scaling(to_intel_plane_state(plane_state)) && in intel_plane_atomic_calc_changes()
11891 const struct intel_plane_state *plane_state; in intel_verify_planes() local
11895 plane_state, i) in intel_verify_planes()
11896 assert_plane(plane, plane_state->base.visible); in intel_verify_planes()
12963 static int intel_plane_pin_fb(struct intel_plane_state *plane_state) in intel_plane_pin_fb() argument
12965 struct intel_plane *plane = to_intel_plane(plane_state->base.plane); in intel_plane_pin_fb()
12967 struct drm_framebuffer *fb = plane_state->base.fb; in intel_plane_pin_fb()
12979 plane_state->base.rotation, in intel_plane_pin_fb()
12980 intel_plane_uses_fence(plane_state), in intel_plane_pin_fb()
12981 &plane_state->flags); in intel_plane_pin_fb()
12985 plane_state->vma = vma; in intel_plane_pin_fb()
15453 const struct intel_plane_state *plane_state = in intel_sanitize_crtc() local
15456 if (plane_state->base.visible && in intel_sanitize_crtc()
15576 struct intel_plane_state *plane_state = in readout_plane_state() local
15583 intel_set_plane_visible(crtc_state, plane_state, visible); in readout_plane_state()