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

Re: [E-devel] Bug with ARGB32 buffer canvas when stride != output width * 4

On Mon, 03 Apr 2006 14:05:30 -0400 Jason Tackaberry <tack@sault.org> babbled:

> On Mon, 2006-04-03 at 12:35 +0900, Carsten Haitzler wrote:
> > note: if your buffer width != width * 4 - then evas does an extra copy from
> > a temporary buffer to the final buffer. evas takes lots of shortcuts when
> > it can and will render directly to the dest buffer if it meets requirements
> > (ARGB32, dest bytes per row = 4 * width). 
> Is there a technical reason for this?  I mean, shouldn't it just be a
> matter of using row stride in all the offset calculations instead of the
> output width?

because the internals int he sw engine just don't happen to work like this :
( when they have a destination buffer they assume width == rowstride as there
is no gap (since they are all 32bit per pixel there is no reason to pad for
alignment), and the engine was written originally with x in mind where any
intermediate buffer like this ends up having to be put int an X(Shm)Image and
thus a copy to the final display device anyway. in your case i'm not sure why
you need a larger rowstride anyway?

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