This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Mali Graphics Debugger: Not getting trace data in GUI

I am trying to trace the GPU activity on an unrooted Samsung S6 using Unity. I have added the libMGD.so to my application and it does appear in my .apk package. I have installed the MGDDaemon and this can see my application.

I start the MGDDaemon and the Mali Graphics Debugger application (Windows8).

Debug | "Connect to target" appears to work and launches a window titled "Capturing Target@/127.0.0.1:5002".

There is no message on the console and no other output appears.

From the MGDDaemon app on device, I select my application which launches.

There are still no traces appearing within the Windows MGD app.

MGD v 3.0.0.6d92cba7

android-non-root\arm\armeabi-v7a\libMGD.so  dated 05/08/2015 18:38

Are messages getting lost somewhere?

Thanks in advance,

Ed

logcat_gearvr_mgd1.txt.zip
Parents
  • I spent hours trying to get MGD working without voiding my warranty by rooting my device.  I finally managed to get it going.  Here's what you have to do on the UNITY side (you also have to follow the manual about getting MGDDeamon on your device):

    Copy libMGD.so into your Unity Project's Assets/Plugins/Android folder.

    Create your own Activity that derives from UnityPlayerActivity and throw the hook in there.  Then compile that .java into a .class, then put that .class into a .jar.  Finally, place a modified AndroidManifest.xml in your Assets/Plugins/Android folder which will launch your modified activity as the main activity.

    Here is the code for the Activity:  [Java] Mali Debugger Unity Activity - Pastebin.com

    Here's how I compile the .java and .jar it up:

    set CurrentDir=%~dp0%

    set JdkBin="C:\Program Files\Java\jdk1.8.0_66\bin"

    set AndroidJar="B:\Junctions\Android\sdk\platforms\android-23\android.jar"

    set UnityJar="B:\Junctions\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes\classes.jar"

    set TargetJavaDir=%CurrentDir%

    set TargetJava="SOME_SOURCE\com\CodingJar\MaliDebugActivity.java"

    set TargetJar="SOME_SOURCE\Assets\Plugins\Android\CodingJar-Development.jar"

    pushd %JdkBin%

    javac -bootclasspath %AndroidJar% -cp %UnityJar% -source 1.6 -target 1.6 %TargetJava%

    jar cvf %TargetJar% -C %TargetJavaDir% "com/CodingJar/MaliDebugActivity.class"

    popd

    The AndroidManifest.xml which you can base yours off of is found in Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk

    I have only tested this with Google Cardboard and it appears to work.  If any Mali engineers are watching, PLEASE supply us with a custom function we can call in your libMGD.so so that it can mark the end of a frame.  This way we can use it for VR rendering as well without waiting for you to figure out what to hook instead of eglSwapBuffers.

    Cheers.

Reply
  • I spent hours trying to get MGD working without voiding my warranty by rooting my device.  I finally managed to get it going.  Here's what you have to do on the UNITY side (you also have to follow the manual about getting MGDDeamon on your device):

    Copy libMGD.so into your Unity Project's Assets/Plugins/Android folder.

    Create your own Activity that derives from UnityPlayerActivity and throw the hook in there.  Then compile that .java into a .class, then put that .class into a .jar.  Finally, place a modified AndroidManifest.xml in your Assets/Plugins/Android folder which will launch your modified activity as the main activity.

    Here is the code for the Activity:  [Java] Mali Debugger Unity Activity - Pastebin.com

    Here's how I compile the .java and .jar it up:

    set CurrentDir=%~dp0%

    set JdkBin="C:\Program Files\Java\jdk1.8.0_66\bin"

    set AndroidJar="B:\Junctions\Android\sdk\platforms\android-23\android.jar"

    set UnityJar="B:\Junctions\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes\classes.jar"

    set TargetJavaDir=%CurrentDir%

    set TargetJava="SOME_SOURCE\com\CodingJar\MaliDebugActivity.java"

    set TargetJar="SOME_SOURCE\Assets\Plugins\Android\CodingJar-Development.jar"

    pushd %JdkBin%

    javac -bootclasspath %AndroidJar% -cp %UnityJar% -source 1.6 -target 1.6 %TargetJava%

    jar cvf %TargetJar% -C %TargetJavaDir% "com/CodingJar/MaliDebugActivity.class"

    popd

    The AndroidManifest.xml which you can base yours off of is found in Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk

    I have only tested this with Google Cardboard and it appears to work.  If any Mali engineers are watching, PLEASE supply us with a custom function we can call in your libMGD.so so that it can mark the end of a frame.  This way we can use it for VR rendering as well without waiting for you to figure out what to hook instead of eglSwapBuffers.

    Cheers.

Children