Hello,
I am looking for Mali-400 documentation. Not high level 'This is a great GPU with 4 pixel shader' powerpoint, but something along the lines of:
Here is the list of all the CPU accessible registers for the GPU and what happen when you read/write to them...
This type of info is usually made available for CPU periferials, but I am unable to locate anything like this for Mali.
Regards, Cryille
Hi cyrille,
I don't think any documentation exists (at least publicly) that describes the registers that control GPU operation, as this is all typically handled by the kernel/userspace components of the driver stack. You're limited to what you can gather from the kernel driver as it is open source, and any documentation available from infocenter.arm.com, but there doesn't seem to be much touching on that area, so kernel driver is your best bet! I think the register interface is probably intentionally basic however, and won't tell you much.
Can I ask what it is you were hoping to do with the information? Might be able to help further if I understand your use-case.
Hope this helps,
Chris
There are 2 reasons why I am looking for that type of info
I will most likely be working on a product with a Mali400 GPU, on it, we will be running an OS comming from an ARM9 chip. Of course, that OS does not have Mali support and it is unlikely that we can get an 'of the shelf driver, incorporate it and make it work.
In addition, the off the shelf stuff will be Open GL or similar which is not what we need (and most likely an overkill).
I will also most likely be responsible for implementing all the low level drawing primitives (pixel, lines, rectangles, circles, fonts, alpha blending, triangle and fill poly).. I have done this multiple times over muliple CPU with various 2D accelerators, and in all cases, I had full documentation... however, no doc seems available for Mali which is frustrating...
I also needs to know what mali does and does not support. It is great to say: use Open GL and your application will work anywyere... However, in my work, which is device specific embedded applications, that portability is secondary to speed. So, I need to know what, in Open GL is done in HW and what will be done in SW so that I only use HW supported features...
Therefore my question: I want to know how does Mali realy work, what can it realy do (and not do) and how does it do it in order to design the upper layers of my application in consequence. Having access to the low level documentation such as register description usually does provide that type of data...
Asside from that, why does documentation not exist publicly? As an engineer working on product design, it seems that over the last 5~10 years data has been incrisibly hidden from view, CPU datasheet have gone slimer and slimer with less and less details (while the CPU on the other side got more and more complex). 10 years ago, I could find all the info, including pricing, that I wanted on the internet, 5 years ago, I could still find 1000 pages datasheet, but prices were not to be seen and some data/features were not documented (Jazelle for example)...
Now, you are hard press to get any 'real' datasheet (all you can get is marketing bs), most features are not detailed which makes it very very frustrating...
Thanks for any help/info that you can provide
Cyrille
Hi Cyrille,
There is no public information from ARM about how to use the Mali GPU hardware without our drivers; the "product" we sell is the pair of hardware and software components. If you use our drivers then you will get OpenGL ES 1.1 and OpenGL ES 2.0 support out of the box (give or take OS support).
Your chipset provider should be able to provide you with the Mali drivers for the device, or you could contact our licensing team directly about getting source access yourself.
HTH, Pete
Is there at least information on what it supports/can and can not do?
One important info for me, for example, is: What are it's 2D capability?
Can it do lines, blits, rectangles, font drawing? Within which limits (alpha blending?)
> Is there at least information on what it supports/can and can not do?
Well we support everything in the OpenGL ES 1.1 or 2.0 specs, plus a set of extensions to that behavior. OpenGL ES 2.0 is based on a programmable shader design (you write programs which run on the GPU) so it can pretty much do anything.
> Can it do lines, blits, rectangles, font drawing? Within which limits (alpha blending?)
lines => yes, via GL_LINES
rectangles => there is no OpenGL ES primitive for rectangles, but you can draw two triangles
fonts => there is no "font" rendering per-say; you can flatten fonts to a texture (https://www.google.co.uk/search?q=font+atlas#q=OpenGL+ES+font+atlas+image), and then render your text as an array of triangles loading the relevant parts of the texture. Most "serious" font rendering [e.g. browser rendering, etc] is done in software on the CPU (sub-pixel hinting, etc, is too complex to do on the GPU). It's good enough for game user interfaces, etc though.
alpha blending => yes, multiple run-time options of blend modes available.
HTH,
Pete