drm/i915: Keep sprite plane src rect in 16.16 format
authorChandra Konduru <chandra.konduru@intel.com>
Thu, 9 Apr 2015 23:41:54 +0000 (16:41 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 13 Apr 2015 09:30:40 +0000 (11:30 +0200)
This patch keeps intel_plane_state->src rect back
into 16.16 format.

v2:
-sprite src rect to match primary format (Matt, Daniel)

v3:
-moved a hunk from #14 to keep src rect in check & commit in tandom (Matt)

Signed-off-by: Chandra Konduru <chandra.konduru@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_sprite.c

index 6d4e1ea4219f6d6aa62ef8c7a2d65e7b48f6203c..0cb37674b43a60f112c86817f11e6308eeecc2bb 100644 (file)
@@ -1037,10 +1037,10 @@ intel_check_sprite_plane(struct drm_plane *plane,
        }
 
        if (state->visible) {
-               src->x1 = src_x;
-               src->x2 = src_x + src_w;
-               src->y1 = src_y;
-               src->y2 = src_y + src_h;
+               src->x1 = src_x << 16;
+               src->x2 = (src_x + src_w) << 16;
+               src->y1 = src_y << 16;
+               src->y2 = (src_y + src_h) << 16;
        }
 
        dst->x1 = crtc_x;
@@ -1112,10 +1112,10 @@ intel_commit_sprite_plane(struct drm_plane *plane,
                        crtc_y = state->dst.y1;
                        crtc_w = drm_rect_width(&state->dst);
                        crtc_h = drm_rect_height(&state->dst);
-                       src_x = state->src.x1;
-                       src_y = state->src.y1;
-                       src_w = drm_rect_width(&state->src);
-                       src_h = drm_rect_height(&state->src);
+                       src_x = state->src.x1 >> 16;
+                       src_y = state->src.y1 >> 16;
+                       src_w = drm_rect_width(&state->src) >> 16;
+                       src_h = drm_rect_height(&state->src) >> 16;
                        intel_plane->update_plane(plane, crtc, fb,
                                                  crtc_x, crtc_y, crtc_w, crtc_h,
                                                  src_x, src_y, src_w, src_h);