Re: [PATCH 1/4] drm: add plane support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06/07/2011 11:01 PM, Jesse Barnes wrote:
On Tue,  7 Jun 2011 13:07:39 -0700
Jesse Barnes<jbarnes@xxxxxxxxxxxxxxxx>  wrote:

+/* Planes blend with or override other bits on the CRTC */
+struct drm_mode_set_plane {
+	__u32 plane_id;
+	__u32 crtc_id;
+	__u32 fb_id; /* contains surface format type */
+
+	__u32 crtc_x, crtc_y;
+	__u32 x, y;
+
+	/* FIXME: color key/mask, scaling, z-order, other? */
+};
Forgot to add the scaling factors to this.  Would:
   __u32 scaling_x; /* fixed 16.16 format */
   __u32 scaling_y;
work for people?

If you want to pan around in zoomed in video/viewfinder/snapshots it might be better to have a fixed 16.16 source rectangle and a integer destination rectangle. That way you can move around the zoomed in source rectangle in small increments and upscale it to destination rectangle (and skip fractions if HW don't support it). For example, if you zoom 4x and have only fixed 16.16 scaling factor, you still get the the integer fb (x, y) position in the top left corner (crtc_x, crtc_y) of the overlay. And when you pan in the overlay, you will have to move source rectangle in 4 destination pixel increments. So what about this instead:

__u32 x, y, src_w, src_h; /* fixed 16.16 */
__u32 crtc_x, crtc_y, crtc_w, crtc_h;

Maybe rename x, y to src_x, src_y? crtc_w/h is needed to define zoom factor (scaling_[wh] = crtc_[wh] / src_[wh]).

So the "zoom transform" would be defined by (src_x, src_y, src_w, src_h) => (crtc_x, crtc_y, crtc_w, crtc_h)

It also gets rid of how to handle corner cases where scaling factor defines a source area outside source fb. Now you can just say both rect has to be inside crtc/fb. And you can also animate/move/clip a zoomed overlay off screen without picture jumping (fb and display coords don't align when zoomed).

Summary, rectangles allow more precise representation of zoom factor, and 16.16 source coords for stable image when moving overlay off screen (clipping) or panning overlay content.

BTW. Why not just add "__s32 z;" too? drm_mode_set_plane seems to be plane position setup.

/BR
/Marcus

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux