Imagination PowerVR SDK Blog

Linux_x86_32/PVRUniSCo_SGX53x doesn't create .fsc

pvrvframe

#1

Hi.





While trying to compile the ‘Iridescent’ tutorial, the





PVRUniSCo_SGX53x FragShader.fsh FragShader.fsc -f





command reports success while producing nothing.





See below for the command I’m typing, the first part of the makefile output, and an strace of the misbehaving command - the strace makes it look like it’s not even trying to open the fsc file to write it.





If I’m doing the wrong thing, trying to compile like this - where should I be looking for the README or INSTALL?





Thanks.





Tim





uname -a


Linux dt-000886 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux





cd /home/tim/src/OGLES/SDKPackage_OGLES2_Linux/TrainingCourse/23_Iridescence/OGLES2/Build/LinuxGeneric


make --file=Makefile PLATFORM=LinuxX86 X11BUILD=1 X11ROOT=/usr SDKDIR=/home/tim/src/OGLES/SDKPackage_OGLES2_Linux all





with this output:





***********************************************





Name:        OGLES2Iridescence


PWD:          /home/tim/src/OGLES/SDKPackage_OGLES2_Linux/TrainingCourse/23_Iridescence/OGLES2/Build/LinuxGeneric


Binary path: /home/tim/src/OGLES/SDKPackage_OGLES2_Linux/TrainingCourse/23_Iridescence/OGLES2/Build/LinuxGeneric/…/LinuxX86/ReleaseX11


Library path: /home/tim/src/OGLES/SDKPackage_OGLES2_Linux/Builds/OGLES2/LinuxX86/Lib


WS:           X11





*****************************************************


+t+ Making content.mak


make[1]: Entering directory /home/tim/src/OGLES/SDKPackage_OGLES2_Linux/TrainingCourse/23_Iridescence/OGLES2'<br /> <br />/home/tim/src/OGLES/SDKPackage_OGLES2_Linux/Utilities/PVRUniSCo/OGLES/Linux_x86_32/PVRUniSCo_SGX53x FragShader.fsh FragShader.fsc -f<br /> <br />Success.<br /> <br />/home/tim/src/OGLES/SDKPackage_OGLES2_Linux/Utilities/Filewrap/Linux_x86_32/Filewrap -s -o Content/FragShader.cpp FragShader.fsh<br /> <br />Could not open FragShader.fsc for reading<br /> <br />make[1]: [Content/FragShader.cpp] Error 1 (ignored)<br /> <br />/home/tim/src/OGLES/SDKPackage_OGLES2_Linux/Utilities/Filewrap/Linux_x86_32/Filewrap -oa Content/FragShader.cpp FragShader.fsc<br /> <br />Could not open VertShader.vsc for reading<br /> <br />make[1]: [Content/VertShader.cpp] Error 1 (ignored)<br /> <br />/home/tim/src/OGLES/SDKPackage_OGLES2_Linux/Utilities/PVRUniSCo/OGLES/Linux_x86_32/PVRUniSCo_SGX53x VertShader.vsh VertShader.vsc -v<br /> <br />Success.<br /> <br />/home/tim/src/OGLES/SDKPackage_OGLES2_Linux/Utilities/Filewrap/Linux_x86_32/Filewrap -s -o Content/VertShader.cpp VertShader.vsh<br /> <br />/home/tim/src/OGLES/SDKPackage_OGLES2_Linux/Utilities/Filewrap/Linux_x86_32/Filewrap -oa Content/VertShader.cpp VertShader.vsc<br /> <br />make[1]: Leaving directory/home/tim/src/OGLES/SDKPackage_OGLES2_Linux/TrainingCourse/23_Iridescence/OGLES2’


… continues








and this strace from the command-line:





[11:57:42] ~/src/OGLES/SDKPackage_OGLES2_Linux/TrainingCourse/23_Iridescence/OGLES2 $ strace /home/tim/src/OGLES/SDKPackage_OGLES2_Linux/Utilities/PVRUniSCo/OGLES/Linux_x86_32/PVRUniSCo_SGX53x FragShader.fsh FragShader.fsc -f


execve("/home/tim/src/OGLES/SDKPackage_OGLES2_Linux/Utilities/PVRUniSCo/OGLES/Linux_x86_32/PVRUniSCo_SGX53x", ["/home/tim/src/OGLES/SDKPackage_O"…, “FragShader.fsh”, “FragShader.fsc”, “-f”], [/
44 vars */]) = 0





[ Process PID=18940 runs in 32 bit mode. ]





brk(0)                                  = 0x977d000


access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)


mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff772d000


access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)


open("/etc/ld.so.cache", O_RDONLY)      = 3


fstat64(3, {st_mode=S_IFREG|0644, st_size=126799, …}) = 0


