Port Requests


Not much changed in the code, just for forcing SDL2 Window creation to desktop fullscreen.

Other thing is linking with libvordisidec.so instead of libvorbis.so and libvorbisfile.so because other libs (most) in codeblocks use Tremor (that is libvorbisidec.so) instead of regular vorbis (libvorbis.so & libvorbisfile.so) for performances reason.
But mixing the 2 libs gives issues and segfault (many overlapping names, you cannot really have both libs loaded at the same time).
 
Si, I got farther with OpenMW.

My crash was there
Line 339 of nifloader.cpp
Code:
                if (target.mKeyframeControllers.find(strdata->string) != target.mKeyframeControllers.end())
                    std::cerr << "Warning: controller " << strdata->string << " present more than once in " << nif->getFilename() << ", ignoring later version" << std::endl;
                else
                    target.mKeyframeControllers[strdata->string] = callback;
I commented out the std::cerr line (puting a {} instead) and it worked. Some strange things with some __thread local variables inside gcc libs made a segfault, not sure why

I now can go ingame, but the game is slow. I get 2~5 fps in closed space, and 1fps or less in large open space.
Graphics are good and texture detailled (a bit too much for the Pandora probably), but it also spend time doing math...
here is what perf top gives me
Code:
   PerfTop:    1042 irqs/sec  kernel: 4.9%  exact:  0.0% [1000Hz cycles],  (all, 1 CPU)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    23.58%  openmw                      [.] gjkepa2_impl::EPA::Evaluate(gjkepa2_impl::GJK&, btVector3 const&)
     4.71%  libGLES_CM.so.1.10.2359475  [.] 0x49c0
     4.36%  openmw                      [.] btGjkPairDetector::getClosestPointsNonVirtual(btDiscreteCollisionDetectorInterface::ClosestPointInput const&, btDiscreteCollisionDetectorInterface::Resul
     3.37%  openmw                      [.] gjkepa2_impl::EPA::newface(gjkepa2_impl::GJK::sSV*, gjkepa2_impl::GJK::sSV*, gjkepa2_impl::GJK::sSV*, bool)
     3.29%  openmw                      [.] btConvexShape::localGetSupportVertexNonVirtual(btVector3 const&) const
     3.23%  perf                        [.] rb_next
     3.17%  openmw                      [.] btConvexShape::localGetSupportVertexWithoutMarginNonVirtual(btVector3 const&) const
     2.31%  openmw                      [.] btVoronoiSimplexSolver::closest(btVector3&)
     2.30%  openmw                      [.] btVoronoiSimplexSolver::closestPtPointTriangle(btVector3 const&, btVector3 const&, btVector3 const&, btVector3 const&, btSubSimplexClosestResult&)
     2.27%  libc-2.9.so                 [.] memcpy
     2.24%  openmw                      [.] btVoronoiSimplexSolver::closestPtPointTetrahedron(btVector3 const&, btVector3 const&, btVector3 const&, btVector3 const&, btVector3 const&, btSubSimplexC
     1.59%  openmw                      [.] btContinuousConvexCollision::calcTimeOfImpact(btTransform const&, btTransform const&, btTransform const&, btTransform const&, btConvexCast::CastResult&)
     1.34%  openmw                      [.] btDbvtBroadphase::rayTest(btVector3 const&, btVector3 const&, btBroadphaseRayCallback&, btVector3 const&, btVector3 const&)
     1.12%  openmw                      [.] btVoronoiSimplexSolver::inSimplex(btVector3 const&)
     1.05%  libasound.so.2.0.0          [.] snd_pcm_lfloat_convert_float_integer
     0.95%  perf                        [.] map_groups__fixup_overlappings
     0.89%  [kernel]                    [k] __do_softirq
     0.85%  libavcodec.so.57.51.100     [.] ff_mpadsp_apply_window_fixed_armv6
     0.80%  libosg.so.3.5.0             [.] osg::CullStack::pushCullingSet()
     0.80%  libc-2.9.so                 [.] 0x663a8
     0.76%  openmw                      [.] btTriangleShape::localGetSupportingVertexWithoutMargin(btVector3 const&) const
     0.75%  openmw                      [.] SceneUtil::RigGeometry::update(osg::NodeVisitor*)
     0.72%  openmw                      [.] btQuantizedBvh::sortAndCalcSplittingIndex(int, int, int)
     0.72%  openmw                      [.] btQuantizedBvh::calcSplittingAxis(int, int)
     0.67%  libosg.so.3.5.0             [.] osg::Matrixf::mult(osg::Matrixf const&, osg::Matrixf const&)
     0.67%  openmw                      [.] btConvexInternalShape::getAabbSlow(btTransform const&, btVector3&, btVector3&) const
     0.53%  libosg.so.3.5.0             [.] osg::Group::computeBound() const
     0.53%  libstdc++.so.6.0.22         [.] std::_Rb_tree_increment(std::_Rb_tree_node_base const*)
     0.50%  openmw                      [.] SceneUtil::LightListCallback::operator()(osg::Node*, osg::NodeVisitor*)
Not sure what gjkepa2_impl::EPA::Evaluate do (I think it's a Bullet function, not a OpenMW one), but I guess I should try there to take a quick look, even if I don't think it can improve fps enough to be playable.

One thing I noticed (you can see on the screenshot) is that Water is not rendered correctly. Not sure if it's a glshim bug or an engine bug (shaders are disabled of course, but the engine is supposed to render water even without shader).

I think it will be a Pyra title, not a Pandora one...
 

Attachments

  • openmw04.png
    openmw04.png
    388.2 KB · Views: 251
  • openmw05.png
    openmw05.png
    536.4 KB · Views: 243
Last edited:
Hi all :)

@ptitSeb : could you please release your OpenMW port in your beta lair ?

There are a lot of parameters I'd like to play with :p

Settings: here, here and here.

Profiling: here

Also, the FAQ mentions Android and Raspberry Pi as potential targets, so I guess we could maybe reach playable speed on the Pandora, although GPU is known to be the limiting factor on these platforms.

Cheers, Magic Sam
 
@Magic Sam : Ok, I'll package it (I wasn't planning to, because of the poor fps, but ok, I can do it). There are some Wizard and all to prepare the data from Install CD. I used some ISO myself, using fuseiso to avoid extracting the data temproray (I can perhaps add the option to mount all the ISOs I detect in the appdata at launch, or at least ask question if I detect any iso?)

About Android support: I think current version use my glshim, but because of some bethesda legal matter, there is no apk available for it.
RPI version seems to try using the beta VC4 Mesa support, so it's an OpenGL 2.x build.

I still hav eto beta test a bit, I think there are other segfault, but I haden't much time to test.

Don't expect a build before mid/end of the Week, it's a bit tricky to do (many dependancies to sort out)...
 
@ptitSeb : I don't want to waste your time though. If you're 100% certain that even with the lowest possible settings OpenMW will not run "correctly" on the Pandora, then don't package it. Save it for later, it will no doubt be a killer application on the Pyra !

Btw, I don't own the game yet and was planning to buy it from GOG. Would GOG data be compatible with OpenMW ?

Cheers, Magic Sam
 
So, the crash is openmw is due to the Sun...

Sun glare are handled with glQuery, wich is not supported on glshim.
I'll try to hack-disabled that in openmw. If it turns out to be too complicated, I'll try to hack some dummy Query in glshim.
 
Found a way to activate some NEON code wrote by Apple in Bullet3. That give some boost, but not enough to be really playable.
Fixed the issue with the sun (well deactivate the glQuery calls), so you watch the sky without crash now.

I still have an issue with the starting, the windows is always minimized and the 1st animated logo isn't shown, and it seems to segfault at exit (probably trying to free the same tls variable that made it crash before).
So still not ready for package...
 

Attachments

  • openmw06.png
    openmw06.png
    457.2 KB · Views: 232
Hi all :)

