Imagination PowerVR SDK Blog

PVR FRAME : Issue on Winnt

pvrvframe
pvrtrace

#1

Hi ,

 

When i launch my application in msdev 2008 in debug mode my application linked to pvr frame libraries works fine. However the same application when launced from outside Visual studio fails to initialise.  It throws the following error.

PVR : VFrame attempted  to use one of these functions:

PVR:  wglChoosePixelFormatARB

PVR : But these are not available on your machine

Ignore?

 

On chosing 'yes' to ignore the app crashes.

 

 

#2

Hi sumer,





It sounds like you’ve placed the VFrame libraries in a directory that Visual Studio can see, such as the working directory, but your application does not have visibility of them outside of Visual Studio. If this is the case, you can resolve this by placing the VFrame libraries in the same directory as your executable.


#3

Hi Joe,

 


To test your options i did the following,

1. Made sure that the exe is build correctly with the PVR Frame libs

2. In the execution directory i renamed the two dll's libEGL.dll and libGLESv2.dll.

Now the application failed to launch (as expected), therefore it is using these two PVR Frame dll's.

 

Regards,

Sumer

#4

Hi sumer,





I’m not sure I understand the change you’ve made. In 2., you should not have renamed anything. Instead, you should have copied the .dll files from the VFrame folder of the SDK (e.g. PVRVFrameOGLES-2.0Windows) to the same directory as your executable.





Regards,


Joe


#5

Hi All,


The same issue I am facing while running my OpenGL ES 2.0 application when launced from outside Visual studio:- It fails to initialise.


But the application runs fine when I also use PVRTrace libs. I put the PVRTrace libs in the working directory & PVRVframe libs (actual Opengl ES 2.0 libs) in the system32 directory. Please clarify what might be the issue.





Piyush M (India)


#6

Hi Piyushm





I feel you have the same issue as sumer (with the application not being able to find the libraries) The reason that it works with the PVRTrace libraries is because the application finds the trace libraries within the executable directory. When they are found a pvrtrace.cfg file is made (if one doesnt exist) which specifies where the actual libraries are (this .cfg file points to the system directories by default).





Now you may have either changed the .cfg file to point to the directory where you have placed the libraries (which you can do) or you have placed the libraries where the the .cfg file is already looking (in the system directory)





I hope this helps





Regards,


Tom


#7

Hi Tom,





Thanks for the reply. But the problem is still unsolved. Let me explain in a bit more detail.


My application works when the following is done:





Paste the PVRTrace versions of libGLESv2.dll ,libEGL.dll & PVRTrace.dll in the folder where the exe is present. Paste the PVRVFrame versions of libGLESv2.dll & libEGL.dll in the system directory where by default it will be searched. Then just double clicking the executable, it works fine. Even from within Visual Studio also I can run the application by pressing F5(Debug mode).





I get the same error as Sumer gets if I use the following obvious setup (I do not need Trace always):





Delete PVRTrace versions of libGLESv2.dll ,libEGL.dll & also PVRTrace.dll from the folder where my exe is present(this is the Bin folder where Visual studio generates the exe after compiling & linking). Replace it with PVRVFRame versions of libGLESv2.dll & libEGL.dll. Then just double clicking the executable, it throws the error as Sumer gets. However it runs fine from within Visual studio by pressing F5.





This should work. It is not proper to give so many dlls & request my client to paste at different places. And also if the applications runs for an hour the trace file will become huge. I am unable to figure out the problem.





Regards,


Piyush


#8

Piyush,





To enable the emulation to run correctly there should only need to be

one copy of each of these DLLs on your

system. This may be in (amongst other places) system32 to be available

globally or in the working directory of the executable. By default, the

version in the working directory will be searched for and loaded first.





By default, Visual Studio projects set the working directory of their built executables to be

the project directory and not the executable directory so this can

sometimes explain different results when launching from the explorer or

from inside the IDE. If DLLs are in the executable directory then they will not be found when VS launches them and so DLLs in other locations, like system32, are searched for and used, if available.

I’m not sure that this is relevant to the problems you are encountering, however, as PVRVFrame is giving an error message and Windows is not complaining of a mising DLL. This suggests that PVRVFrame has been loaded, but is encountering an error. There may be an issue with the normal PVRVFrame libraries that isn’t present when combining these with the PVRTrace libraries.

Which version of the SDK are you using and what version of Windows is this on? Do you have a minimal project that displays these problems?

Can you do the following, please:

- remove all of the mentioned DLLs from your system
- place the normal PVRVFrame DLLS (libGLESv2.dll and libEGL.dll) in the executable directory
- double-click the exe and post the output here


On another note, our emulator is designed to enable development for mobile and is not really intended for distribution as part of a commercial product.

If this is your intention then please get in touch with us on

