Unable to install PVRTrace on Android

Hello,



We’ve got trouble installing PVR Trace on Android devices. First of all we can’t have our devices rooted, so we started to use the “manual installation without root permissions”.



PVR SDK is install on the host

Android SDK is fully install too on the host

PVRTraceApp.apk has been installed on the devices





First question, in the “PVRTrace.User Manual.pdf”, appendix B2, it is said:



"Note: These instructions assume the following default locations for files (the locations can be changed during installation):


  • The PVRTraceSetup app has been used to install the Trace libraries on the device to: /data/data/com.powervr.OGLES2Texturing/lib/libPVRTrace.so"



    => This tool can’t be used to do that on a non rooted devices, is this something we have to care about?





    Second question, in the “PVRTrace.User Manual.pdf”, appendix B2, it is said:



    “Edit pvrtrace.cfg so it points to the Android framework libraries (since we are calling PVRTrace before the Android shim). pvrconfig.cfg should look similar to this:

    Note: pvrconfig.cfg should be placed on ‘/sdcard’ so the user can read and write to the file without root permissions.”



    => Sentence starts talking about “pvrtrace.cfg” and then “pvrconfig.cfg”, is this normal?



    => We’ve copied two files (the same one) with both names in “/mnt/sdcard"

    Content is this one:

    ”[host]

    EglLibraryPath = /system/lib/libEGL.so

    Es1LibraryPath =/system/lib/libGLESv1_CM.so

    Es2LibraryPath = /system/lib/libGLESv2.so



    [record]

    TraceFile = /sdcard/trace.pvrt

    RecordData = 1

    StartFrame = 0

    EndFrame = 500

    SaveFrameBuffer = 0

    SaveFileToDisk = 1

    Network = 0

    DebugInfo = 0"





    We’ve added the following in our main java class

    " static {

    try {

    System.load("/data/data/com.powervr.OGLES2Texturing/lib/libEGL_PVRTRACE.so");

    System.load("/data/data/com.powervr.OGLES2Texturing/lib/libGLESv2_PVRTRACE.so");

    System.load("/data/data/com.powervr.OGLES2Texturing/lib/libPVRTrace.so");

    }

    catch( UnsatisfiedLinkError e ) {

    System.err.println(“PVR Native code library failed to load.n” + e);

    }

    }

    "



    => We’ve changed our Android.mk with the following:

    “LOCAL_LDLIBS := -lGLESv2

    -ldl

    -llog

    -Lc:/Imagination/PowerVR/GraphicsSDK/PVRTrace/Recorder/Android_armeabi-v7a

    -lEGL_PVRTRACE

    -lGLESv2_PVRTRACE”



    => We are compiled using VisualGDB under Visual Studio. A warning message is telling that EGL_PVRTRACE and GLESv2_PVRTRACE are not system libs (but this is only a warning)





    Starting our apk give the following result:

    "10-02 15:39:54.178: I/dalvikvm(12132): Turning on JNI app bug workarounds for target SDK version 8…

    10-02 15:39:54.248: D/dalvikvm(12132): Trying to load lib /data/data/com.powervr.OGLES2Texturing/lib/libEGL_PVRTRACE.so 0x41209070

    10-02 15:39:54.248: W/System.err(12132): PVR Native code library failed to load.

    10-02 15:39:54.248: W/System.err(12132): java.lang.UnsatisfiedLinkError: Cannot load library: load_library[1091]: Library ‘/data/data/com.powervr.OGLES2Texturing/lib/libEGL_PVRTRACE.so’ not found"





    As you understood, nothing is working. Can anyone can help us solve this problem? Thanks in advance.

Hi,



I did actually write a blog port about that :slight_smile:

https://www.imgtec.com/index.php/powervr-developers/pvrtrace-and-rootless-recording-on-android



Notice as well that we wrote a manual that will be included in the upcoming 3.2 release.



Cheers,

Guillem

Hi Guillem,



Thanks to your blog I’ve made some progress. I’m now able to build the version, and PVRTrace is starting without any problem in my application.



But I’ve got now another problem:

When using the savetodisk option the trace.pvrt is created and always growing. But when loading it with PVRTrace GUI (Analysis) I’ve got a message saying we have a partial recording and I’ve got only one frame whatever the time I let the game play. It seems to me that it is like pvrtrace never translate the “swap frame” directive. I’ve deducted this watching the frame statistics with all values growing depending on the time the application is running.



When using the PVRTrace GUI as a remote controller, I’ve got the control of my application (play/stop/wait, etc). But The local trace.pvrt remains empty (it could be the same problem)



Here is my cfg file in /mnt/sdcard



[host]

EglLibraryPath = /system/lib/libEGL.so

Es1LibraryPath =/system/lib/libGLESv1_CM.so

Es2LibraryPath = /system/lib/libGLESv2.so



[record]

TraceFile = /sdcard/PVRTrace/trace.pvrt

RecordData = 1

StartFrame = 0

EndFrame = 10

SaveFrameBuffer = 1

SaveFileToDisk = 1

Network = 0

NetworkWait = 1

DebugInfo = 1



Any idea would be appreciated, Thanks, François

By adding NetworkSendData = 1 to the cfg file I’m now able to send some data by the network, but the result is worst, I still don’t see and new frame and now I’m not able to see any texture (what I have when recording data on local file)



I’ve tried on different devices (Kindle Fire & Samsung Galaxy S) with the same result on both.

Hi François,



The partial recording warning is something you can ignore. It usually indicates that an optimized PVRT loading path cannot be taken (we’ll think of a clearer way to warn the user in a future release).



Try you try recording again with “SaveFrameBuffer = 0”? The SaveFramebuffer option is very costly, as a glReadPixels() is done each frame to capture the rendered image.



If you’re still having issues, can you email devtech@imgtec.com? We can give you access to a file transfer system so you can share your PVRT with us for investigation.



Thanks,

Joe