This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

VIP RGB output format and RGB scaling

The software for the VIP only supports one RGB format into the frame buffer. It's RGB888 "packed". I think it's pretty clear (there's even a picture) that a pixel only takes three bytes, and the next three bytes are the next pixel, as opposed to ARGB, which is 32-bits per pixel. This format is a pain to manipulate with the CPU, and the SGX530 OpenGL ES driver has to convert it to ARGB before using it as a texture in order to implement RGB scaling. The OpenGL ES implementation is also slow at loading textures anyway.

We are trying to get RGB HDMI/DVI-I from the VIN port into the frame buffer for CPU processing, and down-scaling would be a nice feature.

Questions (I'm looking for the software reality, not the silicon's promise):

1. Can we use a graphics block for scaling to memory? Are there other options besides the SGX530 for scaling?

2. Is the RGB frame buffer format delivered by the VIP port really 24 bits per pixel (pixels aren't word aligned), or is it more like 32-bit ARGB with undefined "A"?

3. Does the SGX530 have hardware to convert RGB to ARGB when loading a texture, or will the CPU be doing it in the driver?

4. Any suggestions?

Any info would be greatly appreciated.

-Herb

  • Hi Answers,

    =

    1. No we cant use graphics block to scaing to memory.  There is no software support as of now and we dont have timeline for it.

    2. Its 24 bits per pixel packed. Its not un-packed.

    3, Converting from RGB888 packed to RGB888 unpacked can be done by using EDMA. I am not sure about SGX would be able to do it.

    Regards,

    Hardik Shah

  • Thanks for the quick, clear answer, Hardik. Your answers and documentation on the Wiki have been a great help to us lately.

    I still can't find the verify answer button, but I'm set for now. We'll investigate the "E" in EDMA.

    -Herb

  • Hi,

    EDMA is a enhanced DMA engine. With which you can do a memcpy from one memory area to other. Using EDMA you will be able to convert RGB88 packed to RGB888 unpacked in 32 bit container. After which you can add the Alpha value to it. If you have Alpha value ready in another buffer for whole image then you can EDMA that also in to the vacant Alpha position in RGB888 unpacked to make it RGBA.

    Regards,

    Hardik Shah