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

Re: [E-devel] Buffer canvas and transparent background

On Sat, 01 Apr 2006 22:30:23 -0500 Jason Tackaberry <tack@sault.org> babbled:

> Hi raster,
> On Sun, 2006-04-02 at 10:27 +0900, Carsten Haitzler wrote:
> > how are you using it? using ecore_evas? are you using the update region
> > callback by hand (not ecore_evas) ? i am looking at the code here - if u ask
> > for EVAS_ENGINE_BUFFER_DEPTH_ARGB32 depth - it will zero out the alpha
> > channel every render update - but ONLY the regions rendered to. it won't do
> > it on startup though. so that might be your problem as those regions never
> > get objects and never get a render update as you manually manage your
> > canvas and damage regions (you don't send an initial one)
> I'm not using ecore.  The problem areas are those where evas _has_
> rendered objects before.
> There definitely is a problem.  I spent a while trying to make a test
> case and was unsuccessful until I discovered the problem only occurs
> when the viewport is defined as a size larger than the output size.  See
> the attached test case.  It creates a 640x480 buffer canvas and sets the
> viewport to 800x600.  It creates a 50px high rectangle at (0,300) and
> samples an alpha pixel at the corresponding point in the buffer.  It
> then moves that rectangle to (0,0) and samples the alpha at the same
> spot.  It _should_ be zero, but when (and cvs, and possibly
> earlier versions) the value is unchanged.
> Output with cvs from 2006-04-01:
>         Should be non-zero: 94
>         Update: 0,0 560x40
>         Update: 0,240 560x40
>         Should be zero: 94
> Output with cvs from 2005-12-18:
>         Should be non-zero: 155
>         Update: 0,0 560x40
>         Update: 0,240 560x40
>         Should be zero: 0
> Note also the alpha value is different between the two cvs versions.  I
> am calling evas_object_color_set(rect, 255, 55, 155, 155) so I do expect
> the alpha value to be 155 there.  cvs-2005-12-18 has correct behavior in
> both cases, whereas 2006-04-01 shows an unexpected alpha value, and,
> more importantly, it's leaving cruft behind when I move the object.
> If the viewport size matches the output size or is smaller then it seems
> to be fine.  It's only when the viewport is larger than the output size.
> Hopefully this helps narrow down the problem.  See attached.

are you using BGRA in freevo too? you know that invovles evas having to do a
byteswap for all rendering as its the opposite color-order to evas's internals?
(which is ARGB) ?

and i have your answer - because it doesn't render directly TO your buffer but
to an ARGB intermediate then copies (and swaps) later - thats why you get the
garbage in regions no images exist. ALL you need to do - is memset your
memory first to 0 and it should be fine. i can add that into the buffer engine
too - but it never has memsetted your memory for you before in this situation.

> Cheers,
> Jason.

------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    raster@rasterman.com
Tokyo, Japan (東京 日本)