RGB RESIZING

HEllo All,

I am looking into android component [copybit] which needs RGB data to be resized.
Is it pssible to resize RGB data on omap ? I see that in the video pipeline It can do an RGB resize.
Can The DSS be programmed to do an RGB resize and return the buffer ?

I know about ISP omap-resizer , but it is capable of handling only yuv data. Please correct me if I am wrong.

vishal bhoj wrote:

HEllo All,

I am looking into android component [copybit] which needs RGB data to be
resized.
Is it pssible to resize RGB data on omap ? I see that in the video
pipeline It can do an RGB resize.
Can The DSS be programmed to do an RGB resize and return the buffer ?

I know about ISP omap-resizer , but it is capable of handling only yuv
data. Please correct me if I am wrong.

no, you are right.

The ISP resizer can only do YUV (or 8bit monochrome).

The DSS resizer can resize RGB, but not write that back to memory.

Is there no way to have hardware accel color conversion and RGB resinzing of decoded buffers in omap ?

Is it possible to use the DMA transfer from the user space ?

I spent some time looking into a similar issue, and the only hardware resizing units I found were the ISP, the DSS (which resizes as part of the display output path, so can't go back to memory, as you say), and the 3D accelerator (which seems like it could be used to scale, but again only on the way to the display).

Brett

I think this is a capability of SGX, but you'll have to wade through
all the stuff related to graphics acceleration -
http://elinux.org/BeagleBoard#Graphics_accelerator

I'm really hoping that it will get easier to use OpenGL on the board,
since that was one of the things that piqued my interest in it to
begin with.

vishal bhoj wrote:

Is there no way to have hardware accel color conversion and RGB
resinzing of decoded buffers in omap ?

The ISP resizer can only do YUV (or 8bit monochrome).

The DSS resizer can resize RGB, but not write that back to memory.

The DSS can also convert YUV to RGB, but not write that back to memory

Brett Kuehner wrote:

For that I would need to keep the GPU running right ? What could be the overhead of programming the GPU to do the resizing.

SGX is not directly connected to DSS but the omaplfb driver requires the DSS to be running .
Can we remove this Omap lfb dependancy and run SGX component to do only the processing ?

Please correct me if I am wrong .

vishal bhoj wrote:

For that I would need to keep the GPU running right ? What could be the
overhead of programming the GPU to do the resizing.

Using SGX, you would create a surface out of 2 triangles, map your RGB image as
a texture on top and then apply some transformation on it. I know that setting
up the textures for the SGX is not a "cheap" task, so I have no idea what frame
rate you would achieve.

SGX is not directly connected to DSS but the omaplfb driver requires the
DSS to be running .
Can we remove this Omap lfb dependancy and run SGX component to do only
the processing ?

technically yes of course, now whether existing SGX SW that is available
supports that I don't know. but I would expect that if there is a way
to make the SGX output to a framebuffer, it should also be able to output
to any other piece of memory.

For that I would need to keep the GPU running right ? What could be the
overhead of programming the GPU to do the resizing.

A better solution for color conversion is to use Neon.
I dont have the performance numbers to compare b/w SGX and Neon. In
this case you can keep SGX turned off.

SGX is not directly connected to DSS but the omaplfb driver requires the DSS
to be running .
Can we remove this Omap lfb dependancy and run SGX component to do only the
processing ?

Possible, SGX can render on to any piece of memory in OMAP. The
PVR2DMemMap() provides this feature [1].

Regards,
-Ragha
[1] http://qt.gitorious.org/qt/qt-gberg/blobs/b7495c9dc896c5c66f01b24ff1d25d2b1e468c90/src/3rdparty/powervr/pvr2d.h