Performance test tool for GPU drivers Open source Mali/UMP - linux-kernel

I am using ARMv7 TV Board, having board specific GPU driver mali400x4 (OpenGL ES 1.1, 2.0 and OpenVG 1.1). I would like to know any test project suite to test performance, stress, Lmbench for this driver.

Glean and Piglit OpenGL driver testing tools
Glean-> 1) evaluating the quality of OpenGL.
Piglit -> 1) Helps to improve quality of openGL driver by regression tests.
Piglit OpenGL Driver Testing Framework Now Works with ARM Linux
Read more:
http://www.cnx-software.com/2013/01/09/piglit-opengl-driver-testing-framework-now-works-with-arm-linux-opengl-es/

Related

Mesa or Mali is in use?

I have a embedded system which's GPU is mali T624.
I have glmark2 and glmark2-es2,
when running glmark2, information shows mesa software render
when running glmark2-es2, info shows T624 openGL ES 3.1
My question is, if I have QT demos which need openGL acceleration,
how can I know whether Mesa software render or Mali HW render in use?
and how can I manually switch in between?
thanks.
The glmark benchmark comes in two flavors.
The glmark2 binary uses the full OpenGL backend
The glmark2-es2 binary uses the OpenGL ES backend
Mali only supports OpenGL ES; it doesn't ship with a full desktop OpenGL driver.
In terms of "is Mali being used" you can install the DS-5 Streamline profiler - Community Edition is free - which will let you determine if there is any GPU activity in the system.

LWJGL doesn't recognize OpenGL on Raspberry Pi

So I am trying to run a LibGDX game which uses LWJGL as a backend on my Raspberry Pi 3. I tried various gl driver combinations on the pi:
experimental driver: game start but crashes soon after with JVM Errors, totally unstable
no experimental driver: software rendering seemes to be used, very slow
propretairy driver only (mesa uninstalled): LWJGL fails at initializing gl and crashes (stacktrace below)
Since I think the proprietary driver is the most stable GL driver I intend to use it. Also, I know that OpenGL is working because of glxgears an JOGL working fine.
So, has anybody any hint or an idea where to start looking? Is this a LWJGL issue or a GL driver issue?
Thank you in advance,
Manuel
Stacktrace:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: OpenGL is not supported by the video driver.
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.createDisplayPixelFormat(LwjglGraphics.java:322)
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setupDisplay(LwjglGraphics.java:216)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:144)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
Caused by: org.lwjgl.LWJGLException: Could not init GLX
at org.lwjgl.opengl.LinuxDisplayPeerInfo.initDefaultPeerInfo(Native Method)
at org.lwjgl.opengl.LinuxDisplayPeerInfo.<init>(LinuxDisplayPeerInfo.java:61)
at org.lwjgl.opengl.LinuxDisplay.createPeerInfo(LinuxDisplay.java:831)
at org.lwjgl.opengl.DrawableGL.setPixelFormat(DrawableGL.java:61)
at org.lwjgl.opengl.Display.create(Display.java:846)
at org.lwjgl.opengl.Display.create(Display.java:757)
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.createDisplayPixelFormat(LwjglGraphics.java:314)
... 3 more
LWJGL and LWJGL3 do support the open-source (Mesa) OpenGL driver. The numerous demos of Minecraft Java Edition for Raspberry Pi demonstrate this.
In fact LibGDX runs smoothly on a Raspberry Pi 3 as shown by PokeMMO.
The right direction is to pursue the open-source driver, which at the time of writing is no longer labeled experimental. In fact it is the only way to use accelerated 3D graphics on a Raspberry Pi 4.
Since I think the proprietary driver is the most stable GL driver I intend to use it. Also, I know that OpenGL is working because of glxgears and JOGL working fine.
JOGL has the advantage of supporting both the proprietary GLES driver (for a Pi Zero) as well as an OpenGL backend. The proprietary driver cannot run full OpenGL though, so it may appear to work only because the Pi 3's CPU is sufficient to run glxgears in software rendering at full speed.

Debugging OpenGL ES 2.0 game that runs in Windows through PowerVR emulation

