Lines Matching refs:fb
507 bool intel_fb_is_ccs_aux_plane(const struct drm_framebuffer *fb, int color_plane) in intel_fb_is_ccs_aux_plane() argument
509 const struct intel_modifier_desc *md = lookup_modifier(fb->modifier); in intel_fb_is_ccs_aux_plane()
511 return ccs_aux_plane_mask(md, fb->format) & BIT(color_plane); in intel_fb_is_ccs_aux_plane()
522 static bool intel_fb_is_gen12_ccs_aux_plane(const struct drm_framebuffer *fb, int color_plane) in intel_fb_is_gen12_ccs_aux_plane() argument
524 const struct intel_modifier_desc *md = lookup_modifier(fb->modifier); in intel_fb_is_gen12_ccs_aux_plane()
527 ccs_aux_plane_mask(md, fb->format) & BIT(color_plane); in intel_fb_is_gen12_ccs_aux_plane()
538 int intel_fb_rc_ccs_cc_plane(const struct drm_framebuffer *fb) in intel_fb_rc_ccs_cc_plane() argument
540 const struct intel_modifier_desc *md = lookup_modifier(fb->modifier); in intel_fb_rc_ccs_cc_plane()
545 drm_WARN_ON_ONCE(fb->dev, hweight8(md->ccs.cc_planes) > 1); in intel_fb_rc_ccs_cc_plane()
550 static bool is_gen12_ccs_cc_plane(const struct drm_framebuffer *fb, int color_plane) in is_gen12_ccs_cc_plane() argument
552 return intel_fb_rc_ccs_cc_plane(fb) == color_plane; in is_gen12_ccs_cc_plane()
555 static bool is_semiplanar_uv_plane(const struct drm_framebuffer *fb, int color_plane) in is_semiplanar_uv_plane() argument
557 return intel_format_info_is_yuv_semiplanar(fb->format, fb->modifier) && in is_semiplanar_uv_plane()
561 bool is_surface_linear(const struct drm_framebuffer *fb, int color_plane) in is_surface_linear() argument
563 return fb->modifier == DRM_FORMAT_MOD_LINEAR || in is_surface_linear()
564 intel_fb_is_gen12_ccs_aux_plane(fb, color_plane) || in is_surface_linear()
565 is_gen12_ccs_cc_plane(fb, color_plane); in is_surface_linear()
568 int main_to_ccs_plane(const struct drm_framebuffer *fb, int main_plane) in main_to_ccs_plane() argument
570 drm_WARN_ON(fb->dev, !intel_fb_is_ccs_modifier(fb->modifier) || in main_to_ccs_plane()
571 (main_plane && main_plane >= fb->format->num_planes / 2)); in main_to_ccs_plane()
573 return fb->format->num_planes / 2 + main_plane; in main_to_ccs_plane()
576 int skl_ccs_to_main_plane(const struct drm_framebuffer *fb, int ccs_plane) in skl_ccs_to_main_plane() argument
578 drm_WARN_ON(fb->dev, !intel_fb_is_ccs_modifier(fb->modifier) || in skl_ccs_to_main_plane()
579 ccs_plane < fb->format->num_planes / 2); in skl_ccs_to_main_plane()
581 if (is_gen12_ccs_cc_plane(fb, ccs_plane)) in skl_ccs_to_main_plane()
584 return ccs_plane - fb->format->num_planes / 2; in skl_ccs_to_main_plane()
587 static unsigned int gen12_ccs_aux_stride(struct intel_framebuffer *fb, int ccs_plane) in gen12_ccs_aux_stride() argument
589 int main_plane = skl_ccs_to_main_plane(&fb->base, ccs_plane); in gen12_ccs_aux_stride()
590 unsigned int main_stride = fb->base.pitches[main_plane]; in gen12_ccs_aux_stride()
591 unsigned int main_tile_width = intel_tile_width_bytes(&fb->base, main_plane); in gen12_ccs_aux_stride()
596 int skl_main_to_aux_plane(const struct drm_framebuffer *fb, int main_plane) in skl_main_to_aux_plane() argument
598 const struct intel_modifier_desc *md = lookup_modifier(fb->modifier); in skl_main_to_aux_plane()
599 struct drm_i915_private *i915 = to_i915(fb->dev); in skl_main_to_aux_plane()
602 return main_to_ccs_plane(fb, main_plane); in skl_main_to_aux_plane()
604 format_is_yuv_semiplanar(md, fb->format)) in skl_main_to_aux_plane()
616 intel_tile_width_bytes(const struct drm_framebuffer *fb, int color_plane) in intel_tile_width_bytes() argument
618 struct drm_i915_private *dev_priv = to_i915(fb->dev); in intel_tile_width_bytes()
619 unsigned int cpp = fb->format->cpp[color_plane]; in intel_tile_width_bytes()
621 switch (fb->modifier) { in intel_tile_width_bytes()
639 if (intel_fb_is_ccs_aux_plane(fb, color_plane)) in intel_tile_width_bytes()
648 if (intel_fb_is_ccs_aux_plane(fb, color_plane) || in intel_tile_width_bytes()
649 is_gen12_ccs_cc_plane(fb, color_plane)) in intel_tile_width_bytes()
658 if (intel_fb_is_ccs_aux_plane(fb, color_plane)) in intel_tile_width_bytes()
677 MISSING_CASE(fb->modifier); in intel_tile_width_bytes()
682 unsigned int intel_tile_height(const struct drm_framebuffer *fb, int color_plane) in intel_tile_height() argument
684 return intel_tile_size(to_i915(fb->dev)) / in intel_tile_height()
685 intel_tile_width_bytes(fb, color_plane); in intel_tile_height()
692 static void intel_tile_dims(const struct drm_framebuffer *fb, int color_plane, in intel_tile_dims() argument
696 unsigned int tile_width_bytes = intel_tile_width_bytes(fb, color_plane); in intel_tile_dims()
697 unsigned int cpp = fb->format->cpp[color_plane]; in intel_tile_dims()
700 *tile_height = intel_tile_height(fb, color_plane); in intel_tile_dims()
708 static void intel_tile_block_dims(const struct drm_framebuffer *fb, int color_plane, in intel_tile_block_dims() argument
712 intel_tile_dims(fb, color_plane, tile_width, tile_height); in intel_tile_block_dims()
714 if (intel_fb_is_gen12_ccs_aux_plane(fb, color_plane)) in intel_tile_block_dims()
718 unsigned int intel_tile_row_size(const struct drm_framebuffer *fb, int color_plane) in intel_tile_row_size() argument
722 intel_tile_dims(fb, color_plane, &tile_width, &tile_height); in intel_tile_row_size()
724 return fb->pitches[color_plane] * tile_height; in intel_tile_row_size()
728 intel_fb_align_height(const struct drm_framebuffer *fb, in intel_fb_align_height() argument
731 unsigned int tile_height = intel_tile_height(fb, color_plane); in intel_fb_align_height()
761 bool intel_fb_uses_dpt(const struct drm_framebuffer *fb) in intel_fb_uses_dpt() argument
763 return fb && to_i915(fb->dev)->params.enable_dpt && in intel_fb_uses_dpt()
764 intel_fb_modifier_uses_dpt(to_i915(fb->dev), fb->modifier); in intel_fb_uses_dpt()
792 unsigned int intel_surf_alignment(const struct drm_framebuffer *fb, in intel_surf_alignment() argument
795 struct drm_i915_private *dev_priv = to_i915(fb->dev); in intel_surf_alignment()
797 if (intel_fb_uses_dpt(fb)) in intel_surf_alignment()
801 if (intel_fb_is_ccs_aux_plane(fb, color_plane)) in intel_surf_alignment()
804 if (is_semiplanar_uv_plane(fb, color_plane)) { in intel_surf_alignment()
810 if (fb->modifier == DRM_FORMAT_MOD_LINEAR) in intel_surf_alignment()
813 return intel_tile_row_size(fb, color_plane); in intel_surf_alignment()
821 switch (fb->modifier) { in intel_surf_alignment()
846 MISSING_CASE(fb->modifier); in intel_surf_alignment()
852 const struct drm_framebuffer *fb, in intel_fb_plane_get_subsampling() argument
868 if (!intel_fb_is_gen12_ccs_aux_plane(fb, color_plane)) { in intel_fb_plane_get_subsampling()
869 *hsub = fb->format->hsub; in intel_fb_plane_get_subsampling()
870 *vsub = fb->format->vsub; in intel_fb_plane_get_subsampling()
875 main_plane = skl_ccs_to_main_plane(fb, color_plane); in intel_fb_plane_get_subsampling()
876 *hsub = drm_format_info_block_width(fb->format, color_plane) / in intel_fb_plane_get_subsampling()
877 drm_format_info_block_width(fb->format, main_plane); in intel_fb_plane_get_subsampling()
888 *hsub *= fb->format->hsub; in intel_fb_plane_get_subsampling()
893 static void intel_fb_plane_dims(const struct intel_framebuffer *fb, int color_plane, int *w, int *h) in intel_fb_plane_dims() argument
895 int main_plane = intel_fb_is_ccs_aux_plane(&fb->base, color_plane) ? in intel_fb_plane_dims()
896 skl_ccs_to_main_plane(&fb->base, color_plane) : 0; in intel_fb_plane_dims()
897 unsigned int main_width = fb->base.width; in intel_fb_plane_dims()
898 unsigned int main_height = fb->base.height; in intel_fb_plane_dims()
902 intel_fb_plane_get_subsampling(&main_hsub, &main_vsub, &fb->base, main_plane); in intel_fb_plane_dims()
903 intel_fb_plane_get_subsampling(&hsub, &vsub, &fb->base, color_plane); in intel_fb_plane_dims()
951 const struct drm_framebuffer *fb, in intel_adjust_aligned_offset() argument
957 struct drm_i915_private *i915 = to_i915(fb->dev); in intel_adjust_aligned_offset()
958 unsigned int cpp = fb->format->cpp[color_plane]; in intel_adjust_aligned_offset()
962 if (!is_surface_linear(fb, color_plane)) { in intel_adjust_aligned_offset()
967 intel_tile_dims(fb, color_plane, &tile_width, &tile_height); in intel_adjust_aligned_offset()
996 return intel_adjust_aligned_offset(x, y, state->hw.fb, color_plane, in intel_plane_adjust_aligned_offset()
1018 const struct drm_framebuffer *fb, in intel_compute_aligned_offset() argument
1024 unsigned int cpp = fb->format->cpp[color_plane]; in intel_compute_aligned_offset()
1027 if (!is_surface_linear(fb, color_plane)) { in intel_compute_aligned_offset()
1032 intel_tile_dims(fb, color_plane, &tile_width, &tile_height); in intel_compute_aligned_offset()
1077 const struct drm_framebuffer *fb = state->hw.fb; in intel_plane_compute_aligned_offset() local
1085 alignment = intel_surf_alignment(fb, color_plane); in intel_plane_compute_aligned_offset()
1087 return intel_compute_aligned_offset(i915, x, y, fb, color_plane, in intel_plane_compute_aligned_offset()
1093 const struct drm_framebuffer *fb, in intel_fb_offset_to_xy() argument
1096 struct drm_i915_private *i915 = to_i915(fb->dev); in intel_fb_offset_to_xy()
1101 !intel_fb_needs_pot_stride_remap(to_intel_framebuffer(fb)) && in intel_fb_offset_to_xy()
1102 is_semiplanar_uv_plane(fb, color_plane)) in intel_fb_offset_to_xy()
1103 alignment = intel_tile_row_size(fb, color_plane); in intel_fb_offset_to_xy()
1104 else if (fb->modifier != DRM_FORMAT_MOD_LINEAR) in intel_fb_offset_to_xy()
1109 if (alignment != 0 && fb->offsets[color_plane] % alignment) { in intel_fb_offset_to_xy()
1112 fb->offsets[color_plane], color_plane); in intel_fb_offset_to_xy()
1116 height = drm_framebuffer_plane_height(fb->height, fb, color_plane); in intel_fb_offset_to_xy()
1117 height = ALIGN(height, intel_tile_height(fb, color_plane)); in intel_fb_offset_to_xy()
1120 if (add_overflows_t(u32, mul_u32_u32(height, fb->pitches[color_plane]), in intel_fb_offset_to_xy()
1121 fb->offsets[color_plane])) { in intel_fb_offset_to_xy()
1124 fb->offsets[color_plane], fb->pitches[color_plane], in intel_fb_offset_to_xy()
1133 fb, color_plane, DRM_MODE_ROTATE_0, in intel_fb_offset_to_xy()
1134 fb->pitches[color_plane], in intel_fb_offset_to_xy()
1135 fb->offsets[color_plane], 0); in intel_fb_offset_to_xy()
1140 static int intel_fb_check_ccs_xy(const struct drm_framebuffer *fb, int ccs_plane, int x, int y) in intel_fb_check_ccs_xy() argument
1142 struct drm_i915_private *i915 = to_i915(fb->dev); in intel_fb_check_ccs_xy()
1143 const struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); in intel_fb_check_ccs_xy()
1150 if (!intel_fb_is_ccs_aux_plane(fb, ccs_plane)) in intel_fb_check_ccs_xy()
1158 intel_tile_block_dims(fb, ccs_plane, &tile_width, &tile_height); in intel_fb_check_ccs_xy()
1159 intel_fb_plane_get_subsampling(&hsub, &vsub, fb, ccs_plane); in intel_fb_check_ccs_xy()
1167 main_plane = skl_ccs_to_main_plane(fb, ccs_plane); in intel_fb_check_ccs_xy()
1193 const struct drm_framebuffer *fb = plane_state->hw.fb; in intel_plane_can_remap() local
1213 if (intel_fb_is_ccs_modifier(fb->modifier)) in intel_plane_can_remap()
1217 if (fb->modifier == DRM_FORMAT_MOD_LINEAR) { in intel_plane_can_remap()
1220 for (i = 0; i < fb->format->num_planes; i++) { in intel_plane_can_remap()
1221 if (fb->pitches[i] & alignment) in intel_plane_can_remap()
1229 bool intel_fb_needs_pot_stride_remap(const struct intel_framebuffer *fb) in intel_fb_needs_pot_stride_remap() argument
1231 struct drm_i915_private *i915 = to_i915(fb->base.dev); in intel_fb_needs_pot_stride_remap()
1234 intel_fb_uses_dpt(&fb->base); in intel_fb_needs_pot_stride_remap()
1237 static int intel_fb_pitch(const struct intel_framebuffer *fb, int color_plane, unsigned int rotatio… in intel_fb_pitch() argument
1240 return fb->rotated_view.color_plane[color_plane].mapping_stride; in intel_fb_pitch()
1241 else if (intel_fb_needs_pot_stride_remap(fb)) in intel_fb_pitch()
1242 return fb->remapped_view.color_plane[color_plane].mapping_stride; in intel_fb_pitch()
1244 return fb->normal_view.color_plane[color_plane].mapping_stride; in intel_fb_pitch()
1250 const struct intel_framebuffer *fb = to_intel_framebuffer(plane_state->hw.fb); in intel_plane_needs_remap() local
1268 stride = intel_fb_pitch(fb, 0, rotation); in intel_plane_needs_remap()
1269 max_stride = plane->max_stride(plane, fb->base.format->format, in intel_plane_needs_remap()
1270 fb->base.modifier, rotation); in intel_plane_needs_remap()
1275 static int convert_plane_offset_to_xy(const struct intel_framebuffer *fb, int color_plane, in convert_plane_offset_to_xy() argument
1278 struct drm_i915_gem_object *obj = intel_fb_obj(&fb->base); in convert_plane_offset_to_xy()
1281 ret = intel_fb_offset_to_xy(x, y, &fb->base, color_plane); in convert_plane_offset_to_xy()
1283 drm_dbg_kms(fb->base.dev, in convert_plane_offset_to_xy()
1285 color_plane, fb->base.offsets[color_plane]); in convert_plane_offset_to_xy()
1289 ret = intel_fb_check_ccs_xy(&fb->base, color_plane, *x, *y); in convert_plane_offset_to_xy()
1303 (*x + plane_width) * fb->base.format->cpp[color_plane] > fb->base.pitches[color_plane]) { in convert_plane_offset_to_xy()
1304 drm_dbg_kms(fb->base.dev, in convert_plane_offset_to_xy()
1306 color_plane, fb->base.offsets[color_plane]); in convert_plane_offset_to_xy()
1313 static u32 calc_plane_aligned_offset(const struct intel_framebuffer *fb, int color_plane, int *x, i… in calc_plane_aligned_offset() argument
1315 struct drm_i915_private *i915 = to_i915(fb->base.dev); in calc_plane_aligned_offset()
1319 offset = intel_compute_aligned_offset(i915, x, y, &fb->base, color_plane, in calc_plane_aligned_offset()
1320 fb->base.pitches[color_plane], in calc_plane_aligned_offset()
1332 static void init_plane_view_dims(const struct intel_framebuffer *fb, int color_plane, in init_plane_view_dims() argument
1339 intel_tile_dims(&fb->base, color_plane, &dims->tile_width, &dims->tile_height); in init_plane_view_dims()
1343 plane_view_src_stride_tiles(const struct intel_framebuffer *fb, int color_plane, in plane_view_src_stride_tiles() argument
1346 return DIV_ROUND_UP(fb->base.pitches[color_plane], in plane_view_src_stride_tiles()
1347 dims->tile_width * fb->base.format->cpp[color_plane]); in plane_view_src_stride_tiles()
1351 plane_view_dst_stride_tiles(const struct intel_framebuffer *fb, int color_plane, in plane_view_dst_stride_tiles() argument
1354 if (intel_fb_needs_pot_stride_remap(fb)) { in plane_view_dst_stride_tiles()
1366 plane_view_scanout_stride(const struct intel_framebuffer *fb, int color_plane, in plane_view_scanout_stride() argument
1370 struct drm_i915_private *i915 = to_i915(fb->base.dev); in plane_view_scanout_stride()
1378 return stride_tiles * tile_width * fb->base.format->cpp[color_plane]; in plane_view_scanout_stride()
1382 plane_view_width_tiles(const struct intel_framebuffer *fb, int color_plane, in plane_view_width_tiles() argument
1390 plane_view_height_tiles(const struct intel_framebuffer *fb, int color_plane, in plane_view_height_tiles() argument
1398 plane_view_linear_tiles(const struct intel_framebuffer *fb, int color_plane, in plane_view_linear_tiles() argument
1402 struct drm_i915_private *i915 = to_i915(fb->base.dev); in plane_view_linear_tiles()
1405 size = (y + dims->height) * fb->base.pitches[color_plane] + in plane_view_linear_tiles()
1406 x * fb->base.format->cpp[color_plane]; in plane_view_linear_tiles()
1422 static u32 calc_plane_remap_info(const struct intel_framebuffer *fb, int color_plane, in calc_plane_remap_info() argument
1427 struct drm_i915_private *i915 = to_i915(fb->base.dev); in calc_plane_remap_info()
1438 if (intel_fb_is_gen12_ccs_aux_plane(&fb->base, color_plane)) { in calc_plane_remap_info()
1442 plane_view_linear_tiles(fb, color_plane, dims, x, y)); in calc_plane_remap_info()
1447 plane_view_src_stride_tiles(fb, color_plane, dims)); in calc_plane_remap_info()
1449 plane_view_width_tiles(fb, color_plane, dims, x)); in calc_plane_remap_info()
1451 plane_view_height_tiles(fb, color_plane, dims, y)); in calc_plane_remap_info()
1459 plane_view_dst_stride_tiles(fb, color_plane, remap_info->height)); in calc_plane_remap_info()
1495 color_plane_info->mapping_stride = fb->base.pitches[color_plane]; in calc_plane_remap_info()
1500 unsigned int dst_stride = plane_view_dst_stride_tiles(fb, color_plane, in calc_plane_remap_info()
1506 fb->base.format->cpp[color_plane]; in calc_plane_remap_info()
1508 plane_view_scanout_stride(fb, color_plane, tile_width, in calc_plane_remap_info()
1523 fb->base.format->cpp[color_plane], in calc_plane_remap_info()
1539 calc_plane_normal_size(const struct intel_framebuffer *fb, int color_plane, in calc_plane_normal_size() argument
1545 if (is_surface_linear(&fb->base, color_plane)) { in calc_plane_normal_size()
1546 tiles = plane_view_linear_tiles(fb, color_plane, dims, x, y); in calc_plane_normal_size()
1548 tiles = plane_view_src_stride_tiles(fb, color_plane, dims) * in calc_plane_normal_size()
1549 plane_view_height_tiles(fb, color_plane, dims, y); in calc_plane_normal_size()
1572 bool intel_fb_supports_90_270_rotation(const struct intel_framebuffer *fb) in intel_fb_supports_90_270_rotation() argument
1574 if (DISPLAY_VER(to_i915(fb->base.dev)) >= 13) in intel_fb_supports_90_270_rotation()
1577 return fb->base.modifier == I915_FORMAT_MOD_Y_TILED || in intel_fb_supports_90_270_rotation()
1578 fb->base.modifier == I915_FORMAT_MOD_Yf_TILED; in intel_fb_supports_90_270_rotation()
1581 int intel_fill_fb_info(struct drm_i915_private *i915, struct intel_framebuffer *fb) in intel_fill_fb_info() argument
1583 struct drm_i915_gem_object *obj = intel_fb_obj(&fb->base); in intel_fill_fb_info()
1587 int i, num_planes = fb->base.format->num_planes; in intel_fill_fb_info()
1590 intel_fb_view_init(i915, &fb->normal_view, I915_GTT_VIEW_NORMAL); in intel_fill_fb_info()
1593 intel_fb_supports_90_270_rotation(fb) && in intel_fill_fb_info()
1594 intel_fb_needs_pot_stride_remap(fb)); in intel_fill_fb_info()
1596 if (intel_fb_supports_90_270_rotation(fb)) in intel_fill_fb_info()
1597 intel_fb_view_init(i915, &fb->rotated_view, I915_GTT_VIEW_ROTATED); in intel_fill_fb_info()
1598 if (intel_fb_needs_pot_stride_remap(fb)) in intel_fill_fb_info()
1599 intel_fb_view_init(i915, &fb->remapped_view, I915_GTT_VIEW_REMAPPED); in intel_fill_fb_info()
1614 if (is_gen12_ccs_cc_plane(&fb->base, i)) { in intel_fill_fb_info()
1615 if (IS_ALIGNED(fb->base.offsets[i], PAGE_SIZE)) in intel_fill_fb_info()
1621 intel_fb_plane_dims(fb, i, &width, &height); in intel_fill_fb_info()
1623 ret = convert_plane_offset_to_xy(fb, i, width, &x, &y); in intel_fill_fb_info()
1627 init_plane_view_dims(fb, i, width, height, &view_dims); in intel_fill_fb_info()
1633 fb->normal_view.color_plane[i].x = x; in intel_fill_fb_info()
1634 fb->normal_view.color_plane[i].y = y; in intel_fill_fb_info()
1635 fb->normal_view.color_plane[i].mapping_stride = fb->base.pitches[i]; in intel_fill_fb_info()
1636 fb->normal_view.color_plane[i].scanout_stride = in intel_fill_fb_info()
1637 fb->normal_view.color_plane[i].mapping_stride; in intel_fill_fb_info()
1639 offset = calc_plane_aligned_offset(fb, i, &x, &y); in intel_fill_fb_info()
1641 if (intel_fb_supports_90_270_rotation(fb)) in intel_fill_fb_info()
1642 gtt_offset_rotated += calc_plane_remap_info(fb, i, &view_dims, in intel_fill_fb_info()
1644 &fb->rotated_view); in intel_fill_fb_info()
1646 if (intel_fb_needs_pot_stride_remap(fb)) in intel_fill_fb_info()
1647 gtt_offset_remapped += calc_plane_remap_info(fb, i, &view_dims, in intel_fill_fb_info()
1649 &fb->remapped_view); in intel_fill_fb_info()
1651 size = calc_plane_normal_size(fb, i, &view_dims, x, y); in intel_fill_fb_info()
1670 struct drm_framebuffer *fb = plane_state->hw.fb; in intel_plane_remap_gtt() local
1671 struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); in intel_plane_remap_gtt()
1673 int i, num_planes = fb->format->num_planes; in intel_plane_remap_gtt()
1687 drm_WARN_ON(&i915->drm, intel_fb_is_ccs_modifier(fb->modifier)); in intel_plane_remap_gtt()
1700 unsigned int hsub = i ? fb->format->hsub : 1; in intel_plane_remap_gtt()
1701 unsigned int vsub = i ? fb->format->vsub : 1; in intel_plane_remap_gtt()
1729 void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotation, in intel_fb_fill_view() argument
1733 *view = fb->rotated_view; in intel_fb_fill_view()
1734 else if (intel_fb_needs_pot_stride_remap(fb)) in intel_fb_fill_view()
1735 *view = fb->remapped_view; in intel_fb_fill_view()
1737 *view = fb->normal_view; in intel_fb_fill_view()
1760 intel_fb_stride_alignment(const struct drm_framebuffer *fb, int color_plane) in intel_fb_stride_alignment() argument
1762 struct drm_i915_private *dev_priv = to_i915(fb->dev); in intel_fb_stride_alignment()
1765 if (is_surface_linear(fb, color_plane)) { in intel_fb_stride_alignment()
1767 fb->format->format, in intel_fb_stride_alignment()
1768 fb->modifier); in intel_fb_stride_alignment()
1774 if (fb->pitches[color_plane] > max_stride && in intel_fb_stride_alignment()
1775 !intel_fb_is_ccs_modifier(fb->modifier)) in intel_fb_stride_alignment()
1781 tile_width = intel_tile_width_bytes(fb, color_plane); in intel_fb_stride_alignment()
1782 if (intel_fb_is_ccs_modifier(fb->modifier)) { in intel_fb_stride_alignment()
1799 color_plane == 0 && fb->width > 3840) in intel_fb_stride_alignment()
1808 const struct drm_framebuffer *fb = plane_state->hw.fb; in intel_plane_check_stride() local
1824 max_stride = plane->max_stride(plane, fb->format->format, in intel_plane_check_stride()
1825 fb->modifier, rotation); in intel_plane_check_stride()
1829 fb->base.id, stride, in intel_plane_check_stride()
1839 const struct intel_framebuffer *fb = in intel_plane_compute_gtt() local
1840 to_intel_framebuffer(plane_state->hw.fb); in intel_plane_compute_gtt()
1843 if (!fb) in intel_plane_compute_gtt()
1858 intel_fb_fill_view(fb, rotation, &plane_state->view); in intel_plane_compute_gtt()
1863 fb->base.width << 16, fb->base.height << 16, in intel_plane_compute_gtt()
1869 static void intel_user_framebuffer_destroy(struct drm_framebuffer *fb) in intel_user_framebuffer_destroy() argument
1871 struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); in intel_user_framebuffer_destroy()
1873 drm_framebuffer_cleanup(fb); in intel_user_framebuffer_destroy()
1875 if (intel_fb_uses_dpt(fb)) in intel_user_framebuffer_destroy()
1883 static int intel_user_framebuffer_create_handle(struct drm_framebuffer *fb, in intel_user_framebuffer_create_handle() argument
1887 struct drm_i915_gem_object *obj = intel_fb_obj(fb); in intel_user_framebuffer_create_handle()
1899 static int intel_user_framebuffer_dirty(struct drm_framebuffer *fb, in intel_user_framebuffer_dirty() argument
1905 struct drm_i915_gem_object *obj = intel_fb_obj(fb); in intel_user_framebuffer_dirty()
1908 intel_frontbuffer_flush(to_intel_frontbuffer(fb), ORIGIN_DIRTYFB); in intel_user_framebuffer_dirty()
1924 struct drm_framebuffer *fb = &intel_fb->base; in intel_framebuffer_init() local
2010 drm_helper_mode_fill_fb_struct(&dev_priv->drm, fb, mode_cmd); in intel_framebuffer_init()
2012 for (i = 0; i < fb->format->num_planes; i++) { in intel_framebuffer_init()
2021 stride_alignment = intel_fb_stride_alignment(fb, i); in intel_framebuffer_init()
2022 if (fb->pitches[i] & (stride_alignment - 1)) { in intel_framebuffer_init()
2025 i, fb->pitches[i], stride_alignment); in intel_framebuffer_init()
2029 if (intel_fb_is_gen12_ccs_aux_plane(fb, i)) { in intel_framebuffer_init()
2032 if (fb->pitches[i] != ccs_aux_stride) { in intel_framebuffer_init()
2036 fb->pitches[i], ccs_aux_stride); in intel_framebuffer_init()
2041 fb->obj[i] = &obj->base; in intel_framebuffer_init()
2048 if (intel_fb_uses_dpt(fb)) { in intel_framebuffer_init()
2061 ret = drm_framebuffer_init(&dev_priv->drm, fb, &intel_fb_funcs); in intel_framebuffer_init()
2070 if (intel_fb_uses_dpt(fb)) in intel_framebuffer_init()
2082 struct drm_framebuffer *fb; in intel_user_framebuffer_create() local
2100 fb = intel_framebuffer_create(obj, &mode_cmd); in intel_user_framebuffer_create()
2103 return fb; in intel_user_framebuffer_create()