Hi,
I have few basic questions about Mali packages.
Please understand my lack of understanding in this field.
My company designed a new board in purpose of playing HD videos on Linux DirectFB envionment.And the video player would may be VLC player.
In my case which packages are required for the best graphic performance?
OpenGL ES can enhance the graphic performance?
Does it because fbdev uses 3D APIs?
If 3D APIs are not required, can I replace OpenGL ES with OpenCL?
Additionally do I need to port OpenCL to enable NEON? Or NEON can be utilized without OpenCL or OpenGL ES?
PLEASE please help me.
Project time schedule is quite desperating..
Thank you.
Hi Moonami,
NEON is a co-processor and the only requirement is that you have compiler support to be able to compile code which uses it. NEON has no dependency on any APIs, and works the same as SSE on Intel, for example. Write NEON in either assembly or intrinsics, or use a vectorizing compiler, and it will run on any processor with NEON.
OpenGL ES is a 3D graphics API, and OpenCL is a compute API. Both use the GPU to accelerate workloads, but only for applications which target the API (VLC probably does not, but ffmpeg can optionally be built with OpenCL support for some filters https://trac.ffmpeg.org/wiki/HWAccelIntro)
In the case of VLC, I don't believe OpenGL ES or OpenCL are necessary at all for video decode. I'm not familiar with exactly how VLC works, but my money would be on it using ffmpeg, or OpenMAX (or ffmpeg uses OpenMAX) or something along those lines to decode the video. OpenMAX is an API which grants access to hardware blocks designed specifically for decoding video, so if your SoC has such hardware there should be a userland library, possibly OpenMAX, providing access to it, but this is treading into territory I'm not so familiar with.
Hope this helps,
Chris
Just to check:
You say you're working on a board - Have you selected an SoC yet, or are you looking to base your decision on what features you need for this use case?
If you don't yet have an SoC in mind, a good starting place is here: Mali GPUs in devices. You'll find some info on Mali SoCs well suited for various types of end product.
-Stacy
Hi, Stacy
Soc is selected and temporary boards are released.
Our board has T6xx Mali.
And I have received Open GL ES from SoC vendor already.
I wanted to make sure whether I can reach to the best graphic performance without OpenCL.
Thank you for your answer.
Nari
You probably won't need OpenCL, but the Mali GPU isn't a video decode accelerator, so I'm not sure the Mali GPU driver is really what you after. Video != Graphics.
HTH, Pete
Chris, I really appreciate to your answer.
And I guess I may need OpenCL package to accelerate video decoding of VLC player.
This article below says VLC player's decode performance can be reached up to 10x speeds when it use hardware acceleration.
OpenCL Software Development Services GPGPU Acceleration
And there is 'Use GPU accelerated decoding' check box in VLC player too.
It can bewrong, so I'd better find some more information though..
And then, I have new question..
My board has MFC hardware codec. And if I assume that I add gstreamer framework layer that linked to MFC hardware codec,
Will this MFC with gstreamer have better graphical performance compared to GPU accelerated(by OpenCL) FFMPEG software codec and gstreamer framework layer added?
Hi Nari,
No problem, it's what we're here for
And I guess I may need OpenCL package to accelerate video decoding of VLC player. This article below says VLC player's decode performance can be reached up to 10x speeds when it use hardware acceleration. OpenCL Software Development Services GPGPU Acceleration
They are not using OpenCL to perform the decoding of the video, they use OpenCL to accelerate some image filtering/processing (denoise, deshake, scaling) on the decoded video frames, and they observe a 10x speedup compared to doing this processing on the CPU. They are NOT decoding the video stream itself using OpenCL, this is still being done with some other API.
And there is 'Use GPU accelerated decoding' check box in VLC player too. It can bewrong, so I'd better find some more information though..
I can't say I know what this refers to, but I'd take a look at the code and see what it hooks up to. Best case it uses OpenCL to perform the video decode, but this almost certainly will be less performant than performing the video decode on MFC.
My board has MFC hardware codec. And if I assume that I add gstreamer framework layer that linked to MFC hardware codec, Will this MFC with gstreamer have better graphical performance compared to GPU accelerated(by OpenCL) FFMPEG software codec and gstreamer framework layer added?
Yes MFC is ultimately what you should be using to perform the video decode. From what I understand, the Android framework, gstreamer, and XBMC (possibly through gstreamer) make use of MFC to perform video decode. The odroid forums have some talk of XBMC using MFC so it's worth taking a look there.
When you say "graphical performance", I assume you mean video decode performance, and not 3D rendering performance, in which case yes MFC will be much faster and more power efficient than decoding on the CPU, using FFMPEG software codec, OpenCL accelerated, or similar. I'm stressing the difference here between "graphics" and "video" as this seems to be the cause of much of the confusion
Thank you for your reply, Chris.
You've been so much help to me!