Announcement

Collapse
No announcement yet.

DarkPlaces GLES on Pandaboard

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DarkPlaces GLES on Pandaboard

    Hi Phoronix!

    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, 07:30 AM.

  • #2
    How about the port of q3 to n900?

    Comment


    • #3
      maemo Q3 compile error

      Hi curaga!

      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:

      http://maemo.org/packages/source/vie...3/1558-maemo5/

      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[2]: *** [build/release-linux-armv7l/client/tr_backend.o] Error 1
      make[2]: Leaving directory `/home/dan/src/ioquake3-1558'
      make[1]: *** [targets] Error 2
      make[1]: Leaving directory `/home/dan/src/ioquake3-1558'
      make: *** [release] Error 2

      Comment


      • #4
        idtech4 on Panda

        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.

        Comment


        • #5
          Hi Dan,

          I've replied to the questions you posted on my blog. I hope those answers are helpful for you.

          -- Oliver.

          Comment


          • #6
            Maemo Q3 compiled!

            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, 05:21 PM.

            Comment


            • #7
              correction

              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, 06:07 PM.

              Comment


              • #8
                You can always use OpenArena paks; though you won't be able to play online with a generic ioq3 engine I believe.

                Comment


                • #9
                  openarena - same error

                  Hi curaga!

                  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, 09:38 PM.

                  Comment


                  • #10
                    Originally posted by danboid View Post
                    Don't you just love responsive devs? I do!
                    Thanks. There is a PayPal donate button on my blog.

                    Originally posted by danboid View Post
                    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!
                    The discrepancy between -lGLES_CM and -lGLESv1_CM can be blamed on Imagination Technologies' driver.

                    I saw the Quake 3 error you posted on my blog,
                    PVRWarning): PVRSRVOpenDCDevice: Warning - 138 returned [95, /bridged_pvr_dc_glue.c]
                    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?

                    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.)

                    Comment


                    • #11
                      Working Panda ES apps

                      Hi Oliver!

                      Originally posted by olivermcfadden View Post

                      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?
                      Out of date? Why I'll hear no such thing! How very dare you suggest it!

                      Nope, my drivers and system is updated daily and I had (have) the very latest OMAP PPA release drivers installed but yes, TI admit and we know for sure there are still bugs to be stamped out yet.

                      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.)
                      Hold on, ES2? Your Maemo Q3 port was linking and I'm linking against the ES1 libs here so I presume you saying ES2 was a typo and you meant ES1 right?

                      I can only currently give 1 working example of both ES1 and ES2 on Pandaboard:

                      ES1 - dxx-rebirth works if I start it in windowed mode then switch to fullscreen after startup:

                      http://www.dxx-rebirth.com/frm/index...ic,1500.0.html

                      ES2 - I've not tried DarkPlaces or its required new SDL yet but I have glmark2-es2 from the Ubuntu repos running fine on my Panda

                      What log files would you like to see?

                      Comment


                      • #12
                        -lEGL

                        I just did a clean build but with -lEGL appended to line 316 of the Makefile (added to CLIENT_LIBS) but I'm getting the same error as before.
                        Last edited by danboid; 07-30-2012, 04:33 AM.

                        Comment


                        • #13
                          doom3 issue needs to have #include stddef.h

                          Comment


                          • #14
                            Originally posted by danboid View Post
                            Hold on, ES2? Your Maemo Q3 port was linking and I'm linking against the ES1 libs here so I presume you saying ES2 was a typo and you meant ES1 right?
                            Yes, I'm sorry this was a typo.

                            Originally posted by danboid View Post
                            I can only currently give 1 working example of both ES1 and ES2 on Pandaboard:

                            ES1 - dxx-rebirth works if I start it in windowed mode then switch to fullscreen after startup:

                            http://www.dxx-rebirth.com/frm/index...ic,1500.0.html

                            ES2 - I've not tried DarkPlaces or its required new SDL yet but I have glmark2-es2 from the Ubuntu repos running fine on my Panda

                            Okay, I can try to take a look at these during the week (possibly weekend) although I have quite a lot going on at the moment. Basically I was just interested in an EGL/OpenGL ES1 (or ES2) "Hello World" so I can see whether I'm doing something silly in the Quake 3 GLimp (OpenGL IMPlementation) code. Keep in mind I wrote this quite some time ago, and with the intention of it being a simple tech demo. Indeed it's possible there are bugs there, in fact, it's likely.

                            Unfortunately I do not have any Panda hardware which makes debugging very difficult compared to having the hardware on my desk and the SDK setup on my development system.

                            I'm going to do a bit of investigation on the g++ errors for idTech4 and the PVRSRVOpenDCDevice() error from Quake3. Actually I expect the PVRSRVOpenDCDevice() error will also occur on ES2 programs (such as idTech4) once you're able to compile it. I'll do my best to get some answers.

                            Originally posted by danboid View Post
                            What log files would you like to see?
                            Let's start with 'gcc -v' so that I can match your configuration.
                            Last edited by olivermcfadden; 07-30-2012, 12:38 PM. Reason: s/Pandora/Panda/

                            Comment


                            • #15
                              This is a bit of a shot in the dark, but from searching Google it appears you may need to have the DISPLAY environment variable setup correctly; e.g.
                              Code:
                              export DISPLAY=:0.0
                              to avoid the PVR error. This is based on Ubuntu bug: https://bugs.launchpad.net/linaro-ubuntu/+bug/999617

                              Possibly this will help you with the Quake3 problems, unfortunately there is not much I can investigate with regard to the idTech4 build error without the output from gcc -v.

                              Comment

                              Working...
                              X