@ptitSeb : thank you very much for your efforts regarding OpenMW !

These Apple NEON optimizations already surfaced in your Vdrift thread IIRC ;)

Cheers, Magic Sam
[doublepost=1476171627,1476170812][/doublepost]We're lucky ! Looks like some dependencies (FFmpeg, OpenAL-soft) OpenMW relies upon feature some kind of NEON optimizations :)

@ptitSeb : are you using vanilla OpenSceneGraph or the OpenMW fork ?

Cheers, Magic Sam
 
@Magic Sam : yes, but at these time, I didn't really succeed in enabling this code and end up using my own. Now, gcc inline asm is less black magic for me (still always a bit mysterious) and I succefully compiled. I have to check if my optim and apple's overlap or not and try maybe to mix them.

About FFmpeg, for now I have to disable NEON code as it create Bus Error. I already had that for Telegram, and I have the same here in OpenMW. I may have to check that. It's only anoying for the video, which are slow, but non-essential.

OpenAL is already NEON optimised in many place, I think this one is fine (and doesn't really show up in the "perf mon" sample).

Now, there is an OSG fork for OpenMW? Interesting, I'll check. Currently I'm using regular osg (latest version).
 
Yep, I have seen, I'll build that osg fork tonight.

But

build osg on the Pandora takes something like 20h... So I'll try some cross compile tonight, just in case (vanilla disn't work with osgffmpeg, but it seems it's disabled here, so maybe it will work).
 
Hi i have an old Port request.
Me-TV for viewing DVB-T/DVB-C/ATSC and others.
With Me-TV you can Timed Recording.
Have an EPG and other good Functions.

before 2 Years @ptitSeb hat tried it to port but failed because some too old Libs.

The very old Version worked with CC and Rebirth Pandoras too.
I would be very glad when someone give it a Try or try is again to Port for the Pandora :)
https://launchpad.net/me-tv
 
Last edited:
Back
Top