devtech@imgtec.com and outline exactly

what you are distributing the PVRVFrame libraries for.





For further DLL information please see:









http://msdn.microsoft.com/en-us/library/ms682586(VS.85).aspx














#9

Hi Gordon,





I am not using the PVR SDK. I downloaded PVRVframe (Build: 2.07.27.0493), Built my application using the libs. Place the Dlls in the folder where the exe will be generated. Then double click the exe.


I am using Windows XP professional version 2002 Service Pack 3.





I did whatever you had suggested & below is the message on the MessageBox:


=======>


PVR: VFrame attempted to use one of these functions:


PVR:   wglChoosePixelFormatARB





PVR: but they are not present on your machine.





Ignore?


<=======





Whether it should search for wglChoosePixelFormat when I built using EGL stuff, I do not know. This API is not there in my program.





Also be assured that I am using PVR Libs & Dlls for development of OpenGL ES 2.0 applications on Windows. It is in development phase. I am into automotive domain.





Piyush






#10


Hi All,



A further problem/issue that is related to this topic I found out. As earlier told, a MessageBox appears in the begining showing the mentioned error message. If I click ' yes ' to ignore, instead of "wglchoosepixelformatARB", the following OpenGL ES APIs are shown with the same error message in the following order :



glCreateShader, glCreateProgram, glGenbuffers, glGenbuffersARB, glUseProgram.



If I click at any stage "not to ignore", my application exits. If I ignore then my opengl window comes up, but black. Also in the log tab window of the PVRVFrame GUI, errors like "In glBufferData error: 502(GL_INVALID_OPERATION): currently bound buffer is zero"

are shown. These don't appear when application is launched from inside Visual Studio. I again compiled my App with PVRVFrame libs & placed the Dlls in the same folder as my executable. But same problem.



Regards,



Piyush

#11

HI,

What grphics card have you got ? And what graphics drviers do you have installed for it?

Regards,

Jacek


#12

Hello,





Following are my working environment info:





OS: Windows XP Professional SP 3 (5.1, Build 2600)


Device: NVIDIA Quadro FX 1800


Drivers: Main Driver: nv4_disp.dll (version: 6.14.11.8265)


Driver Date: 22/04/2009


NVIDIA Compatible Windows 2000 Display driver.


Driver version: 182.65





I hope the above info is sufficient. Still I am unable to figure out what difference occurs when an application is executed through Visual studio & directly double clicking the executable with the Dlls placed in same location.





Regards,


Piyush


#13

I have this same problem on my Windows 7 machine, ATI card and very latest driver.





Steve.


#14

I’ve filed this as an issue in our bugtracking system (BRN32024) and the engineer who works on PVRVFrame will investigate it.

Steve, Sumer,
Any details of your system that you can add may be helpful.

If any of you can send a minimal reproduction of the problem to devtech@imgtec.com then this may help us solve this too.


#15

Hi there,





Firstly apologies, my failing card is nVidia, not ATI.





Unfortunately even a small test case would drag in a great deal of our cross platform source, so a sample would not be possible at the moment.





I can give you the spec of the PC it fails on:


Intel i7 CPU @ 2.8Gz


4 gig RAM


Windows 7 (32 bit)


NVidia GeForce GT220





This codebase works with my ATI Radeon 7800 at work.





This error also occurs on the GLES 1.1 SDK (as you would expect if the PVRFrame is the same?)








Thanks,





Steve.


#16

Thanks for the information, Steve.


#17

I have the same problem as reported by sumer and piyushm1: 

i.e, PVRFrame is trying to use a function “wglChoosePixelFormatARB” which it cant locate in my machine. Details of my machine

OS: Windows XP Professional SP 3
Device: NVIDIA Quadro FX 1800



@Gordon, Is this bug fixed as of now?




#18

I have this same problem, which seems to be caused by linking against xinput.lib. With xinput.lib linked I get the error:





PVR: VFrame attempted to use one of these functions:


PVR:    wglChoosePixelFormatARB





PVR: but they are not present on your machine.





Ignore?


Yes/No





If I disable my XInput code and remove the lib from the linker input, it works fine.





Has anyone made any progress on this issue?





Thanks,





Peter





OS: Windows 7 Ultimate 64



#19

Hi,

 

I am also facing the same problem, with just one difference -> its giving me an error with glBindBuffer. This is when I double-click on any of the demo executables.

 

I am using a Windows XP Pro machine with ATI Radeon XPRESS 1150 card. The current opengl driver is version 6.14.10.xxxx

 

Help appreciated!

Siddharth

 

 

#20

Hi,





I fixed my XInput problem by updating to latest NVidia drivers (285.62). Why this was triggered by linking against xinput.lib I have no idea!





Cheers,





Peter