RE: [PATCH] OMAP3630:DSS2:Enable Pre-Multiplied Alpha Support

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

 



> -----Original Message-----
> From: Tomi Valkeinen [mailto:tomi.valkeinen@xxxxxxxxx]
> Sent: Friday, January 15, 2010 4:00 PM
> To: Y, Kishore
> Cc: linux-omap@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH] OMAP3630:DSS2:Enable Pre-Multiplied Alpha Support
> 
> Hi,
> 
> On Mon, 2009-12-21 at 16:06 +0100, ext Y, Kishore wrote:
> > From 2f873819a4b9eb0bd658db1e59408d8f0aeb14b6 Mon Sep 17 00:00:00 2001
> > From: Sudeep Basavaraj <sudeep.basavaraj@xxxxxx>
> > Date: Mon, 14 Dec 2009 18:54:51 +0530
> > Subject: [PATCH] OMAP3630:DSS2:Enable Pre-Multiplied Alpha Support
> >
> > Enables dss to process color formats with pre-mulitplied alpha values.
> > With this we can have alpha values defined for each pixel
> > and hence can have different blending values for each pixel.
> 
> What does pre-multiplied alpha mean? The TRM didn't really open it up...
> Don't we already have per pixel alpha when using ARGB/RGBA?

When we set pixel format to ARGB/RGBA dss alpha blender would multiply the value present in 'A' with 'RGB'.
By setting this bit display hardware assumes that the R,G,B are already multiplied with the alpha value and there is no need to multiply again.

Ex:-
			A	R	G	B
argb data		128	255	128	100
pre-multiplied	128	128	64	50

So this bit, when set, would not multiply the pixel with alpha value.

> 
> This patch seems to always set the bit on, never set it off. Is that the
> purpose?

As per TRM, this bit is valid only for ARGB formats and experts suggested that we can safely assume pre-multiplied data always in real world

> 
>  Tomi
> 
> 
> > Signed-off-by: Sudeep Basavaraj <sudeep.basavaraj@xxxxxx>
> > Signed-off-by: Kishore Y <kishore.y@xxxxxx>
> > ---
> >  drivers/video/omap2/dss/dispc.c |    8 ++++++++
> >  1 files changed, 8 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/video/omap2/dss/dispc.c
> b/drivers/video/omap2/dss/dispc.c
> > index 6dabf4b..5f7819b 100644
> > --- a/drivers/video/omap2/dss/dispc.c
> > +++ b/drivers/video/omap2/dss/dispc.c
> > @@ -913,6 +913,11 @@ static void _dispc_set_vid_color_conv(enum
> omap_plane plane, bool enable)
> >  	dispc_write_reg(dispc_reg_att[plane], val);
> >  }
> >
> > +static void _dispc_set_alpha_blend_attrs(enum omap_plane plane, bool
> enable)
> > +{
> > +	REG_FLD_MOD(dispc_reg_att[plane], enable ? 1 : 0, 28, 28);
> > +}
> > +
> >  void dispc_enable_replication(enum omap_plane plane, bool enable)
> >  {
> >  	int bit;
> > @@ -1689,6 +1694,9 @@ static int _dispc_setup_plane(enum omap_plane
> plane,
> >
> >  	_dispc_set_rotation_attrs(plane, rotation, mirror, color_mode);
> >
> > +	if (cpu_is_omap3630() && (plane != OMAP_DSS_VIDEO1))
> > +		_dispc_set_alpha_blend_attrs(plane, 1);
> > +
> >  	if (plane != OMAP_DSS_VIDEO1)
> >  		_dispc_setup_global_alpha(plane, global_alpha);
> >
> 

��.n��������+%������w��{.n�����{�������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux