Imagination PowerVR SDK Blog

executing powervr sdk binairie examples on linux

pvrvframe

#1

il I execute the binairies exemple I got this error

Failed to choose a suitable config


#2

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


#3

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


#4

I met the same problem ,have you solved it?


#5

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


#6

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


#7

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


#8

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


#9

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


#10

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


#11

Hi Pan,

That’s great news, the application closes by ‘design’ after 800 frames have been rendered.

Thanks,
Shaun


#12

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


#13

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


#14

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


#15

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.


#16

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


#17

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


#18

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.


#19

d


#20

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