Imagination PowerVR SDK Blog

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


#1

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

#2

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


#3

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


#4

Hi, Guillem



Galaxy Nexus uses “PowerVR SGX 540” @Android 4.3

When I allocate Graphic Buffer, the same error occurs.



Thank you

Kwangsu