On Wed, Oct 14, 2015 at 07:28:52PM +0300, ville.syrjala@xxxxxxxxxxxxxxx wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > 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@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx