glReadPixels performance problem @Samsung Galaxy S4 LTE, PowerVR SGX 544 MP


Hi,

I make Video Filter Application using OpenGL ES 2.0 Shader at Android
(Samsung Galaxy S4 LTE, PowerVR SGX 544 MP, Android 4.2.2)

1) glReadPixels is so slow. (than Mali, Adreno)

2) I increased the performance in Mali, Adreno using GraphicBuffer.
But..
"new GraphicBuffer" Allocation is not working on PowerVR SGX 544 MP ?

graphicBuffer_ = new GraphicBuffer(640, 480,
HAL_PIXEL_FORMAT_RGBA_8888,
GraphicBuffer::USAGE_HW_TEXTURE |
GraphicBuffer::USAGE_HW_2D |
GRALLOC_USAGE_SW_READ_OFTEN |
GRALLOC_USAGE_SW_WRITE_OFTEN);

10-29 21:47:08.156: E/IMGSRV(26821): :0: gralloc_device_alloc: Unsupported usage bits (0xP...FHWR=0x00000533) for allocation
10-29 21:47:08.156: W/GraphicBufferAllocator(26821): WOW! gralloc alloc failed, waiting for pending frees!
10-29 21:47:08.156: E/IMGSRV(26821): :0: gralloc_device_alloc: Unsupported usage bits (0xP...FHWR=0x00000533) for allocation

What can I do to get fast the rendered data using OpenGL ES 2.0 from GPU to CPU @PowerVR SGX 544 MP?

ps.
https://www.imgtec.com/index.php/powervr/instagram-like-computational-photography-powervr-sgx-gpus
Can I use SDK mentioned in this article?
Can this SDK solve my problem?

Please Help me.
Thank you!
Kwangsu Kim

Hi,



The GraphicBuffer you are trying to allocate seems fine to me. I’ve checked the driver sources and we do support the usage flags you are using.



Can I get a code sample that reproduces the issue so I can try to work it out from my side? I suspect that the driver may have been modified by Samsung but is too early for me to tell.



Thanks,

Guillem

Hi,



I’ll prepare a code sample project soon.

Do you know another way that get the rendered RGBA data using opengl es 2.0?



Thank you.

Kwangsu

Hi, Guillem



Galaxy Nexus uses “PowerVR SGX 540” @Android 4.3

When I allocate Graphic Buffer, the same error occurs.



Thank you

Kwangsu