il I execute the binairies exemple I got this error
Failed to choose a suitable config
did you link it correctly ?
do you have proper graphic card with minimal requirement ?
mine are
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
OpenGL shading language version string: 1.20
a very old ubuntu running super well :
regards
david
Hi Aicha,
You also need to execute the correct Linux binary for your platform, for example the X11 binaries will only run if you have the required X11 packages on your machine.
Joe
I met the same problem ,have you solved it?
Hi Pan,
What error are you getting exactly can you provide the log if possible? Is this one of the examples from our SDK, if so which example and what version of the SDK are you using? What machine are you trying to run the example on i.e. Linux, Windows, x86, ARM etc?
Thanks,
Shaun
Hi Shaun,
I’m using the 2017 R1 version of the SDK and I run the example on Linux.
Here is my equipment info:
pansr@pansr-IdeaPad:~$ glxinfo |grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 650M/PCIe/SSE2
OpenGL core profile version string: 4.5.0 NVIDIA 375.39
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5.0 NVIDIA 375.39
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 375.39
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
I compiled the example of 01_HelloAPI successfully,and tried to run the OGLESHelloAPI.
Then i get this error : Failed to get an EGLDisplay.
pansr@pansr-IdeaPad:/opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Examples/Beginner/01_HelloAPI/OGLES/Build/Linux_x86_64$ sudo make
mkdir -p ReleaseNullWS
gcc -O2 -Wall -m64 -c -I/opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Builds/Include …/…/OGLESHelloAPI_NullWS.cpp -o ReleaseNullWS/OGLESHelloAPI_NullWS.o
mkdir -p ReleaseNullWS
g++ -o ReleaseNullWS/OGLESHelloAPI ReleaseNullWS/OGLESHelloAPI_NullWS.o -L/opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Builds/Linux/x86_64/Lib -Wl,–rpath-link,/opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Builds/Linux/x86_64/Lib -m64 -lEGL -lGLESv2 -L/lib
pansr@pansr-IdeaPad:/opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Examples/Beginner/01_HelloAPI/OGLES/Build/Linux_x86_64$ cd ReleaseNullWS/
pansr@pansr-IdeaPad:/opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Examples/Beginner/01_HelloAPI/OGLES/Build/Linux_x86_64/ReleaseNullWS$ ./OGLESHelloAPI
Failed to get an EGLDisplay
Then i tried to use the libEGL.so and libGLESv2.so in PVRVFrame to compile the code ,and i compile failed.
pansr@pansr-IdeaPad:/opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Examples/Beginner/01_HelloAPI/OGLES$ ls
Build OGLESHelloAPI_iOS.mm OGLESHelloAPI_NullWS.cpp OGLESHelloAPI_Windows.cpp
OGLESHelloAPI_Android.cpp OGLESHelloAPI_LinuxX11.cpp OGLESHelloAPI_OSX.mm
pansr@pansr-IdeaPad:/opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Examples/Beginner/01_HelloAPI/OGLES$ sudo g++ OGLESHelloAPI_NullWS.cpp -I…/…/…/…/Builds/Include/ -L…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64/ -lEGL -lGLESv2 -lX11
Here is the log,i don’t know where the functions are.
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMergeRanges’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgCopyDIEAttr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeExprConsti’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeExprBReg’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ForAllDIEs’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘PVR_qsort_s’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeCFAr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgAddFDE’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgAppendCFA’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeLineInfo’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeRangeList’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeExprOp’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrString’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgCopyRanges’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgInitLineProgramState’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfMakeSection’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgStrDup’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgRemoveDIEChild’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfMakeSymbol’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeCallFrameInfo’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgFindDIEAttr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfReleaseContext’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeLoc’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeLocList’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgAddDIEAttr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrAddr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrLinePtr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgReleaseContext’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrLocList’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgAppendLineInfoRow’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeFileEntry’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrRangeList’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrExprLoc’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgReleaseDIETree’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgIsDIEChild’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeCompilationUnit’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfCreateContext’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeCFAi’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgRemoveDIEAttr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeExprConstu’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeCFArr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeFDE’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgReleaseLoc’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfAddSymbol’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgInitDIEList’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfMakeFileHeader’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfAlloc’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfAddSection’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfWriteExternal’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgReleaseExprList’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘FindBipartiteGraphMatching’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeCFAri’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIETag’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrFlagPresent’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeStandardOpcodeLengths’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgIsSameExprList’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgCreateContext’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfPrepareExternal’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeCIE’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgReleaseAttr’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgAppendDIEChildren’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrDIEReference’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgAppendDIEList’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIE’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgReleaseFDE’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgCreateExternalDwarf’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘ElfStrDup’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrUData’未定义的引用
…/…/…/…/…/…/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64//libGLESv2.so:对‘DbgMakeDIEAttrBlock’未定义的引用
collect2: error: ld returned 1 exit status
Thanks
PanShouren
Hi Pan,
It looks like you are building the example for the incorrect windowing system, I assume your Linux machine uses the X11 windowing system as it has an Nvidia graphics card installed. To build the example for X11 run the following command at the shell: $ make PLATFORM=Linux_x86_64 X11BUILD=1 X11ROOT=/usr/lib/x86_64-linux-gnu/X11
Note that your X11ROOT might be different from mine so check this before building the demo.
The build should create a ReleaseX11 folder, try running the binary and let me know if you still have any issues.
Thanks,
Shaun
Hi,Shaun
As you said, my Ubuntu uses the X11 windowing system as it has an Nvidia graphics card,and i use the command you suggested to build the example,i still get the error: “Failed to get an EGLDisplay”.I don’t know what went wrong.
And i read the PVRVFrame Doc,but i don’t know how to use the PowerVR emulator to build and run opengles program.
Thanks,
Pan
Hi Pan,
I am glad you could build the X11 version of the app, I think the problem now is probably that the PVRVFrame libraries are not being picked up by the application when you build/run it.
The ‘HelloAPI’ example statically links against PVRVFrame, which is already done for you in the make file so there is no need to add -L to the build command. The files are in <SDK Path>/Builds/Linux/x86_64/lib.
All of the other examples are dynamically linked to PVRVFrame, so you do not need to build against the PVRVFrame libraries but they must be present in your system for the app to pick them up at run-time and use them, you should be able to use export LD_LIBRARY_PATH=<path to PVRVFrame>.
Can you try running ldd on the binary and post the output?
Also have you been able to run any other 3D applications on your test machine?
Thanks,
Shaun
Hi, Shaun:
Thank you for your explanation,i used the sdk libraries instead of the PVRVFrame libraries to run the application before. Now i run the example successfully,i can see the triangle but it disappeard suddenly.Why is this?
Thanks,
Pan
Hi Pan,
That’s great news, the application closes by ‘design’ after 800 frames have been rendered.
Thanks,
Shaun
Hi, Shaun:
I saw it in the code .Thank you very much.
I’ve been puzzled by this problem for many days,Now it’s finally settled.
非常感谢!
Pan
Hi Shaun,
I have met this issue for days, I need your help. thx!
I set LD_LIBRARY_PATH = /opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Builds/Linux/x86_64/Lib
but I still got same error.
./OGLESHelloAPI
Failed to get an EGLDisplay
Hi Calvin,
Are you getting this issue with the pre-built binaries or are you building the application from source?
What model of GPU does your system have?
Does the problem persist if you run any of the other examples in the SDK?
If you are running this on a desktop GPU i.e. nvidia, AMD, Intel etc. that does not have GLES, then you need to point LD_LIBRARY_PATH at our PVRVFrame libraries, which can be found in our SDK. You can grab the installer here: https://www.imgcommunity.local/developers/powervr/installers/.
Thanks,
Shaun
Shaun,
Thanks a lots for your reply.
GPU on my Ubuntu 16.04 LTS is NVIDIA GF106GL Quadro 2000.
I sure I downloaded and ran the PowerVRSDKSet-2017_R1.run-x64 on my Ubuntu
$sudo ./PowerVRSDKSet-2017_R1.run-x64
and the installation path is /opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1
Does the PVRFrame libraries you mentioned point to /opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Builds/Linux/x86_64/Lib?
Thanks.
Calvin.
Hi Calvin,
If you have installed the SDK tools to the default location, then the PVRVFrame libraries will be located in the following directory: /opt/Imagination/PowerVR_Graphics/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64
If you do not have this directory then you will need to run the installer and select “PVRVFrame” under PVRTools to install the libraries (see attached image).
[blockquote]Does the PVRFrame libraries you mentioned point to /opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Builds/Linux/x86_64/Lib?[/blockquote]
In fact it is the opposite, the …/Builds/Linux/x86_64/Lib are symbolic links to the PVRVFrame libraries.
Thanks,
Shaun
Shaun, Thanks so much!
PVRVFrame path was installed in my Ubuntu, I re-exported LD_LIBRARY_PATH=/opt/Imagination/PowerVR_Graphics/PowerVR_Tools/PVRVFrame/Library/Linux_x86_64, but I still got same error, can not run EGL interface successfully.
Actually, I’m trying to run a sample code Hello_Triangle from OpenGLES3.0_book.
I always get a same error that is chooseConfig return numConfig=0 every time.
I’m not sure which EGL interface was error - eglGetDisplay()/eglInitialize();
Call eglGetError(), the error code is also not a defined normal code in egl.h.
Do you have any suggestion or idea for me?
Thanks!
Calvin
ldd Hello_Trangle shows
libGLESv2.so => /opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK-2017_R1/Builds/Linux/x86_64/Lib/libGLESv2.so
libEGL.so => /opt/Imagination/PowerVR_Graphics/PowerVR_SDK/SDK_2017_R1/Builds/Linux/x86_64/Lib/libEGL.so
is there the root cause?
but I tried ccmake, and re-config EGL and GLES library to PVRVFrame libraries, then cmake will report error.
d
Shaun,
In addition, how to make the example in SDK_2017_R1/Examples?
I just only fund an available makefile in Beginner/01_HelloAPI/OGLES/Build/Linux_x86_64.
other examples just only have a Linux-generic folder, there is no platform matched like Linux_x86_64.
how to build/make these examples?
thanks!
Calvin