How about the port of q3 to n900?
I think the goal of running DarkPlaces w/ GLES rendering on a Pandaboard is about the most Phoronix-esque project I've embarked on and so I knew there was no better place to conduct and document the process than these forums.
With the recent release of TI's OMAP4 PVR xorg drivers for 12.04 on Pandaboard, I went on the hunt for good OGLES capable apps, games and emus and I'm very disappointed at how few there currently are. As it stands, Descent (dxx) rebirth is the only one I've found that compiles and works on my Panda but one of the top candidates- better than dxx-rebirth - is DarkPlaces.
I have downloaded the latest svn code and I can see that it should be able to compile against OGLES on my Panda because it has been ported to iOS but as it stands the makefile offers no support for building a Linux OGLES client so this is where I'm hoping Lord Havoc, Michael and/or the Phoronix readers may be able to step in and help me get OGLES working under Panda (or likely RPi too) Linux DP and then hopefully it will get added as an official option in the DP makefile.
Maybe I'm barking up the wrong tree as we say sometimes here in the UK? Maybe there is another Quake GLES port I can compile as easily as I did dxx-rebirth?
Also, I have no been able to find a port of Q3 to OGLES that works on Pandaboard. Michael?
Last edited by danboid; 07-29-2012 at 08:30 AM.
How about the port of q3 to n900?
Trying the maemo port of Q3 is an excellent suggestion and one I'd not thought of but sadly it doesn't seem to want to compile OOTB on Pandaboard.
I dunno if Oliver (author of the port) has a repo for his Maemo/GLES Q3 port yet but I downloaded the source here:
Then the only thing I changed in the Makefile before running make was on line 316 I changed -lGLES_CM to -lGLESv1_CM . It got as far as this and I suppose I'll have to get hold of Oliver to get it to compile:
Code:CC code/renderer/tr_backend.c code/renderer/tr_backend.c: In function ‘GL_State’: code/renderer/tr_backend.c:335:4: warning: implicit declaration of function ‘qglPolygonMode’ [-Wimplicit-function-declaration] code/renderer/tr_backend.c:335:39: error: ‘GL_LINE’ undeclared (first use in this function) code/renderer/tr_backend.c:335:39: note: each undeclared identifier is reported only once for each function it appears in code/renderer/tr_backend.c:339:39: error: ‘GL_FILL’ undeclared (first use in this function) code/renderer/tr_backend.c: In function ‘RB_SwapBuffers’: code/renderer/tr_backend.c:1115:63: error: ‘GL_STENCIL_INDEX’ undeclared (first use in this function) make: *** [build/release-linux-armv7l/client/tr_backend.o] Error 1 make: Leaving directory `/home/dan/src/ioquake3-1558' make: *** [targets] Error 2 make: Leaving directory `/home/dan/src/ioquake3-1558' make: *** [release] Error 2
I'm never expecting to play Doom 3 at a decent framerate on my Pandaboard but I noticed Oliver has pushed his GL ES2 idtech4 code to github recently so I thought I'd at least try building it just for the craic. Build failed but I'm not surprised or really that bothered as I don't have a copy of Doom 3 to test it with even if it did build.
DarkPlace GLES will bring us Quake and Nexuiz whilst a GLES ioq3 port such as Olivers will bring Q3, reaction Q3, Smokin' Guns etc and both these engines should run at a decent rate on the Panda as soon as we have a GLES optimzed version working.
Code:g++ -o build/debug/d3xp/d3xp/ai/AI_pathing.os -c -fPIC -pipe -Wall -Wno-sign-compare -Wno-unknown-pragmas -fmessage-length=0 -fpermissive -fvisibility=hidden -g -O1 -D_DEBUG -fno-strict-aliasing -D_D3XP -DCTF -DGAME_DLL d3xp/ai/AI_pathing.cpp d3xp/ai/AI_pathing.cpp: In function ‘pathNode_t* BuildPathTree(const obstacle_t*, int, const idBounds&, const idVec2&, const idVec2&, obstaclePath_t&)’: d3xp/ai/AI_pathing.cpp:659:51: error: ‘next’ was not declared in this scope d3xp/ai/AI_pathing.cpp:659:55: error: a function call cannot appear in a constant-expression d3xp/ai/AI_pathing.cpp:659:57: error: template argument 2 is invalid d3xp/ai/AI_pathing.cpp:659:72: error: invalid type in declaration before ‘,’ token d3xp/ai/AI_pathing.cpp:667:16: error: request for member ‘Add’ in ‘pathNodeQueue’, which is of non-class type ‘int’ d3xp/ai/AI_pathing.cpp:669:28: error: request for member ‘Get’ in ‘pathNodeQueue’, which is of non-class type ‘int’ d3xp/ai/AI_pathing.cpp:669:116: error: request for member ‘Get’ in ‘pathNodeQueue’, which is of non-class type ‘int’ d3xp/ai/AI_pathing.cpp:671:13: error: request for member ‘Add’ in ‘treeQueue’, which is of non-class type ‘int’ d3xp/ai/AI_pathing.cpp:709:20: error: request for member ‘Add’ in ‘pathNodeQueue’, which is of non-class type ‘int’ d3xp/ai/AI_pathing.cpp:713:20: error: request for member ‘Add’ in ‘pathNodeQueue’, which is of non-class type ‘int’ d3xp/ai/AI_pathing.cpp:726:20: error: request for member ‘Add’ in ‘pathNodeQueue’, which is of non-class type ‘int’ d3xp/ai/AI_pathing.cpp:751:19: error: request for member ‘Add’ in ‘pathNodeQueue’, which is of non-class type ‘int’ d3xp/ai/../../idlib/../d3xp/Game_local.h: At global scope: d3xp/ai/../../idlib/../d3xp/Game_local.h:116:11: warning: ‘NUM_RENDER_PORTAL_BITS’ defined but not used [-Wunused-variable] d3xp/ai/../../idlib/../d3xp/Game_local.h:810:11: warning: ‘CINEMATIC_SKIP_DELAY’ defined but not used [-Wunused-variable] d3xp/ai/../../idlib/../d3xp/Player.h:73:11: warning: ‘ASYNC_PLAYER_INV_AMMO_BITS’ defined but not used [-Wunused-variable] d3xp/ai/AI_pathing.cpp:1438:14: warning: ‘float HeightForTrajectory(const idVec3&, float, float)’ defined but not used [-Wunused-function] scons: *** [build/debug/d3xp/d3xp/ai/AI_pathing.os] Error 1 scons: building terminated because of errors.
Don't you just love responsive devs? I do!
I have some good news for fellow Pandaboardians (first use?) as I have successfully compiled Oliver's Maemo Q3 port on the Panda now. Maybe it'd run if I got hold of the official Q3 pak files but I don't have them at the mo so I'm trying to get it running with rq3 first but not having much luck. If you want to see the errors I get they're pasted in the comments section of Olivers latest blog posting linked above.
If anyone else wants to compile Olivers Maemo Q3 port on their Pandaboard, all you have to do is change 'arm' on line 297 of the Makefile to 'armv7l' and on line 316 change -lGLES_CM to -lGLESv1_CM - thats it!
I've also heard back from Lord Havoc aka the DarkPlaces dev who informs me that to compile DP with GLES support you have to use libSDL2 for this (get the snapshot or hg from http://libsdl.org ) and define USE_GLES2 when compiling. I was happy to hear that DP uses GLES2 because I don't know of a single other open source Linux game with support for GLES2.
Last edited by danboid; 07-29-2012 at 06:21 PM.
I thought we could edit posts on this forum after they've been posted? I'm logged in but I can't see any 'Edit' buttons on my posts here.
I was hoping to edit my previous post to correct myself as I do of course know of 2 open source Linux games that support GLES2 - idtech4 and DP - but I don't count idtech4 as a real possibility for my Pandaboard and its not ready yet either.
EDIT (you can!)
Now I see an edit button on this post but not my older posts so I'm guessing posts on here get locked after a number of hours unless this is a weird bug in 12.04 armhf FF? Why lock older posts Michael (if thats what is happening)?
Last edited by danboid; 07-29-2012 at 07:07 PM.
You can always use OpenArena paks; though you won't be able to play online with a generic ioq3 engine I believe.
Trying openarena was a good idea so thats what I did but I get the same error as when I tried rq3 so I suspect I'll get the same error again if I try the official Q3 pak files. I have pasted the full error on Olivers blog again.
The command I tried to start ioquake3 with openarena (as pulled from the Precise repos) was:
./ioquake3.armv7l +set fs_basepath /usr/share/games/openarena +set fs_game baseoa +set r_fullscreen 0
Last edited by danboid; 07-29-2012 at 10:38 PM.
I saw the Quake 3 error you posted on my blog,
Unfortunately I cannot give you much information here, because I am working on different GPUs now. I can tell you that DC is "Display Class" and it appears to be returning some kind of failure. I suspect your SGX drivers have a bug or are out of date?PVRWarning): PVRSRVOpenDCDevice: Warning - 138 returned [95, /bridged_pvr_dc_glue.c]
If you have some demo program with source code (just something that will bring up an OpenGL ES2 rendering context on the device) then I can have a look and compare it with my implementation. It's also quite possible that I have bugs in that the GL context initialization code.
P.S. It's probably better to use Phoronix's forums attachment mechanism for log files etc. Blogger doesn't offer this, unfortunately. (Don't worry, I get an email notification when you reply here.)