I figured I would write a small guide on the OpenGL ES 3 backend in Dolphin Mobile.
The OpenGL ES 3 backend first became available in Dolphin Mobile pre-alpha 0.6.
The OpenGL ES 3 backend was fixed to work in Android 4.3 release drivers in Dolphin Mobile Alpha 0.12.
Dolphin Mobile gained support for the Nvidia K1 on the Alpha 0.14 version.
There are rendering issues in many games!
There are many /many/ rendering issues due to bugs in Qualcomm's video drivers. We've tried to work around as many issues as possible, but due to how many bugs there are it is impossible to work around every single one of them. There will be graphical issues in games due to their drivers and the only thing that can be done is hope newer versions will fix the issue.
These issues can manifest themself as spiky polygons appearing, black screen issues, textures being completely broken or more!
With v95 Qualcomm drivers, nearly all rendering bugs are gone.
You can determine your driver version in Dolphin Mobiles About page.
All the on screen controls are in the upper left side of the screen
Go to the input settings to configure the on screen overlay to set where the on screen controls are.
Make the OpenGL backend support my OpenGL ES 2 device!
That isn't possible. Our OpenGL backend mandates a lot of OpenGL ES 3.0 features that can't physically be supporting by hardware that only supports OpenGL ES 2.0. We can't do it.
Even though we support OpenGL ES 3.0, even that support is quite limiting for us as a desktop application being ported to an API that is a subset of the desktop implementation.
For best results an Nvidia device with desktop GL support is recommended.
How can I determine if my phone has OpenGL ES 3 support?
Go to t he About page in Dolphin Mobile and it'll say if you do or not.
What's the best device to run Dolphin Mobile on?
The best device to run Dolphin with will be an Nvidia K1 device. Nvidia has the highest performing CPU and GPU combination. With Nvidia's GPU speeds can hit 3x the performance of Adreno and Mali devices, which is due to their amazing video drivers.
For a long while Dolphin recommended Mali devices over Adreno devices due to the bugs in the Adreno drivers.
With the advent of Qualcomm releasing their v95 video drivers, it is now recommended to buy a Qualcomm Adreno device over a Mali device as long as your device has at least that driver version.
Qualcomm Adreno is recommended over ARM Mali due to performance concerns.
[color=#FF0000]ARM Mali will be the slowest mobile GPU for a long time.[/color]
GPUs that haven't been tested with Dolphin is PowerVR6 and Vivante.
PowerVR6 is expected to have better performance than Mali, but it's untested.
Vivante's hardware has low performance compared to other hardware, and they don't have OpenGL ES 3.0 drivers.
You talked about the GPU, what's the best CPU for Dolphin mobile?
The fastest most powerful CPU you can possibly get. Truly Dolphin is the biggest CPU hog ever, it requires very powerful CPUs, where even on the desktop it will bring a Intel Core i7-4770k to its knees in some games.
The problem is that these Chinese Octo-core SoCs don't really help us; We can't really use more than 3 CPU cores with Dolphin mobile, so eight doesn't help us.
A big contributing factor for us is IPC(instructions per clock), the faster the single threaded performance is, the better off Dolphin is.
Really the best CPU for Dolphin Mobile is currently the fastest Cortex-A15 you can get. Which the 2.3Ghz Cortex-A15 in a Nvidia K1 can run quite a few games at more than 50% speed, and some at full speed.
What about 64bit ARM CPUs that are going to be coming out?
True, everyone and there mother will be going to 64bit ARM CPUs soon. Samsung, Qualcomm, Nvidia, and multiple Chinese manufacturers all have plans to release 64bit ARM SoCs either towards the end of this year or next year. But how will they improve the performance of Dolphin?
There are currently 3 different CPUs that are 64bit ARM compatible, the Cortex-A53, Cortex-A57, and Nvidia's AArch64 Transmeta CPU.
All three of these CPUs are expected to have a higher IPC than what is available in Cortex-A15, so they should do reasonably well running our 32bit core.
Until we have a 64bit CPU core available we won't get the full improvements of the new architecture, and we don't know how much quicker the CPU core will get.
Potentially improve performance by locking GPU to high performance mode.
GPU vendors have a hard time determining how much GPU power we need and tend to keep us in a very low power mode. This can be rectified by keeping the GPU at it's max frequency.
All these commands are safe to run, they aren't capable of frying your device and they will reset on device restart.
For the Nvidia K1, I disable 3D scaling which locks it at the full frequency of the GPU. One has to execute two commands in quick succession to do this. So the best way is to put the two commands in a bash file to run.
These commands must be run as root, and will only work on a K1.
For Qualcomm/Adreno based devices, the command to force max GPU clock is fairly simple. Again requiring root, I just have this in a bash file on the device.
For Mali devices, again the command has to run as root. It is just disabling DVFS on the GPU.
Problem is that it is in different locations depending on device, which is a bit annoying.
This doesn't really help Mali devices because their speed limitations are the video drivers, not the GPU itself.
On my Chromebook the command would be
This should be at least a little bit helpful to some. More issues and questions as they arise should be put here.
The OpenGL ES 3 backend first became available in Dolphin Mobile pre-alpha 0.6.
The OpenGL ES 3 backend was fixed to work in Android 4.3 release drivers in Dolphin Mobile Alpha 0.12.
Dolphin Mobile gained support for the Nvidia K1 on the Alpha 0.14 version.
There are rendering issues in many games!
There are many /many/ rendering issues due to bugs in Qualcomm's video drivers. We've tried to work around as many issues as possible, but due to how many bugs there are it is impossible to work around every single one of them. There will be graphical issues in games due to their drivers and the only thing that can be done is hope newer versions will fix the issue.
These issues can manifest themself as spiky polygons appearing, black screen issues, textures being completely broken or more!
With v95 Qualcomm drivers, nearly all rendering bugs are gone.
You can determine your driver version in Dolphin Mobiles About page.
All the on screen controls are in the upper left side of the screen
Go to the input settings to configure the on screen overlay to set where the on screen controls are.
Make the OpenGL backend support my OpenGL ES 2 device!
That isn't possible. Our OpenGL backend mandates a lot of OpenGL ES 3.0 features that can't physically be supporting by hardware that only supports OpenGL ES 2.0. We can't do it.
Even though we support OpenGL ES 3.0, even that support is quite limiting for us as a desktop application being ported to an API that is a subset of the desktop implementation.
For best results an Nvidia device with desktop GL support is recommended.
How can I determine if my phone has OpenGL ES 3 support?
Go to t he About page in Dolphin Mobile and it'll say if you do or not.
What's the best device to run Dolphin Mobile on?
The best device to run Dolphin with will be an Nvidia K1 device. Nvidia has the highest performing CPU and GPU combination. With Nvidia's GPU speeds can hit 3x the performance of Adreno and Mali devices, which is due to their amazing video drivers.
For a long while Dolphin recommended Mali devices over Adreno devices due to the bugs in the Adreno drivers.
With the advent of Qualcomm releasing their v95 video drivers, it is now recommended to buy a Qualcomm Adreno device over a Mali device as long as your device has at least that driver version.
Qualcomm Adreno is recommended over ARM Mali due to performance concerns.
[color=#FF0000]ARM Mali will be the slowest mobile GPU for a long time.[/color]
GPUs that haven't been tested with Dolphin is PowerVR6 and Vivante.
PowerVR6 is expected to have better performance than Mali, but it's untested.
Vivante's hardware has low performance compared to other hardware, and they don't have OpenGL ES 3.0 drivers.
You talked about the GPU, what's the best CPU for Dolphin mobile?
The fastest most powerful CPU you can possibly get. Truly Dolphin is the biggest CPU hog ever, it requires very powerful CPUs, where even on the desktop it will bring a Intel Core i7-4770k to its knees in some games.
The problem is that these Chinese Octo-core SoCs don't really help us; We can't really use more than 3 CPU cores with Dolphin mobile, so eight doesn't help us.
A big contributing factor for us is IPC(instructions per clock), the faster the single threaded performance is, the better off Dolphin is.
Really the best CPU for Dolphin Mobile is currently the fastest Cortex-A15 you can get. Which the 2.3Ghz Cortex-A15 in a Nvidia K1 can run quite a few games at more than 50% speed, and some at full speed.
What about 64bit ARM CPUs that are going to be coming out?
True, everyone and there mother will be going to 64bit ARM CPUs soon. Samsung, Qualcomm, Nvidia, and multiple Chinese manufacturers all have plans to release 64bit ARM SoCs either towards the end of this year or next year. But how will they improve the performance of Dolphin?
There are currently 3 different CPUs that are 64bit ARM compatible, the Cortex-A53, Cortex-A57, and Nvidia's AArch64 Transmeta CPU.
All three of these CPUs are expected to have a higher IPC than what is available in Cortex-A15, so they should do reasonably well running our 32bit core.
Until we have a 64bit CPU core available we won't get the full improvements of the new architecture, and we don't know how much quicker the CPU core will get.
Potentially improve performance by locking GPU to high performance mode.
GPU vendors have a hard time determining how much GPU power we need and tend to keep us in a very low power mode. This can be rectified by keeping the GPU at it's max frequency.
All these commands are safe to run, they aren't capable of frying your device and they will reset on device restart.
For the Nvidia K1, I disable 3D scaling which locks it at the full frequency of the GPU. One has to execute two commands in quick succession to do this. So the best way is to put the two commands in a bash file to run.
These commands must be run as root, and will only work on a K1.
Code:
echo '0' > /sys/devices/platform/host1x/gk20a.0/enable_3d_scaling
chmod 000 /sys/devices/platform/host1x/gk20a.0/enable_3d_scaling
For Qualcomm/Adreno based devices, the command to force max GPU clock is fairly simple. Again requiring root, I just have this in a bash file on the device.
Code:
cat /sys/class/kgsl/kgsl-3d0/max_gpuclk >> /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
For Mali devices, again the command has to run as root. It is just disabling DVFS on the GPU.
Problem is that it is in different locations depending on device, which is a bit annoying.
This doesn't really help Mali devices because their speed limitations are the video drivers, not the GPU itself.
On my Chromebook the command would be
Code:
echo 'off' > /sys/devices/118000000.mali/dvfs
This should be at least a little bit helpful to some. More issues and questions as they arise should be put here.