Imagination PowerVR SDK Blog

PVRTrace on Windows

pvrvframe
pvrtrace

#1

I’m having a bit of trouble getting PVRTrace to run on Windows with PVRFrame; I am using OpenGL 1.1.  My application runs fine with libEGL.dll and libGLES_CM.dll - have both of these in my %SYSTEMDIR% path.

To use PVRTrace I add the 4 required dll’s into my executable directory:  libEGL.dll, libgles_cm.dll, libGLESv1_CM.dll, and PVRTrace.dll.  I then create a pvrtrace.cfg file and point EglLibraryPath and Es1LibraryPath to the %SYSTEMDIR% versions of the files.

Then when I run, I get an error that says “The ordinal 204 could not be located in the dynamic link library libGLES_CM.dll”.

Using dumpbin.exe it’s clear that this ordinal does not exist in the PVRTrace version of the DLL, but does exist in the PVRFrame version.  In face, PVRTrace.dll only has ordinals up to ~170, while PVRFrame goes up to ~220.

Am I setting this up wrong?  I must be missing an important step.






#2

Hi presbywf,

Could you print your pvrtrace.cfg file please?

I think you could have a problem with the dll used:

Example:

EglLibraryPath = Z:PVRFrameReleaseOGLES2libEGL.dll
Es1LibraryPath = Z:PVRFrameReleaseOGLES1libGLES_CM.dll
Es2LibraryPath = Z:PVRFrameReleaseOGLES2libGLESv2.dll


Please, check the name and we recommend to set Es2LibraryPath too, even if your application does not use it.


Regards,

David



#3

Hi David.  My pvrtrace.cfg is as follows:

EglLibraryPath = F:OpenGLPVRVFrame_REL_2.10@869778.tarPVRVFrameOGLES-1.1Windows_x86_32libEGL.dll
Es1LibraryPath = F:OpenGLPVRVFrame_REL_2.10@869778.tarPVRVFrameOGLES-1.1Windows_x86_32libgles_cm.dll
Es2LibraryPath = F:OpenGLPVRVFrame_REL_2.10@869778.tarPVRVFrameOGLES-2.0Windows_x86_32libGLESv2.dll

TraceFile = trace.pvrt
RecordData = 0
StartFrame = 0
EndFrame = 100


I am pointing to the DLL’s directly from the PVRVFrame download from this website.  I have tried other directories as well, such as %SYSTEMDIR%libEGL.dll, etc.





#4

Hi presbywf,

Is your app using glCurrentPaletteMatrixOES? 

To use any extension you should get the pointer with eglGetProcAddress() and not calling directly the function. 

PVRVFrame allows to calls some functions directly but it is not going to work on the devices (they are DEV-Backdoors).

Is this your case?

Regards,

David


#5

Hi David - you are right, we were directly calling glCurrentPaletteMatrixOES.  I changed the code to use eglGetProcAddress and everything works fine now.

Thanks for your help!




#6

I spoke too soon.  The TTY output prints:

Error loading library eglBindTexImageError loading library eglBindTexImage
Error loading library eglReleaseTexImageError loading library eglReleaseTexImage
Error loading library eglSurfaceAttribError loading library eglSurfaceAttrib
Error loading library eglSwapIntervalError loading library eglSwapInterval
Error loading library eglBindAPIError loading library eglBindAPI
Error loading library eglCreatePbufferFromClientBufferError loading library eglC
reatePbufferFromClientBuffer
Error loading library eglQueryAPIError loading library eglQueryAPI
Error loading library eglReleaseThreadError loading library eglReleaseThread
Error loading library eglWaitClientError loading library eglWaitClient
PVRTrace EGL - ERROR: failed to load entry points from host library
Please check library paths in pvrtrace.cfg
PVRTrace EGL - ERROR: failed to load entry points from host library
Please check library paths in pvrtrace.cfg

PVRTrace - aborting

PVRTrace - aborting


The app will then crash when calling eglGetDisplay.

This is expected output?




#7

Hi presbywf,

We think there is a problem with the libEGL.dll used.

Could you try to use the
 OGLES2
 libEGL.dll
version?

EglLibraryPath = F:OpenGLPVRVFrame_REL_2.10@869778.tarPVRVFrameOGLES-2.0 Windows_x86_32libEGL.dll
Es1LibraryPath = F:OpenGLPVRVFrame_REL_2.10@869778.tarPVRVFrameOGLES-1.1Windows_x86_32libgles_cm.dll
Es2LibraryPath = F:OpenGLPVRVFrame_REL_2.10@869778.tarPVRVFrameOGLES-2.0Windows_x86_32libGLESv2.dll

Thank you.

Regards,

David