drm/i915: Move the NULL sg handling out from rotate_pages()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 15 Feb 2016 20:54:46 +0000 (22:54 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 1 Mar 2016 10:48:09 +0000 (12:48 +0200)
rotate_pages() checks to see if it got called with a NULL sg, and then
goes to extract it from sg->sgl. It always gets called with a NULL sg
for the first plane, so moving the initial 'sg=st->sgl' assignment out
into intel_rotate_fb_obj_pages() seems less special-casey.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1455569699-27905-9-git-send-email-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/i915_gem_gtt.c

index a794bbdf9a46fb942b99d2dc8ef4c2bbc9c93e39..7b8de85c5f76ad9279e81a8663f3356e1cf87b26 100644 (file)
@@ -3377,11 +3377,6 @@ rotate_pages(const dma_addr_t *in, unsigned int offset,
        unsigned int column, row;
        unsigned int src_idx;
 
-       if (!sg) {
-               st->nents = 0;
-               sg = st->sgl;
-       }
-
        for (column = 0; column < width; column++) {
                src_idx = stride * (height - 1) + column;
                for (row = 0; row < height; row++) {
@@ -3443,11 +3438,14 @@ intel_rotate_fb_obj_pages(struct intel_rotation_info *rot_info,
                i++;
        }
 
+       st->nents = 0;
+       sg = st->sgl;
+
        /* Rotate the pages. */
        sg = rotate_pages(page_addr_list, 0,
                          rot_info->plane[0].width, rot_info->plane[0].height,
                          rot_info->plane[0].width,
-                         st, NULL);
+                         st, sg);
 
        /* Append the UV plane if NV12. */
        if (rot_info->pixel_format == DRM_FORMAT_NV12) {
@@ -3459,10 +3457,10 @@ intel_rotate_fb_obj_pages(struct intel_rotation_info *rot_info,
 
                rot_info->uv_start_page = uv_start_page;
 
-               rotate_pages(page_addr_list, rot_info->uv_start_page,
-                            rot_info->plane[1].width, rot_info->plane[1].height,
-                            rot_info->plane[1].width,
-                            st, sg);
+               sg = rotate_pages(page_addr_list, rot_info->uv_start_page,
+                                 rot_info->plane[1].width, rot_info->plane[1].height,
+                                 rot_info->plane[1].width,
+                                 st, sg);
        }
 
        DRM_DEBUG_KMS("Created rotated page mapping for object size %zu (%ux%u tiles, %u pages (%u plane 0)).\n",