[Intel-gfx] [PATCH 00/22] drm/i915: Handle fb->offsets[] and rewrite fb rotation handling to be more generic
Daniel Vetter
daniel at ffwll.ch
Wed Oct 14 09:59:38 PDT 2015
On Wed, Oct 14, 2015 at 07:28:52PM +0300, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> So while reviewing the NV12 stuff it became clear to me no one
> had really given fb->offsets[] handling any serious thought.
> So this patch series aims to fix that. We now treat fb->offsets[]
> as a linear offset always. One clear benefit over treating it as
> a linear offset as opposed to a raw byte offset is that we don't
> have to think about the layout of bytes within the tile at all.
>
> The series also generalizes the page rotation to be format agnostic,
> the caller just specifies the desired geometry in pages for each
> plane, and the rotation code builds up the sg. The intel_rotation_info
> then just contains the minimal amount of information needed to
> do the page rotation.
>
> SKL+ also gets changed to use the compute_page_offset stuff so that
> the plane SURF register will contain the closes (properly aligned)
> page boundary, and the x/y offsets deal with whatever is left over.
> The plane code for the other platforms also gets simpler in the end
> I think. Also the 90/270 rotation handling becomes rather trivial
> for the plane code.
>
> I should still write some decent tests to exercise fb->offsets[].
>
> Series available here:
> git://github.com/vsyrjala/linux.git fb_offsets
As mentioned on irc patches 13&14 need to me unified with my 3 patch
series, but otherwise lgtm overall.
-Daniel
>
> Ville Syrjälä (22):
> drm: Add drm_format_plane_width() and drm_format_plane_height()
> drm/i915: Pass modifier instead of tiling_mode to
> gen4_compute_page_offset()
> drm/i915: Factor out intel_tile_width()
> drm/i915: Redo intel_tile_height() as intel_tile_size() /
> intel_tile_width()
> drm/i915: change intel_fill_fb_ggtt_view() to use the real tile size
> drm/i915: Use intel_tile_{size,width,height}() in
> intel_gen4_compute_page_offset()
> drm/i915: s/intel_gen4_compute_page_offset/intel_compute_page_offset/
> drm/i915: Pass 90/270 vs. 0/180 rotation info for
> intel_gen4_compute_page_offset()
> drm/i915: Refactor intel_surf_alignment()
> drm/i915: Support for extra alignment for tiled surfaces
> drm/i915: Don't pass plane+plane_state to intel_pin_and_fence_fb_obj()
> drm/i915: Set i915_ggtt_view_normal type explicitly
> drm/i915: Move the partial and rotated view data into the same union
> drm/i915: Don't treat differently sized rotated views as equal
> drm/i915: Pass the dma_addr_t array as const to rotate_pages()
> drm/i915: Pass stride to rotate_pages()
> drm/i915: Pass rotation_info to intel_rotate_fb_obj_pages()
> drm/i915: Make sure fb offset is (macro)pixel aligned
> drm/i915: Don't leak framebuffer_references if drm_framebuffer_init()
> fails
> drm/i915: Pass drm_frambuffer to intel_compute_page_offset()
> drm/i915: Rewrite fb rotation GTT handling
> drm/i915: Don't pass pitch to intel_compute_page_offset()
>
> drivers/gpu/drm/i915/i915_gem.c | 10 +-
> drivers/gpu/drm/i915/i915_gem_gtt.c | 88 ++--
> drivers/gpu/drm/i915/i915_gem_gtt.h | 27 +-
> drivers/gpu/drm/i915/intel_display.c | 792 +++++++++++++++++++++++------------
> drivers/gpu/drm/i915/intel_drv.h | 46 +-
> drivers/gpu/drm/i915/intel_fbdev.c | 2 +-
> drivers/gpu/drm/i915/intel_sprite.c | 128 +++---
> include/drm/drm_crtc.h | 12 +
> 8 files changed, 681 insertions(+), 424 deletions(-)
>
> --
> 2.4.9
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the Intel-gfx
mailing list