[PATCH 3/5] drm: plane src coords are 16.16 fixed point

Kristian Hoegsberg hoegsberg at gmail.com
Thu Mar 22 08:58:39 PDT 2012


On Tue, Mar 20, 2012 at 10:48:55AM -0700, Jesse Barnes wrote:
> On Sun, 11 Mar 2012 19:48:43 -0500
> Rob Clark <rob.clark at linaro.org> wrote:
> 
> > From: Rob Clark <rob at ti.com>
> > 
> > ---
> >  src/compositor-drm.c |    9 ++++-----
> >  1 files changed, 4 insertions(+), 5 deletions(-)
> > 
> > diff --git a/src/compositor-drm.c b/src/compositor-drm.c
> > index 500ec15..cf9a937 100644
> > --- a/src/compositor-drm.c
> > +++ b/src/compositor-drm.c
> > @@ -538,13 +538,12 @@ drm_output_prepare_overlay_surface(struct weston_output *output_base,
> >  				  &output_base->region);
> >  	pixman_region32_translate(&src_rect, -es->geometry.x, -es->geometry.y);
> >  	box = pixman_region32_extents(&src_rect);
> > -	s->src_x = box->x1;
> > -	s->src_y = box->y1;
> > -	s->src_w = box->x2 - box->x1;
> > -	s->src_h = box->y2 - box->y1;
> > +	s->src_x = box->x1 << 16;
> > +	s->src_y = box->y1 << 16;
> > +	s->src_w = (box->x2 - box->x1) << 16;
> > +	s->src_h = (box->y2 - box->y1) << 16;
> >  	pixman_region32_fini(&src_rect);
> >  
> > -
> >  	wl_list_insert(es->buffer->resource.destroy_listener_list.prev,
> >  		       &s->pending_destroy_listener.link);
> >  	return 0;
> 
> This is correct, but why hasn't testing shown this to be broken?  We've
> tested windows with a nonzero width & height, and also partially
> offscreen windows, and they worked...
> 
> Somewhere must be ignoring the shifts, but it looks like we honor them
> in i915... ah no it looks like we don't treat src_w/src_h that way,
> just x & y.
> 
> Guess we should fix the kernel driver before we have hardware that
> actually supports alpha so this will work nicely!

Ok, that was the confirmation I was looking for, I'll grab the patch.

Kristian


More information about the wayland-devel mailing list