I have small cross platform engine that runs my OpenGL ES 2.0 games on Android and on Windows. To run it on Windows I am using PowerVR emulator (just libraries linked to the project). It all works well.
Now I would like to debug it and inspect in any OpenGL debugger. I tried Intel GPA, AMD CodeXL, gDebugger, glslDevil. But non of them were able to do it. In case of Intel GPA it did not find the running game. In other cases it started the game but failed to pause it or do anything later.
I do not know whether it is because it is OpenGL ES instead of OpenGL. But the PowerVR emulation must work like translating OpenGL ES to OpenGL, I think?
My questions are:
Is there any (utility) way how to debug OpenGL ES 2.0 programs on Windows?
Or is there any better emulation library than PowerVR that will force the app look like OpenGL for other tools (instead of OpenGL ES)?
I am doing all this as none of debuggers work for me on Android device. I am developing with Samsung Galaxy Tab (which is Tegra GPU), but Nvida's PerfHUD ES does not currently support it (and I also do not meet Android 4.0 or higher having only 3.1)
Is there any way how to debug OpenGL ES on Android device that has Android version 3.1 and it is Samsung Galaxy Tab device?
Thanx
You're correct - PVRVFrame translates OpenGL ES calls into host OpenGL calls. This is why the likes of gDEBugger will capture the OpenGL API calls made by the emulator rather than the calls you actually submitted.
The PowerVR SDK includes an OpenGL ES/EGL API recording tool called PVRTrace that has all of the functionality you're looking for.
The PVRTrace recording libraries can be used to record applications using PVRVFrame on Windows and Linux. The SDK also includes recording libraries for Android and Linux devices.
PVRTraceGUI (analysis tool for Windows, OSX & Linux) can be used to review and inspect the data you've recorded. It also has an Image Analysis widget that allows you to step through the draw calls in your recording & some other handy features, such as a Pixel Analysis pie chart that highlights the most costly fragment shaders in your render so you know where to focus shader optimisation.
There's also a PVRTrace standalone playback tool that allows you to replay your recordings on any of the supported OS's (inc. Windows & Android).
You can find an overview of the tool on the Imagination website here & can download PVRTrace through the PowerVR SDK installer, available here
I routinely debug OpenGL ES on Windows using the PowerVR VFrame translator, which converts OpenGL ES calls to OpenGL, as you said. I think it's the best solution. VFrame has some step and tracing features, but mostly I am using the debugging features of MSVC++.
If you are using GLSurfaceView on android, it has an OpenGL ES tracing feature too. I also recommend using an X86 AVD rather than ARM or trusting the drivers on any one device. This article explains in detail:
http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1

OpenGL ES 2.0 software library

I have an application written on embedded device which is running on OpenGL ES 2.0. I want to debug issues with the application using PC . Currently My PC is running Ubuntu 11.04 and it doesnt have any Graphics card.
For the purpose of debugging , I want to have any software based OpenGL ES2.0 libraries. Is there any such libraries preset? If so can any one provide me a link?
Thanks
You have emulator from ARM AMD and Imagination Technologies to run opengl es 2.0 on windows/ubuntu.
I suggest going with Imagination technologies one.
here is the link http://www.imgtec.com/powervr/insider/sdkdownloads/index.asp

OpenGL software rendering alternatives

I need to software render OpenGL in Windows and have already found about Mesa3D, which doesn't provide DLLs and I'm having some pain to build... Are there alternatives available?
That depends on what OpenGL version you wish to accelerate. Depending on your needs, there are some alternatives available. I've listed those I'm aware of below:
OpenGL 1.0 & 1.1
Windows (since Windows NT 3.5) actually includes an OpenGL software implementation to begin with. If you haven't installed any other software rasterizer, this ought to be your default implementation. The Microsoft software rasterizer supports either OpenGL 1.0 or 1.1, depending on your platform, but will not accelerate anything newer than that. If your desired OpenGL version is covered by 1.0 or 1.1 (however unlikely), the solution should be sufficient. I'm unsure as to what extent the default Windows OpenGL software implementation covers the OpenGL ES 1.x frameworks through its OpenGL 1.0 or 1.1 support.
OpenGL 1.4
Furthermore, in Windows Vista, Microsoft included an emulation layer which may translate OpenGL into Direct3D; thus supporting up-to OpenGL 1.4. Additionally, this should mean that Windows Vista (and up?) runtimes may accelerate most parts of OpenGL SC. I've never used this emulator myself, and was quite surprised to hear about it, but it may be of interest to someone having to run one of these old frameworks in a Windows environment.
Note that the standard Windows OpenGL software rasterizer (OpenGL 1.0 or 1.1) is also included in Windows Vista and above.
OpenGL ES 2.0
Additionally, there's the ANGLE project which accelerates WebGL and OpenGL ES 2.0 by translating OpenGL ES 2.0 invocations to DirectX 9 and 11. Their development notes also mention that an OpenGL ES 3.0 solution is in the works. Never having used ANGLE, I cannot offer a verdict.
OpenGL 3.1
In addition to those mentioned above, Mesa 3D (which supports up to OpenGL 3.1) feature three software implementations:
swrast
softpipe
llvmpipe
Since I know very little of swrast (the original Mesa project software rasterizer) and softpipe (a reference driver) I'll refrain from going into these. The third implementation, llvmpipe, and probably the one that may interest you the most, is a high-speed software implementation that uses multithreading and JIT compilation to speed up simulation with native- and SIMD instructions.
I have used Swiftshader from Transgaming for a production project before and I must say, it was brilliant. A tad costly, but brilliant.
As far as I've searched, the only other option is using WebGL software renderer, that as of today only Chrome supports. Direct3D has the reference driver (which is really unstable) and Swiftshader, which is good and expensive.
After some more headaches I managed to build Mesa3D for Windows, but only an old version which had still some support for it. At least, it has an awesome performance.

Resources