mmap2(NULL, 126799, PROT_READ, MAP_PRIVATE, 3, 0) = 0xfffffffff770e000


close(3)                                = 0


access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)


open("/lib32/libm.so.6", O_RDONLY)      = 3


read(3, “177ELF1113312604004”…, 512) = 512


fstat64(3, {st_mode=S_IFREG|0644, st_size=149392, …}) = 0


mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff770d000


mmap2(NULL, 151680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff76e7000


mmap2(0xf770b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23) = 0xfffffffff770b000


close(3)                                = 0


access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)


open("/lib32/libdl.so.2", O_RDONLY)     = 3


read(3, “177ELF111331@n004”…, 512) = 512


fstat64(3, {st_mode=S_IFREG|0644, st_size=9736, …}) = 0


mmap2(NULL, 12408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff76e3000


mmap2(0xf76e5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xfffffffff76e5000


close(3)                                = 0


access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)


open("/usr/lib32/libstdc++.so.6", O_RDONLY) = 3


read(3, “177ELF111331340B4004”…, 512) = 512


fstat64(3, {st_mode=S_IFREG|0644, st_size=930044, …}) = 0


mmap2(NULL, 959532, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff75f8000


mmap2(0xf76d7000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xde) = 0xfffffffff76d7000


mmap2(0xf76dc000, 25644, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfffffffff76dc000


close(3)                                = 0


access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)


open("/usr/lib32/libgcc_s.so.1", O_RDONLY) = 3


read(3, “177ELF111331P37004”…, 512) = 512


fstat64(3, {st_mode=S_IFREG|0644, st_size=108040, …}) = 0


mmap2(NULL, 111148, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff75dc000


mmap2(0xf75f6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19) = 0xfffffffff75f6000


close(3)                                = 0


access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)


open("/lib32/libc.so.6", O_RDONLY)      = 3


read(3, “177ELF111331220o1004”…, 512) = 512


fstat64(3, {st_mode=S_IFREG|0755, st_size=1417796, …}) = 0


mmap2(NULL, 1427976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff747f000


mprotect(0xf75d5000, 4096, PROT_NONE)   = 0


mmap2(0xf75d6000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x156) = 0xfffffffff75d6000


mmap2(0xf75d9000, 10760, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfffffffff75d9000


close(3)                                = 0


mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff747e000


mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff747d000


set_thread_area(0xff931228)             = 0


mprotect(0xf75d6000, 8192, PROT_READ)   = 0


mprotect(0xf75f6000, 4096, PROT_READ)   = 0


mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff747c000


mprotect(0xf76d7000, 16384, PROT_READ) = 0


mprotect(0xf76e5000, 4096, PROT_READ)   = 0


mprotect(0xf770b000, 4096, PROT_READ)   = 0


mprotect(0xf774b000, 4096, PROT_READ)   = 0


munmap(0xf770e000, 126799)              = 0


brk(0)                                  = 0x977d000


brk(0x979e000)                          = 0x979e000


open(“FragShader.fsh”, O_RDONLY)        = 3


fstat64(3, {st_mode=S_IFREG|0755, st_size=730, …}) = 0


mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff772c000


fstat64(3, {st_mode=S_IFREG|0755, st_size=730, …}) = 0


_llseek(3, 0, [0], SEEK_SET)            = 0


read(3, “uniform sampler2D sThicknessTex”…, 730) = 730


_llseek(3, 730, [730], SEEK_SET)        = 0


fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 14), …}) = 0


mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff772b000


write(1, “Success.n”, 9Success.


)               = 9


exit_group(0)                           = ?






#2

So a partial solution:





1. I found the root-level PDF file and the references in section 3 to Linux and lack of 64 bit support. Oh well. Maybe a 32bit chroot will work.





2. It still seems funny for the utility to report success but produce nothing.





Tim


#3

Hi,

1. We do not have full 64bit SDK yet. You can run some of utilities in 32 bit mode on you linux but, PVRVFRame (OGLESPC emulation) won't run that way. You can download PVRVFRame utility and inside you can find 64bit port of PVRVFrame (eg. PVRVFrame/OGLES2/Linux_x86_64)  . Moreover in SDKPackage/Builds/OGLESX/LinuxX86/make_platform.mak you should remove -m32 flag . Copy the libraries to  
SDKPackage/Builds/OGLESX/LinuxX86/Lib and then attempt to build the training course. We will have full support for 64bit Linux by the time of our next release. 

2. As for PVRUniSCo , we no longer rely on binary shaders and compiler is to produce estimation of performance (it does not produce usc file anymore). So to conclude although it look confusing it fine. There is an error as result of missing usc file that is ignored and process carries on.

Regards,