|
@@ -3348,6 +3348,7 @@ i915_gem_obj_lookup_or_create_ggtt_vma(struct drm_i915_gem_object *obj,
|
|
|
static struct scatterlist *
|
|
|
rotate_pages(const dma_addr_t *in, unsigned int offset,
|
|
|
unsigned int width, unsigned int height,
|
|
|
+ unsigned int stride,
|
|
|
struct sg_table *st, struct scatterlist *sg)
|
|
|
{
|
|
|
unsigned int column, row;
|
|
@@ -3359,7 +3360,7 @@ rotate_pages(const dma_addr_t *in, unsigned int offset,
|
|
|
}
|
|
|
|
|
|
for (column = 0; column < width; column++) {
|
|
|
- src_idx = width * (height - 1) + column;
|
|
|
+ src_idx = stride * (height - 1) + column;
|
|
|
for (row = 0; row < height; row++) {
|
|
|
st->nents++;
|
|
|
/* We don't need the pages, but need to initialize
|
|
@@ -3370,7 +3371,7 @@ rotate_pages(const dma_addr_t *in, unsigned int offset,
|
|
|
sg_dma_address(sg) = in[offset + src_idx];
|
|
|
sg_dma_len(sg) = PAGE_SIZE;
|
|
|
sg = sg_next(sg);
|
|
|
- src_idx -= width;
|
|
|
+ src_idx -= stride;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -3423,6 +3424,7 @@ intel_rotate_fb_obj_pages(struct i915_ggtt_view *ggtt_view,
|
|
|
/* Rotate the pages. */
|
|
|
sg = rotate_pages(page_addr_list, 0,
|
|
|
rot_info->width_pages, rot_info->height_pages,
|
|
|
+ rot_info->width_pages,
|
|
|
st, NULL);
|
|
|
|
|
|
/* Append the UV plane if NV12. */
|
|
@@ -3438,6 +3440,7 @@ intel_rotate_fb_obj_pages(struct i915_ggtt_view *ggtt_view,
|
|
|
rotate_pages(page_addr_list, uv_start_page,
|
|
|
rot_info->width_pages_uv,
|
|
|
rot_info->height_pages_uv,
|
|
|
+ rot_info->width_pages_uv,
|
|
|
st, sg);
|
|
|
}
|
|
|
|